Wie Gilles in einer sehr umfassenden Antwort auf eine ähnliche Frage auf security.stackexchange.com erklärte, sind Prozessumgebungen nur für den Benutzer zugänglich, der den Prozess besitzt (und natürlich root).
Umgebungsvariablen sind ausreichend sicher. Die von Ihnen verlinkte Frage besagt, dass der einzige Sicherheitsvorteil der Verwendung von Umgebungsvariablen gegenüber einer Konfigurationsdatei die Unklarheit ist, wenn das System kompromittiert ist. Das heißt, wenn jemand Root-Zugriff erlangt hat, kann er auf beide zugreifen.
Ob die Verwendung von Umgebungsvariablen für geheime Daten als „obskur“ gilt, ist ebenfalls umstritten. Dies ist eine sehr verbreitete Praxis, und daher würde ich es nicht als solche betrachten.
Sie können nur an zwei Stellen auf die in einer Umgebungsvariablen gespeicherten Daten zugreifen:
1. Die laufende Umgebung des Prozesses
Wenn der Prozess läuft, kann über /proc/$PID/environ
auf die Umgebungsvariablen dieses Prozesses zugegriffen werden . Allerdings kann nur der Benutzer, dem der Prozess gehört, oder root, auf diese Datei zugreifen.
2. Die Quelle der Umgebungsvariablen
Wenn Sie ein Init-Skript verwenden und die Variablen in diesem Init-Skript gespeichert sind, können die Variablen natürlich durch Lesen dieses Skripts abgerufen werden.
Oder wenn die Umgebungsvariablen woanders herkommen, dann wo auch immer das ist.
3. 'ps'-Ausgabe
Ja, ich weiß, ich habe 2 gesagt, und in jedem anständigen System wird es 2 sein. Wenn der Administrator jedoch nicht weiß, was er tut, ist es möglich, einen 3. Weg zu öffnen.
Wenn der Prozess über so etwas wie sh -c 'cd /foo/bar; POP=tart /my/executable'
gestartet wird , dann das sh
Prozess wird in ps
sichtbar sein :
$ 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