GNU/Linux >> Tutoriales Linux >  >> Linux

Ejecute parte de un script bash como un usuario diferente

Use el comando sudo en el script.

En la forma:

sudo -u username command

el comando sudo ejecuta comando como el usuario nombre de usuario .

Si el script se ejecuta como root, no creo que solicite una contraseña. De lo contrario, este artículo analiza cómo usar sudo con contraseña en una línea de comando y este artículo analiza cómo usar sudo sin contraseña.


Esta respuesta es buena, pero el consejo de falla del servidor es un poco peligroso:¡le permitiría a cualquiera ejecutar cualquier cosa como root! Así que estoy publicando aquí porque no puedo formatear el comentario.

Recomendaría usar visudo para otorgar los permisos que necesita con la mayor precisión posible. Escribe visudo y agregue una línea como:

username hostname = NOPASSWD: /full/path/to/command1, full/path/to/command2

Si necesita ejecutar esto mismo en muchos hosts, puede abrirlo con:

username ALL = NOPASSWD: /full/path/to/command1, full/path/to/command2

Pero **no* usaría ninguno de los dos:

username ALL=(ALL) NOPASSWD: ALL

o nombre de usuario nombre de host =TODOS

La página de manual de sudoer tiene muchos detalles sangrientos


# Me gusta:

#test if running bash as a different user works
sudo -u nobody bash -c : && RUNAS="sudo -u nobody"

echo 1: $USER

#Runs bash with commands between '_' as nobody if possible
$RUNAS bash<<_
echo 2: \$USER
_

echo 3: $USER

# ./ejecutar

1: root
2: nobody
3: root

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

  2. Bash Script - Cómo leer la entrada del usuario

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

  4. Ejecutar archivo de texto como comandos en Bash

  5. Ejecutar script bash como demonio

Ejecute contenedores en Linux sin sudo en Podman

Cómo ejecutar un script Bash {7 métodos}

Cómo ejecutar un script Bash

Ejecute el script bash después de iniciar sesión

¿Qué es diferente entre root y sudo?

Ejecute un script de shell como un usuario diferente