Como o “sendmail: MTA: aceitando conexões” é uma linha de comando correta?

2

cat /proc/21637/cmdline says sendmail: MTA: accepting connections que não consigo imaginar como uma linha de comando correta. Como não tenho sendmail instalado nem o encontro em PATH e nem mesmo algo que pareça conveniente na saída de locate sendmail me deixa preocupado (vou fazer uma pergunta separada se você me disser que o cmdline indica um problema).

Estou usando o Ubuntu 16.10 com o Linux 4.8.0-32-genérico.

    
por Karl Richter 06.01.2017 / 15:49

1 resposta

3

Os aplicativos podem (e) reescrever seus argumentos de linha de comando após terem sido iniciados. Às vezes isso é feito por motivos de segurança, às vezes para facilitar a apresentação. IIRC, mysql ou algum outro comando DB removeria senhas dadas como argumentos da lista de argumentos.

Não tenho certeza do método normalmente usado para isso, mas uma maneira é reexecutar com novos argumentos:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc, char *args[], char *env[])
{
    char *argv[] = {"bar: accepting", "blah", NULL};
    if (argc == 1)
    {
        int fd = open("/proc/self/exe", O_RDONLY);
        fexecve(fd, argv, env);
    }
    else
        sleep(100);
}

Teste:

$ make foo
cc     foo.c   -o foo
$ ./foo & pgrep -fa bar
[1] 18047
18047 bar: accepting blah

Observe os PIDs.

Para ver o atual executável sendo usado, verifique /proc/<PID>/exe :

$ ./foo & ls -l /proc/$!/exe
[1] 18025
3
lrwxrwxrwx 1 muru muru 0 Jan  7 00:59 /proc/18025/exe -> /home/muru/foo
    
por muru 06.01.2017 / 16:48