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 ...