Le variabili di ambiente create per un account unix possono essere visualizzate da un altro account?

0

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?

    
posta Bon Ami 04.11.2016 - 23:09
fonte

2 risposte

2

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.

    
risposta data 04.11.2016 - 23:14
fonte
0

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 .

    
risposta data 05.11.2016 - 08:24
fonte

Leggi altre domande sui tag