it-swarm-es.com

Problemas de permisos con el comando en rc.local

Estoy usando un comando para iniciar una sesión de pantalla y ejecutar un script bash para un usuario.

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

Cuando inicio, veo que aparece la sesión de pantalla para ese usuario, pero cuando la abro, veo un error de permiso denegado.

Verifiqué los permisos en el archivo y es: -rw-rw-r-- 1 username www-data 816 Feb 18 00:59 test.sh

¿Alguien tiene una teoría de por qué estoy viendo este error? Puedo ejecutar el script sin problemas cuando estoy conectado como nombre de usuario.

2
ATLChris

test.sh no es ejecutable. Por lo tanto, puede ejecutarlo pasándolo como argumento a un Shell, como en bash /home/username/test.sh, pero no puede ejecutarlo directamente como un programa como en su comando de ejemplo. Ejecute chmod +x /home/username/test.sh para que sea ejecutable.

Si test.sh está haciendo cosas como establecer variables de entorno, solo sobreviven durante el proceso. Entonces, si ejecuta /home/username/test.sh; exec bash, entonces el Shell interactivo final no tendrá las variables de entorno de ese proceso. Para mantener las variables de entorno, configúrelas en el proceso bash primario: obtenga el script, en lugar de ejecutarlo como un programa separado.

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