Como posso executar scripts de inicialização como usuário não root?

2

Eu coloquei este arquivo em /etc/init/proxyserver.conf que executa este script na inicialização (Ubuntu 11.10):

description "Run code for ProxyServer"
start on runlevel [23]

script
    cd /home/mark/selenium-client
    exec java -jar selenium-server-standalone-2.20.0.jar -role hub -port 1111
end script

Isso funciona bem, mas se eu executar isso no terminal:

ps aux | grep selenium

Ele retorna esta tela:

root  783   0.0   2.3  680584   23688   ?   Ssl   Apr18   4:45   java -jar selenium-server-standalone-2.20.0.jar -role hub -port 1111

Mas eu quero rodar o script como usuário não-root, como posso fazer isso?

Obrigado!

    
por Mark Design 23.04.2012 / 12:44

3 respostas

5

Você pode executá-lo em crontab com a opção @reboot

crontab -e para abrir o crontab do usuário.

adicione a linha @reboot /path/to/script e ele deve iniciar seu script na reinicialização como esse usuário

Mais alguns exemplos de uso do cron aqui

    
por 23.04.2012 / 12:49
2

Você poderia usar, por exemplo,

sudo -u mark exec java -jar selenium-server-standalone-2.20.0.jar -role hub -port 1111

para usar os privilégios de root para executar o processo como um usuário especificado.

EDITAR: Ou talvez

exec sudo -u mark java -jar selenium-server-standalone-2.20.0.jar -role hub -port 1111

dependendo do que upstart quer (eu não uso eu mesmo).

    
por 23.04.2012 / 12:51
2

No Upstart, use a palavra-chave setuid :

description "Run code for ProxyServer"
start on runlevel [23]

setuid mark
chdir /home/mark/selenium-client
exec java -jar selenium-server-standalone-2.20.0.jar -role hub -port 1111

( script é desnecessário.)

Como alternativa, crie um trabalho de usuário em vez de um sistema.

    
por 23.04.2012 / 12:58