Se eseguo un programma che accetta configurazioni da variabili di ambiente in utente non privilegiato userA
; un utente con accesso root può leggere tali variabili di ambiente?
Di solito la radice utente non ha problemi a vedere tali variabili. Almeno un modo per farlo è semplicemente utilizzando il 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 ...
Di solito, la visibilità su un altro account non privilegiato non viene fornita.
Sì, root può vedere tali variabili d'ambiente ma il modo di visualizzarle varia a seconda del sistema operativo.
Sotto Linux, oltre al comando ps axe
già suggerito, puoi usare:
$ 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=/
Su Solaris, se sono installate le utilità UCB, /usr/ucb/ps axe
funzionerà, altrimenti è disponibile un comando dedicato per visualizzare le variabili di ambiente:
# 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 fornisce un'opzione specifica ps
per visualizzare gli ambienti di processo:
# ps ewww
In HPUX, è necessario collegare un debugger al processo e visualizzare il contenuto della matrice _environ
, ad esempio:
# gdb <pid>
p ((char**)_environ)[0]@10
Questo mostrerà le prime dieci variabili d'ambiente.
L'opzione ps e
proviene da BSD quindi dovrebbe essere disponibile su tutte le varianti * BSD ma su OS X, dovresti usare ps -axe
.
Leggi altre domande sui tag unix environment-variables