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.
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