Estoy escribiendo un bashscript y necesito pedirle al usuario su contraseña y pasarla openssl. Si bien opensslpuedo leer la contraseña en sí, necesito dos ejecuciones del programa y no quiero preguntarle dos veces al usuario. Aquí está el guión:
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
Esto no es seguro ya que la contraseña está fácilmente disponible mirando la línea de comando; alguien puede leerlo usando ps, por ejemplo.
opensslpuede leer una contraseña de una variable de entorno, por lo que puede sustituir -k "$PASS"con -pass env:PASS, pero todavía no es seguro; Las variables de entorno de cualquier proceso pueden leerse libremente (de nuevo, pspueden hacerlo).
Entonces, ¿cómo puedo pasar con seguridad la contraseña a las dos opensslinstancias?
pslee el entorno de un proceso /proc/<pid>/environ, pero este archivo tiene 0600permisos, por lo que solo el usuario root y el usuario que ejecuta el proceso pueden leer el entorno del proceso. Yo diría que es bastante seguro.