Quiero ejecutar un script cada vez que se inicia mi servidor. El problema es que necesito ser un cierto usuario para ejecutar el script, si trato de hacerlo como root no puedo encontrar ciertos paquetes (como ruby).
Intento cambiar a xxx user01.
sudo su user01
/etc/init.d/script start
Sin embargo, esto no funciona.
ubuntu
startup-scripts
rc.local
Philip
fuente
fuente
su
en el script rc?Respuestas:
La ejecución
sudo su user01
de un script no significa que los siguientes comandos se envían al shell resultante. De hecho, probablemente significa que se genera un nuevo shell como user01, ¡que nunca sale!Dos cosas:
-c 'command...'
argumento a su, comosu user01 -c '/etc/init.d/script start'
.chkconfig
oupdate-rc.d
. Tampoco desea trabajos en /etc/init.d que no deberían iniciarse comoroot
. Los trabajos en sí mismos pueden sentirse libres de transferirse a otra cuenta de usuario, pero deben ser invocados por root.fuente
Podrías poner algo
/etc/crontab
y ejecutarlo@reboot
fuente
Simplemente puede ejecutar el comando a través de sudo de esta manera:
-H establece la variable de entorno HOME a la del usuario
-u especifica el nombre de usuario para ejecutar como
fuente
Seguramente no puede ejecutar ese script con sudo debido a requiretty (exige que los usuarios deben estar registrados) en sudoers. Es posible que desee deshabilitar, lo cual es algo arriesgado
También hay una herramienta algo antigua llamada RunSuid: http://freecode.com/projects/runsuid
HTH
fuente