Come ha spiegato Gilles in una risposta molto esauriente a una domanda simile su security.stackexchange.com, gli ambienti di processo sono accessibili solo all'utente che possiede il processo (e root ovviamente).
Le variabili d'ambiente sono molto sicure. Ciò che la domanda a cui ti sei collegato è che se il sistema è compromesso, l'unico vantaggio per la sicurezza dell'utilizzo delle variabili di ambiente su un file di configurazione è l'oscurità. Ciò significa che se qualcuno ha ottenuto l'accesso root, può accedere a entrambi.
È anche discutibile se l'utilizzo di variabili d'ambiente per i dati segreti sia considerato "oscuro". Questa è una pratica molto comune, e quindi non la considererei tale.
Puoi accedere ai dati memorizzati in una variabile di ambiente solo in 2 posizioni:
1. L'ambiente in esecuzione del processo
Quando il processo è in esecuzione, è possibile accedere alle variabili di ambiente di tale processo tramite /proc/$PID/environ
. Tuttavia, solo l'utente che possiede il processo, o root, può accedere a quel file.
2. L'origine delle variabili d'ambiente
Se stai usando uno script init e le variabili sono memorizzate in quello script init, le variabili possono ovviamente essere ottenute leggendo quello script.
O se le variabili d'ambiente provengono da qualche altra parte, allora dovunque sia.
3. Uscita 'ps'
Sì, so di aver detto 2, e in qualsiasi sistema decente sarà 2. Tuttavia, se l'amministratore non sa cosa sta facendo, è possibile aprire una terza strada.
Se il processo viene avviato tramite qualcosa come sh -c 'cd /foo/bar; POP=tart /my/executable'
, quindi quel sh
il processo sarà visibile in ps
:
$ sh -c 'cd /; POP=tart sleep 10' &
[1] 3085
$ ps ax | grep POP
phemmer 3085 14 5 0.0 0.0 SN 00:00 sh -c cd /; POP=tart sleep 10