Les autres utilisateurs peuvent-ils afficher les arguments passés à une commande?


21

Si j'appelle une commande avec des arguments comme ceci:

bob@bob-pc:~$ command -arg1 -arg2

... d'autres utilisateurs peuvent-ils visualiser les arguments passés à la commande?


Une simple réponse "oui" "non" à cette question contredirait le contenu et le titre: P
kizzx2

@ kizzx2: corrigé.
bahamat

Réponses:


13

En général oui, ils peuvent le voir. C'est de la wpage de manuel:

Les entrées suivantes sont affichées pour chaque utilisateur: nom de connexion, nom tty, hôte distant, heure de connexion, heure d'inactivité, JCPU, PCPU et la ligne de commande de leur processus actuel.

La ligne de commande complète de votre processus en cours d'exécution sera affichée. C'est pourquoi vous ne voulez pas fournir des choses comme des mots de passe via des arguments de ligne de commande.


Il n'y a aucun moyen de désactiver cela?
Nathan Osman,

3
@George Il y en a, parce que rdesktop le fait en quelque sorte (l'argument du mot de passe se transforme en XXXXXXXX); J'adorerais savoir comment. Il pourrait faire quelque chose de boiteux comme se bifurquer et passer un faux argument; Je ne suis pas sûr
Michael Mrozek

13
Sous Linux, un processus peut remplacer le tableau d'arguments qui lui est transmis. Ceci est reflété dans l'arborescence des processus visible par les autres utilisateurs. Cependant, il y a toujours un moment où ils sont exposés et peuvent être vulnérables aux conditions de course et aux attaques de synchronisation.
mattdm

15

En général, les arguments de ligne de commande sont visibles par tous. Par exemple, en tant qu'utilisateur non root sur OpenBSD, je peux voir les arguments des processus s'exécutant en tant que root:

$ ps -U root -o command= |grep getty |head -n 1
/usr/libexec/getty std.9600 ttyC0

Sous Linux, vous remarquerez que tous les /proc/*/cmdlinefichiers sont lisibles par tous.

Il peut exister des paramètres très spécifiques dans lesquels les arguments de ligne de commande restent privés. Par exemple, SELinux et Solaris peuvent complètement masquer les processus des autres utilisateurs . Mais à moins que vous ne sachiez absolument que vous êtes dans un tel paramètre, supposez que les arguments de ligne de commande sont publics.


8

Sur les configurations standard, les arguments sont visibles. Comme déjà mentionné , les processus peuvent les écraser en mémoire, mais pas avant que d'autres processus aient eu la chance de les voir.

Cependant, le jeu de correctifs grsecurity inclut un correctif qui le modifie afin que seul le propriétaire du processus (et la racine) puisse voir les arguments transmis à un processus.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.