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
EnvironmentFile
directiva. Deman systemd.exec
:Si no desea que se le pregunte, se utilizaría una de las
systemd-ask-password
directivas. Deman systemd-ask-password
:fuente
ps ajxewww
) para que alguien pueda recógelo desde allí.EnvironmentFile
La 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-tool
desdelibsecret
para 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-tool
así:Precaución : la contraseña será claramente visible cuando la ejecute,
systemctl --user status myUnit.service
ya que muestra el argumento como ejecutado en la línea de comando. Esto significa que esto también será visible para los usuarios que ejecutantop
ops -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