GNU/Linux >> Tutoriales Linux >  >> Linux

Upstart:ejecute el servicio como usuario sin privilegios y el script de preinicio como root

upstart no tiene instalaciones equivalentes a systemd de PermissionsStartOnly ajuste. Todos los procesos en el trabajo se ejecutan según lo establecido por el usuario a través de setuid estrofa, como dice el Cookbook.

Así que haz las cosas al estilo daemontools.

Usa setuidgid , setuidgid , s6-setuidgid , chpst , runuid o setuidgid en el exec estrofa:

exec \
setuidgid somebody \
unicorn -D -c /opt/posty_api/unicorn.rb --env production >> /var/log/posty/upstart.log 2>&1

Ese es un terrible mecanismo de registro, por cierto. La forma de daemontools tendría un registro adecuado, ciclado automáticamente, rotable bajo demanda, con límite de tamaño, usando multilog , multilog , s6-log , svlogd , tinylog , o cyclog . upstart sin embargo, es difícil de integrar con ellos, dado su expect mecanismo.

expect fork
exec \
setuidgid somebody \
unicorn -D -c /opt/posty_api/unicorn.rb --env production 2>&1 | \
/usr/local/bin/chdir /var/log/ \
setuidgid log \
cyclog posty/unicorn/

(El chdir aquí está el de carga en cadena del nosh paquete, y no es estrictamente necesario. Pero hace las cosas un poco más ordenadas).


Linux
  1. ¿Cómo hacer retroactivamente que un script se ejecute como raíz?

  2. Ejecute el script php como proceso daemon

  3. ¿Cómo ejecutar un comando como un usuario específico en un script de inicio?

  4. Ejecute parte de un script bash como un usuario diferente

  5. ¿Qué es diferente entre root y sudo?

Cómo ejecutar Shell Script como servicio SystemD en Linux

¿Ejecutar script con argumentos como usuario?

Cómo crear y ejecutar un script de shell en Ubuntu 22.04

¿Cómo hacer que el script de Python se ejecute como servicio?

Ejecutar script bash como demonio

¿Ejecutar el comando de shell en jenkins como usuario root?