script inicio ejecutar crear como automaticamente linux bash centos init rhel

linux - crear - ¿Cómo ejecutar un comando como usuario específico en un script de inicio?



ejecutar script bash al inicio ubuntu (5)

En los sistemas RHEL, la secuencia de comandos /etc/rc.d/init.d/functions está diseñada para proporcionar algo similar a lo que usted desea. Si obtiene esa fuente en la parte superior de su script de inicio, todas sus funciones estarán disponibles.

La función específica proporcionada para ayudar con esto es el daemon . Si pretende usarlo para iniciar un programa similar a un demonio, un uso simple sería:

daemon --user=username command

Si eso es demasiado runuser para lo que necesita, hay runuser (consulte man runuser para obtener información completa; es posible que algunas versiones necesiten -u antes del nombre de usuario):

/sbin/runuser username -s /bin/bash -c "command(s) to run as user username"

Estoy escribiendo un script de inicio que se supone que debe ejecutar un solo comando como un usuario diferente a la raíz. Así es como lo estoy haciendo actualmente:
sudo -u username command

Esto generalmente funciona como se espera en Ubuntu / Debian, pero en RHEL el script que se ejecuta cuando el command bloquea.
¿Hay otra forma de ejecutar el comando como otro usuario?
(Tenga en cuenta que no puedo usar las funciones de inicio de lsb ya que no están disponibles en RHEL / Centos 5.x.)


En lugar de sudo , intente

su - username command

En mi experiencia, sudo no siempre está disponible en los sistemas RHEL, pero su es, porque su es parte del paquete coreutils mientras que sudo está en el paquete sudo.


Para los scripts de inicio de estilo de systemd es realmente fácil. Simplemente agrega un Usuario = en la sección [Servicio].

Aquí hay un script de inicio que uso para qbittorrent-nox en CentOS 7:

[Unit] Description=qbittorrent torrent server [Service] User=<username> ExecStart=/usr/bin/qbittorrent-nox Restart=on-abort [Install] WantedBy=multi-user.target


Por lo general, lo hago de la forma en que lo estás haciendo (es decir, comando sudo -u username). Pero, también existe la forma ''djb'' de ejecutar un demonio con privilegios de otro usuario. Consulte: http://thedjbway.b0llix.net/daemontools/uidgid.html


Si tienes start-stop-daemon

start-stop-daemon --start --quiet -u username -g usergroup --exec command ...