Executar sudo su user01
em um script não significa que os seguintes comandos sejam enviados para o shell resultante. Na verdade, isso provavelmente significa que um novo shell é gerado como user01, que nunca sai!
Duas coisas:
- Você pode executar um comando como outro usuário transmitindo o argumento
-c 'command...'
para su, comosu user01 -c '/etc/init.d/script start'
. - Iniciar um serviço que usa /etc/init.d de rc.local não é a coisa correta a ser feita. Você deseja ativar o serviço na inicialização usando suas ferramentas de distribuição, como
chkconfig
ouupdate-rc.d
. Você também não quer trabalhos em /etc/init.d que não devam ser iniciados comoroot
. Os trabalhos em si podem ser liberados para bifurcar-se com outra conta de usuário, mas devem ser chamados pelo root.