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