¿Se pueden ver las variables de entorno creadas para una cuenta Unix con otra cuenta?

0

Si ejecuto un programa que acepta configuraciones de variables de entorno bajo el usuario no privilegiado userA ; ¿Puede un usuario con acceso de root leer las variables del entorno?

    
pregunta Bon Ami 04.11.2016 - 23:09
fuente

2 respuestas

2

Por lo general, la raíz del usuario no tiene problemas para ver tales variables. Al menos una forma de hacerlo es simplemente usando el comando ps :

# as non-privileged user
user@system$ foo=bar sleep 500

# as root
root@system# ps axe
... 0:00 sleep 500 foo=bar TERM=xterm ...

Por lo general, no se otorga visibilidad a otra cuenta sin privilegios.

    
respondido por el Steffen Ullrich 04.11.2016 - 23:14
fuente
0

Sí, la raíz puede ver dichas variables de entorno, pero la forma de mostrarlas varía según el sistema operativo.

Bajo Linux, además, el comando ps axe ya sugerido, puede usar:

$ pgrep apache | head -1
2510
$ sudo strings -a /proc/2510/environ
APACHE_RUN_DIR=/var/run/apache2
APACHE_PID_FILE=/var/run/apache2/apache2.pid
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
APACHE_LOCK_DIR=/var/lock/apache2
LANG=C
APACHE_RUN_USER=www-data
APACHE_RUN_GROUP=www-data
APACHE_LOG_DIR=/var/log/apache2
PWD=/

En Solaris, si las utilidades UCB están instaladas, /usr/ucb/ps axe funcionará, de lo contrario, hay un comando dedicado para mostrar las variables de entorno:

# pargs -e 613
613:    /usr/sbin/syslogd
envp[0]: LC_COLLATE=fr_FR.UTF-8
envp[1]: LC_CTYPE=fr_FR.UTF-8
envp[2]: LC_MESSAGES=fr.UTF-8
envp[3]: LC_MONETARY=fr_FR.UTF-8
envp[4]: LC_NUMERIC=fr_FR.UTF-8
envp[5]: LC_TIME=fr_FR.UTF-8
envp[6]: PATH=/usr/sbin:/usr/bin
envp[7]: SMF_FMRI=svc:/system/system-log:default
envp[8]: SMF_METHOD=/lib/svc/method/system-log
envp[9]: SMF_RESTARTER=svc:/system/svc/restarter:default
envp[10]: TZ=Europe/Paris

AIX proporciona una opción específica ps para mostrar los entornos de proceso:

# ps ewww

Bajo HPUX, debe adjuntar un depurador al proceso y mostrar el contenido de la matriz _environ , por ejemplo:

# gdb <pid>
p ((char**)_environ)[0]@10

Esto mostrará las primeras diez variables de entorno.

La opción

ps e se origina en BSD, por lo que debería estar disponible en todas las variantes * BSD, pero en OS X, debe usar ps -axe .

    
respondido por el jlliagre 05.11.2016 - 08:24
fuente

Lea otras preguntas en las etiquetas