Comme Gilles l'a expliqué dans une réponse très complète à une question similaire sur security.stackexchange.com, les environnements de processus ne sont accessibles qu'à l'utilisateur propriétaire du processus (et root bien sûr).
Les variables d'environnement sont largement sécurisées. Ce que dit la question à laquelle vous êtes lié, c'est que si le système est compromis, le seul avantage de sécurité de l'utilisation de variables d'environnement sur un fichier de configuration est l'obscurité. Cela signifie que si quelqu'un a obtenu un accès root, il peut accéder aux deux.
La question de savoir si l'utilisation de variables d'environnement pour des données secrètes est considérée comme "obscure" est également discutable. C'est une pratique très courante, et donc je ne la considérerais pas comme telle.
Vous ne pouvez accéder aux données stockées dans une variable d'environnement qu'à 2 endroits :
1. L'environnement d'exécution du processus
Lorsque le processus est en cours d'exécution, les variables d'environnement de ce processus sont accessibles via /proc/$PID/environ
. Cependant, seul l'utilisateur propriétaire du processus, ou racine, peut accéder à ce fichier.
2. La source des variables d'environnement
Si vous utilisez un script d'initialisation et que les variables sont stockées dans ce script d'initialisation, les variables peuvent bien sûr être obtenues en lisant ce script.
Ou si les variables d'environnement viennent d'ailleurs, alors où que ce soit.
3. sortie 'ps'
Oui, je sais que j'ai dit 2, et dans tout système décent, ce sera 2. Cependant, si l'administrateur ne sait pas ce qu'il fait, il est possible d'ouvrir une 3e voie.
Si le processus est lancé via quelque chose comme sh -c 'cd /foo/bar; POP=tart /my/executable'
, alors ce sh
le processus sera visible dans 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