Problemas de permissão com o comando em rc.local

2

Estou usando um comando para iniciar uma sessão de tela e executar um script bash para um usuário.

/bin/su username -c "/usr/bin/screen -dmS test bash -c '/home/username/test.sh; exec bash'"

Quando inicializo, vejo a sessão de tela aparecer para esse usuário, mas quando abro, vejo um erro de permissão negada.

Eu verifiquei as permissões no arquivo e é: -rw-rw-r-- 1 username www-data 816 Feb 18 00:59 test.sh

Alguém tem uma teoria do porque estou vendo esse erro? Eu posso executar o script sem problemas quando eu estou logado como nome de usuário.

    
por ATLChris 18.03.2013 / 01:19

1 resposta

2

test.sh não é executável. Assim, você pode executá-lo passando-o como um argumento para um shell, como em bash /home/username/test.sh , mas não pode executá-lo diretamente como um programa como em seu comando de exemplo. Execute chmod +x /home/username/test.sh para torná-lo executável.

Se test.sh estiver fazendo coisas como configurar variáveis de ambiente, elas só sobreviverão durante o processo. Portanto, se você executar /home/username/test.sh; exec bash , o shell interativo final não terá as variáveis de ambiente desse processo. Para manter as variáveis de ambiente, defina-as no processo bash pai: crie o script, em vez de executá-lo como um programa separado.

/bin/su username -c "/usr/bin/screen -dmS test bash -c '. ~/test.sh; exec bash'"
    
por Gilles 18.03.2013 / 01:25