¿Pueden otros usuarios ver los argumentos pasados ​​a un comando?

21

Si invoco un comando con argumentos como este:

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

... ¿pueden otros usuarios ver los argumentos pasados ​​al comando?

Nathan Osman
fuente
Una respuesta simple "sí" y "no" a esta pregunta contradeciría el contenido y el título: P
kizzx2
@ kizzx2: corregido.
bahamat

Respuestas:

13

En general sí, pueden verlo. Esto es de la wpágina del manual:

Se muestran las siguientes entradas para cada usuario: nombre de inicio de sesión, nombre de tty, host remoto, tiempo de inicio de sesión, tiempo de inactividad, JCPU, PCPU y la línea de comando de su proceso actual.

Se mostrará la línea de comando completa de su proceso actualmente en ejecución. Es por eso que no desea proporcionar cosas como contraseñas a través de argumentos de línea de comandos.

Jan Hlavacek
fuente
¿No hay forma de desactivar eso?
Nathan Osman
3
@ George Hay, porque rdesktop lo hace de alguna manera (el argumento de la contraseña se convierte en XXXXXXXX); Me encantaría saber cómo. Podría hacer algo cojo como simplemente bifurcarse y pasar un argumento falso; No estoy seguro
Michael Mrozek
13
En Linux, un proceso puede sobrescribir la matriz de argumentos que se le pasa. Esto se refleja en el árbol de procesos visible por otros usuarios. Sin embargo, siempre hay un momento en que están expuestos, y pueden ser vulnerables a las condiciones de carrera y a los ataques de tiempo.
mattdm
15

En general, los argumentos de la línea de comandos son visibles para todos. Por ejemplo, como usuario no root en OpenBSD, puedo ver argumentos de procesos que se ejecutan como root:

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

En Linux, notará que todos los /proc/*/cmdlinearchivos son legibles en todo el mundo.

Puede haber configuraciones muy específicas en las que los argumentos de la línea de comandos permanecen privados. Por ejemplo, SELinux y Solaris pueden ocultar procesos de otros usuarios . Pero a menos que sepa absolutamente que está en ese entorno, suponga que los argumentos de la línea de comandos son públicos.

Gilles 'SO- deja de ser malvado'
fuente
8

En configuraciones estándar, los argumentos son visibles. Como ya se mencionó , los procesos pueden sobrescribirlos en la memoria, pero no antes de que otros procesos hayan tenido la oportunidad de verlos.

Sin embargo, el parche de grsecurity incluye un parche que lo cambia para que solo el propietario del proceso (y la raíz) pueda ver los argumentos pasados ​​a un proceso.

Maciej Piechotka
fuente