web-dev-qa-db-fra.com

En quoi "sendmail: MTA: accepting connections" est-il une ligne de commande correcte?

cat /proc/21637/cmdline dit sendmail: MTA: accepting connections que je ne peux imaginer être une ligne de commande correcte. Puisque je n’ai pas installé sendmail, je ne le trouve pas non plus dans PATH et même quelque chose qui me semble commode dans la sortie de locate sendmail cela me fait peur (je demanderai une autre question si vous me dites que la cmdline indique un problème).

J'utilise Ubuntu 16.10 avec Linux 4.8.0-32-generic.

2
Karl Richter

Les applications peuvent (et font) réécrire leurs arguments en ligne de commande after elles ont commencé. Parfois, cela est fait à des fins de sécurité, parfois pour faciliter la présentation. IIRC, mysql ou une autre commande de base de données supprime les mots de passe donnés comme arguments de la liste des arguments.

Je ne suis pas sûr de la méthode habituellement utilisée pour cela, mais l'une des méthodes consiste à réexécuter avec de nouveaux arguments:

#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);
}

Essai:

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

Notez les PID.

Pour voir le fichier exécutable utilisé, vérifiez /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
3
muru