Me gustaría iniciar un servicio utilizando un archivo de unidad systemd. Este servicio requiere una contraseña para comenzar. No quiero almacenar la contraseña en texto sin formato en el archivo de la unidad systemd, porque es legible en todo el mundo. Tampoco quiero proporcionar esta contraseña de forma interactiva.
Si escribiera un script normal para esto, almacenaría las credenciales en un archivo propiedad de root con permisos restringidos (400 o 600), y luego leería el archivo como parte del script. ¿Hay alguna forma particular de hacer esto, o debería seguir el mismo proceso que seguiría en un script de shell normal?
shell-script
permissions
systemd
password
SauceCode
fuente
fuente

Respuestas:
Aquí hay dos enfoques posibles, según sus requisitos. Si no desea que se le solicite la contraseña cuando se activa el servicio, use la
EnvironmentFiledirectiva. Deman systemd.exec:Si no desea que se le pregunte, se utilizaría una de las
systemd-ask-passworddirectivas. Deman systemd-ask-password:fuente
ps ajxewww) para que alguien pueda recógelo desde allí.EnvironmentFileLa entrada con una ruta absoluta a un archivo con 400 permisos funciona bien.Puedo ofrecer una alternativa adicional que se adapte a sus necesidades, pero requiere varias condiciones previas que se deben cumplir:
Los siguientes pasos son los siguientes:
Use
secret-tooldesdelibsecretpara almacenar su contraseña. Por ejemplo:Si su ejecutable admite la lectura de la contraseña de una variable ambiental, es mejor:
Si su ejecutable acepta la contraseña como argumento, aún puede usarla
secret-toolasí:Precaución : la contraseña será claramente visible cuando la ejecute,
systemctl --user status myUnit.serviceya que muestra el argumento como ejecutado en la línea de comando. Esto significa que esto también será visible para los usuarios que ejecutantopops -aux.fuente
Hay una tercera alternativa a esto, así como la sugerencia 2 de @jasonwryan.
Extracto de la respuesta de Michael Hampton en ServerFault: ¿Cómo configurar la variable de entorno en el servicio systemd?fuente