Tengo un servicio en forma de una aplicación node.js configurada con Systemd en Raspbian Jessie y está utilizando su propia cuenta de usuario. Sin embargo, descubro que el servicio no se ejecuta correctamente porque no tiene los permisos necesarios. Uno de los módulos de nodo que instalé requiere acceso de root. Si ejecuto la aplicación manualmente con sudo, todo funciona bien.
¿Hay alguna manera de decirle a systemd que ejecute el servicio con sudo?
systemd
ejecuta los archivos de la unidad con derechos de root.Respuestas:
sudo
no tiene nada que ver con eso.Por lo general, le indica a systemd que ejecute un servicio como un usuario / grupo específico con una directiva
User=
yGroup=
en la[Service]
sección del archivo de la unidad.Ajústelos a root (o elimínelos, ya que ejecutarse como root es el valor predeterminado).
fuente
User=root
. Mira mi respuesta.Para borrar, los
systemd
servicios del sistema se ejecutan como root de forma predeterminada, pero aún existe una diferencia entre el comportamiento predeterminado y la ejecución de un servicio del sistemaUser=root
.Como se documenta en las variables de entorno en los procesos generados , estas variables solo se establecen si
User=
se establece:Probé para confirmar este hallazgo. Entonces, si desea ejecutar un servicio systemd como root que necesita una de las variables anteriores, debe configurarlo
User=root
.fuente
una solución temporal, pero consiguió que funcione en un apuro:
Puede ejecutarse con un usuario que tiene privilegios de sudo en un archivo de unidad systemd de la siguiente manera:
fuente
sudo
retrasará un poco el inicio. Y es innecesario.Ejecútelo como un usuario del sistema en este caso de forma predeterminada, el servicio se ejecuta como root.
fuente