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?
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.
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
.
Lea otras preguntas en las etiquetas unix environment-variables