Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Moyen de ne pas afficher les arguments d'un process

24 réponses
Avatar
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

10 réponses

1 2 3
Avatar
Bruno Ducrot
On 2013-05-02, Nicolas George wrote:
main(argc, argv)
}



return manquant.




A noter que C99 et C11 ne requiert plus de return pour la fonction
main, contrairement à C89. Voir à ce sujet 5.1.2.2.3.

Mais bon, vu la gueule de la fonction au départ, je crains que
cette remarque ne tombe complètement à plat.

--
Bruno Ducrot

A quoi ca sert que Ducrot hisse des carcasses ?
Avatar
Nicolas George
JKB , dans le message , a
écrit :
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 ?).



Maintenant on le sait, JKB ne connaît pas le C.
Avatar
Bruno Ducrot
On 2013-05-03, JKB wrote:
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 ?).



Le code en question est :
while(*p)
*p++ = 'X';

ce qui montre que tu as lu trop vite.

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




Si cela est vrai, alors cela signifie clairement que OpenVMS n'a pas de
compilateur C respectant au moins C89, ni les standards plus récents.

Voir 5.1.2.2.1 du standard actuel, que je cite en partie :

The parameters argc and argv and the strings pointed to by the argv
array shall be modifiable by the program, and retain their last-stored
values between program startup and program termination.

A plus,

--
Bruno Ducrot

A quoi ca sert que Ducrot hisse des carcasses ?
Avatar
Kevin Denis
Le 02-05-2013, xtof pernod a écrit :
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é..



En fait, c'est beaucoup plus simple que je ne pensais. C'est un
vieux _script_ (en perl). Donc c'est bon, c'est modifié.
--
Kevin
Avatar
JKB
Le Fri, 3 May 2013 13:07:56 +0000 (UTC),
Bruno Ducrot écrivait :
On 2013-05-03, JKB wrote:
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 ?).



Le code en question est :
while(*p)
*p++ = 'X';

ce qui montre que tu as lu trop vite.



Je ne sais plus sur quoi pointe p (argv ou *argv ?).

De toute façon, c'est presque du détail. Il faut que cette mémoire
soit accessible en écriture. Ce n'est pas parce que c'est spéficié
dans les derniers standards que c'est le cas partout. Je connais au
moins deux compilos qui vont refuser ça et mon expérience me dit que
c'est le genre d'hypothèses dangereuses (déjà que le comportement
d'argc/argv et arge dépend un peu du système...).

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
Avatar
Nicolas George
JKB , dans le message , a
écrit :
Ce n'est pas parce que c'est spéficié
dans les derniers standards que c'est le cas partout.



Pour toi, C89 c'est le dernier standard ? Ça explique bien des choses.
Avatar
Bruno Ducrot
On 2013-05-03, JKB wrote:
Le Fri, 3 May 2013 13:07:56 +0000 (UTC),
Bruno Ducrot écrivait :
On 2013-05-03, JKB wrote:
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 ?).



Le code en question est :
while(*p)
*p++ = 'X';

ce qui montre que tu as lu trop vite.



Je ne sais plus sur quoi pointe p (argv ou *argv ?).



Si je me souviens bien, ce devait être quelque chose :

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


De toute façon, c'est presque du détail. Il faut que cette mémoire
soit accessible en écriture. Ce n'est pas parce que c'est spéficié
dans les derniers standards que c'est le cas partout.



Ca date de C89. On ne peut pas vraiment dire que c'est le dernier, hein.

Je connais au
moins deux compilos qui vont refuser ça et mon expérience me dit que
c'est le genre d'hypothèses dangereuses (déjà que le comportement
d'argc/argv et arge dépend un peu du système...).



Ce sont des hypothèses correctes pour Linux, qui est d'ailleurs
l'objet de ce groupe.

A plus,

--
Bruno Ducrot

A quoi ca sert que Ducrot hisse des carcasses ?
Avatar
xtof pernod
Le Fri, 3 May 2013 11:41:46 +0000 (UTC),
JKB a écrit :

Le Fri, 3 May 2013 13:21:52 +0200,
xtof pernod écrivait :
> Le Fri, 3 May 2013 09:19:29 +0000 (UTC),
> JKB a écrit :
>
>> Le Thu, 2 May 2013 20:23:43 +0200,
>> xtof écrivait :
>> > Le 02 May 2013 13:10:42 GMT,
>> > Kevin Denis a écrit :
>> >
>> >> (...)
>> 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'ar gument
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



Non, la boucle "while (*p)" s'arrête avant, et ne remplace pas le
caractère '' ..

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 accessi ble en
écriture de façon portable (si tu fais ça sur un VMS des



J'ai vérifié, il y a bien "linux" dans "fr.comp.os.linux.configur ation"
:)

familles, tu te prends un coup de pied aux fesses bien mérité).

Enfin, c'était le pinaillage de trolldi.

JKB




"all-the-world"s-a-VAX syndrome ?


--
christophe.
Avatar
xtof pernod
Le 03 May 2013 11:29:32 GMT,
Nicolas George <nicolas$ a écrit :
xtof pernod , dans le message , a
é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.



Bravo pour ta perspicacité, tu viens de distinguer une bidouille
de 3 lignes, à adapter le cas échéant, d'un vrai programme.

Bidouille inutile, d'ailleurs:

Le 03 May 2013 13:42:19 GMT,
Kevin Denis a écrit :
En fait, c'est beaucoup plus simple que je ne pensais. C'est un
vieux _script_ (en perl). Donc c'est bon, c'est modifié.



--
christophe.
Avatar
JKB
Le Sat, 4 May 2013 13:02:24 +0200,
xtof pernod écrivait :
Le Fri, 3 May 2013 11:41:46 +0000 (UTC),
JKB a écrit :

Le Fri, 3 May 2013 13:21:52 +0200,
xtof pernod écrivait :
> Le Fri, 3 May 2013 09:19:29 +0000 (UTC),
> JKB a écrit :
>
>> Le Thu, 2 May 2013 20:23:43 +0200,
>> xtof écrivait :
>> > Le 02 May 2013 13:10:42 GMT,
>> > Kevin Denis a écrit :
>> >
>> >> (...)
>> 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



Non, la boucle "while (*p)" s'arrête avant, et ne remplace pas le
caractère '' ..



J'ai admis que j'avais répondu de mémoire.

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



J'ai vérifié, il y a bien "linux" dans "fr.comp.os.linux.configuration"
:)



Ma remarque était juste le fait que ce n'est pas portable.
personnellement, je ne connais aucun compilo qui suive tous les
standards et je ne m'y fie pas. Mais chacun ses choix.

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
1 2 3