Quero executar um script sempre que meu servidor for iniciado. O problema é que eu preciso ser um determinado usuário para executar o script, se eu tentar fazê-lo como root, ele não poderá encontrar certos pacotes (como ruby).
Eu tento mudar para xxx user01.
sudo su user01
/etc/init.d/script start
Isso não funciona no entanto.
ubuntu
startup-scripts
rc.local
Philip
fonte
fonte
su
no script rc?Respostas:
A execução
sudo su user01
em um script não significa que os seguintes comandos sejam enviados ao shell resultante. De fato, isso provavelmente significa que um novo shell é gerado como user01, que nunca sai!Duas coisas:
-c 'command...'
argumento para su, comosu user01 -c '/etc/init.d/script start'
.chkconfig
ouupdate-rc.d
. Você também não deseja trabalhos no /etc/init.d que não devam ser iniciados comoroot
. Os trabalhos em si podem ficar à vontade para acessar outra conta de usuário, mas devem ser chamados pelo root.fonte
Você pode colocar algo
/etc/crontab
e executá-lo@reboot
fonte
Você pode simplesmente executar o comando através do sudo desta forma:
-H define a variável de ambiente HOME para a do usuário
-u especifica o nome de usuário para executar como
fonte
Certamente você não pode executar esse script com sudo por causa do requiretty (impõe que os usuários devem estar logados) em sudoers. Você pode querer desativar, o que é um pouco arriscado
Também existe uma ferramenta um pouco antiga chamada runsuid: http://freecode.com/projects/runsuid
HTH
fonte