Moyen de ne pas afficher les arguments d'un process

Le
Kevin Denis
Bonjour,

je dois utiliser temporairement un soft sous linux.
Ce soft prend toutes ses options en ligne de commande. La conséquence, c'est
que toute personne qui fait un ps axww peut lire l'ensemble des options
utilisées.

Exemple: $ ./mon_soft -X -login=toto -password=secret -options
Depuis un autre accès: ps axww et à moi le password!

Ca m'ennuie un peu de voir trainer ce genre de choses dans un ps ax.
Existe t'il un moyen simple (avant que je ne change de soft) de lancer
un programme sous linux avec des options sans qu'on les affiche avec un
ps ax? J'ai naïvement tenté de faire un alias ou un wrapper C contenant
un appel system("mon_soft"), mais ça ne fonctionne pas.

Une idée?
Merci
--
Kevin
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #25378542
Kevin Denis , dans le message
Existe t'il un moyen simple (avant que je ne change de soft) de lancer
un programme sous linux avec des options sans qu'on les affiche avec un
ps ax?



Non. Le programme lui-même peut changer cet affichage, mais à moins de le
ptracer pour le forcer à faire ça, il n'y a pas moyen de le faire de
l'extérieur.

Si ce soft ne prévoit pas de moyen pour recevoir le mot de passe par une
variable d'environnement (les Unix décent ne permettent pas de lire
l'environnement des processus appartenant à autrui) ou un file descriptor,
il est bon à jeter.
xtof
Le #25379102
Le 02 May 2013 13:10:42 GMT,
Kevin Denis
Bonjour,

je dois utiliser temporairement un soft sous linux.
Ce soft prend toutes ses options en ligne de commande. La
conséquence, c'est que toute personne qui fait un ps axww peut lire
l'ensemble des options utilisées.

(...)



Pour masquer les paramètres d'une commande, sous Linux, on peut
utiliser ce vieux truc:


#include
main(argc, argv) char **argv;
{
int i;
char *p;

for (i = 1; i < argc; i++) {
p = argv[i];
while (*p)
*p++ = 'X';
}

getchar();
}


Verifie que les paramètres ont disparu du fichier /proc/(PID)/cmdline,
qu'utilise ps(1)..

--
christophe.
xtof pernod
Le #25379092
Le 02 May 2013 13:10:42 GMT,
Kevin Denis
(...)

Exemple: $ ./mon_soft -X -login=toto -password=secret -options



Arf, cette ligne ("./mon_soft") m'a fait pensé que tu as la main
sur les sources,, mais c'est peut-être pas le cas. Désolé..


--
christophe.
Nicolas George
Le #25379122
xtof , dans le message
utiliser ce vieux truc:



Vieux, tu peux le dire. Complètement périmé, même.

#include
main(argc, argv)



Déclaration de type de retour manquante.

char **argv;



Déclaration de type pré-ANSI. Ça fait un quart de siècle que c'est obsolète.

{
int i;
char *p;

for (i = 1; i < argc; i++) {
p = argv[i];
while (*p)
*p++ = 'X';
}

getchar();
}



return manquant.

Verifie que les paramètres ont disparu du fichier /proc/(PID)/cmdline,
qu'utilise ps(1)..



Ça lui fera une belle jambe, que les paramètres aient disparu d'un programme
qui ne fait rien.
Bruno Ducrot
Le #25380222
On 2013-05-02, Kevin Denis wrote:
Bonjour,

je dois utiliser temporairement un soft sous linux.
Ce soft prend toutes ses options en ligne de commande. La conséquence, c'est
que toute personne qui fait un ps axww peut lire l'ensemble des options
utilisées.

Exemple: $ ./mon_soft -X -login=toto -password=secret -options
Depuis un autre accès: ps axww et à moi le password!

Ca m'ennuie un peu de voir trainer ce genre de choses dans un ps ax.
Existe t'il un moyen simple (avant que je ne change de soft) de lancer
un programme sous linux avec des options sans qu'on les affiche avec un
ps ax? J'ai naïvement tenté de faire un alias ou un wrapper C contenant
un appel system("mon_soft"), mais ça ne fonctionne pas.




Je ne sais répondre à ta question. Par contre, tu peux utiliser
l'option 'hidepid' lors du montage de ton /proc, ce qui permet
de cacher les process dont l'uid n'est pas celui de l'appelant.

Pour tester :

mount -o remount,hidepid=1 proc /proc
ps axuww (en tant qu'utilisateur normal)
ls /proc

(on voit malgré tout l'arboresecence de tous les process).

mount -o remount,hidepid=2 proc /proc
ps axuww (en tant qu'utilisateur normal)
ls /proc
(les répertoires ne sont plus visibles, par exemple ls /proc/1
renvoie une erreur).

Enfin
mount -o remount,hidepid=0 proc /proc
pour revenir au mode normal.



Il t'appartiendra alors de modifier /etc/fstab en conséquence, par exemple
avec :
proc /proc procfs hidepid=2,gidP0 0 0

Note final, l'option gidP0 permet à un process, dont l'egid est 500, de
pouvoir malgré tout accéder à l'ensemble des process, ce qui peut
s'avérer utile pour certains process dont le rôle est de monitorer
le système.

A plus,

--
Bruno Ducrot

A quoi ca sert que Ducrot hisse des carcasses ?
JKB
Le #25380252
Le Thu, 2 May 2013 20:23:43 +0200,
xtof
Le 02 May 2013 13:10:42 GMT,
Kevin Denis
Bonjour,

je dois utiliser temporairement un soft sous linux.
Ce soft prend toutes ses options en ligne de commande. La
conséquence, c'est que toute personne qui fait un ps axww peut lire
l'ensemble des options utilisées.

(...)



Pour masquer les paramètres d'une commande, sous Linux, on peut
utiliser ce vieux truc:


#include
main(argc, argv) char **argv;
{
int i;
char *p;

for (i = 1; i < argc; i++) {
p = argv[i];
while (*p)
*p++ = 'X';
}

getchar();
}


Verifie que les paramètres ont disparu du fichier /proc/(PID)/cmdline,
qu'utilise ps(1)..



Personnellement, je n'ai jamais essayé, mais j'utiliserais plutôt un
NULL. J'ai pour idée que ./prog "" pourrait joyeusement
segfaulter...

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
xtof pernod
Le #25380512
Le 02 May 2013 18:46:12 GMT,
Nicolas George
xtof , dans le message > (...)



Merci pour les warnings, justement j'en manque..


Ça lui fera une belle jambe, que les paramètres aient disparu d 'un
programme qui ne fait rien.



Il ne fait pas rien. Il masque les paramètres qu'il a reçu.
A ajouter éventuellement à un programme dont on a le source..

--
christophe.
xtof pernod
Le #25380502
Le Fri, 3 May 2013 09:19:29 +0000 (UTC),
JKB
Le Thu, 2 May 2013 20:23:43 +0200,
xtof > Le 02 May 2013 13:10:42 GMT,
> Kevin Denis >
>> (...)
J'ai pour idée que ./prog "" pourrait joyeusement
segfaulter...

JKB




Nope, ça passe. La boucle est "while (*p)", et s'arrête donc au 1 er
octet nul..


--
christophe.
Nicolas George
Le #25380492
xtof pernod , dans le message écrit :
Il ne fait pas rien. Il masque les paramètres qu'il a reçu.



Et c'est tout. Il n'en fait strictement rien.
JKB
Le #25380542
Le Fri, 3 May 2013 13:21:52 +0200,
xtof pernod
Le Fri, 3 May 2013 09:19:29 +0000 (UTC),
JKB
Le Thu, 2 May 2013 20:23:43 +0200,
xtof > Le 02 May 2013 13:10:42 GMT,
> Kevin Denis >
>> (...)
J'ai pour idée que ./prog "" pourrait joyeusement
segfaulter...

JKB




Nope, ça passe. La boucle est "while (*p)", et s'arrête donc au 1er
octet nul..



J'ai lu le truc en diagonale (et tu l'as effacé de ma réponse). De
mémoire, à un moment, tu colles 'X' dans l'argument courant. Si
l'argument courant était "", il risque de se passer des choses parce
que tu remplaces un caractère de fin de chaîne par un autre
caractère non nul (où se trouve alors la fin de la chaîne ?). Par
ailleurs, je ne suis pas sûr que cette mémoire soit accessible en
écriture de façon portable (si tu fais ça sur un VMS des familles, tu
te prends un coup de pied aux fesses bien mérité).

Enfin, c'était le pinaillage de trolldi.

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Publicité
Poster une réponse
Anonyme