Ich schreibe ein bashSkript und muss den Benutzer nach seinem Passwort fragen und es an weitergeben openssl. Während opensslich das Passwort selbst lesen kann, benötige ich für zwei Programmläufe und möchte den Benutzer nicht zweimal fragen. Hier ist das Skript:
cp file{,.old}
read -sp 'Enter password. ' PASS; echo
export PASS
# decode | edit | encode
openssl enc -d -aes-256-cbc -k "$PASS" -in file.old | \
sed ... | openssl enc -e -aes-256-cbc -k "$PASS" -out file
unset PASS
Dies ist nicht sicher, da das Kennwort in der Befehlszeile leicht verfügbar ist. jemand kann es pszum Beispiel lesen .
openssllesen kann ein Passwort aus einer Umgebungsvariablen, so dass ich ersetzen kann -k "$PASS"mit -pass env:PASS, aber es ist noch nicht sicher; Die Umgebungsvariablen jedes Prozesses können frei gelesen werden ( pskönnen es wieder tun).
Wie kann ich das Kennwort sicher an die beiden opensslInstanzen übergeben?
psLiest die Umgebung eines Prozesses aus /proc/<pid>/environ, diese Datei verfügt jedoch über 0600Berechtigungen, sodass nur Root und der Benutzer, der den Prozess ausführt, die Umgebung des Prozesses lesen können. Ich würde sagen, das ist ziemlich sicher.