GNU/Linux >> Tutoriales Linux >  >> Linux

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

Si tiene start-stop-daemon

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

Para scripts de inicio de estilo systemd es realmente fácil. Simplemente agregue 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

En los sistemas RHEL, el /etc/rc.d/init.d/functions script está destinado a proporcionar similar a lo que desea. Si obtiene eso en la parte superior de su secuencia de comandos de inicio, todas sus funciones estarán disponibles.

La función específica provista para ayudar con esto es daemon . Si tiene la intención de usarlo para iniciar un programa similar a un demonio, un uso simple sería:

daemon --user=username command

Si eso es demasiado complicado para lo que necesitas, hay runuser (ver man runuser para información completa; algunas versiones pueden necesitar -u antes del nombre de usuario):

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

En lugar de sudo , prueba

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.


Linux
  1. Cómo crear un script de un comando de Linux

  2. ¿Cómo ejecutar el comando antes del inicio de sesión del usuario en Linux?

  3. ¿Cómo ejecutar un script?

  4. ¿Cómo ejecutar el script como otro usuario sin contraseña?

  5. ¿Cómo puedo ejecutar una función desde un script en la línea de comandos?

Cómo ejecutar el comando / secuencia de comandos de Linux Shell en segundo plano

Cómo crear usuarios en Linux (comando useradd)

Cómo ejecutar un comando durante un tiempo específico en Linux

Cómo ejecutar un script de Python en PHP

Cómo ejecutar un script Bash

¿Cómo ejecutar un comando en un script de Shell?