Ich schreibe ein bash
Skript und muss den Benutzer nach seinem Passwort fragen und es an weitergeben openssl
. Während openssl
ich 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 ps
zum Beispiel lesen .
openssl
lesen 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 ( ps
können es wieder tun).
Wie kann ich das Kennwort sicher an die beiden openssl
Instanzen übergeben?
ps
Liest die Umgebung eines Prozesses aus /proc/<pid>/environ
, diese Datei verfügt jedoch über 0600
Berechtigungen, 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.