Todo lo que necesito hacer es ejecutar un script específico como un usuario particular que tiene el nologin/false
shell indicado /etc/passwd
.
Ejecutaría el script como root y esto debería ejecutarse como otro usuario. Corriendo:
~# su -c "/bin/touch /tmp/test" testuser
funcionaría, pero necesito un shell válido para el usuario de prueba. Sé que puedo deshabilitar la contraseña passwd -d testuser
y dejar el shell de /bin/bash
esta manera aseguraría un poco, pero necesito tener un nologin/false
shell.
Básicamente, lo que necesito es qué crontab
hace cuando configuramos trabajos para que se ejecuten como un usuario en particular, independientemente de que este tenga nologin/false
shell.
ps Encontré este hilo Ejecutando un comando como usuario nologin , pero no tengo idea de cómo ejecutar concatenate
el comando su -s /bin/sh $user
para el script.
root:root -rwsr-x---
?su -s /bin/bash -c 'exec /path/to/your/script &' test
runuser
, me gustaría señalar que elsu -s SHELL
parámetro hace que el comando runuser sea bastante inútil :) ¡Gracias Jan!Puede hacer esto
sudo -u
si lo tiene instalado:fuente
sudo -u apache whoami
?sudo -u
probablemente no sea una buena idea para ejecutar comandos como usuario nologin, porque exponeSUDO_USER
en el entorno quién es el verdadero que invoca el comando. Tal vez solo lo estoy pensando demasiado.Al proporcionar el script como argumento para ejecutar en / bin / sh:
fuente
me acabo de dar cuenta :
su -s "/ bin / bash" -c "/ bin / touch / tmp / testuser" testuser
tal vez hay una mejor manera?
fuente
en realidad, la mejor manera de hacerlo es a través de runuser
vea la página del manual para más detalles
esta herramienta se usa para lidiar con la situación como dijo el desarrollador en su bolg
Cada vez que un servicio se ejecuta como root y quiere cambiar el UID usando el shell, debe usar runuser.
http://danwalsh.livejournal.com/55588.html
He publicado esta respuesta en muchos palacios, perdóname si encuentras esto molesto
fuente
Use sudo -u para especificar el usuario. Utilice también el indicador -i para establecer las variables de entorno del usuario objetivo también.
fuente
This account is currently not available.
Utilice su comando con shell -s y -c comando. Como se muestra abajo
fuente