rc.local 中的命令存在权限问题

rc.local 中的命令存在权限问题

我正在使用命令启动屏幕会话并为用户运行 bash 脚本。

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

当我启动时,我看到该用户的屏幕会话出现,但是当我打开它时,我看到权限被拒绝错误。

我检查了该文件的权限并且它是: -rw-rw-r-- 1 username www-data 816 Feb 18 00:59 test.sh

有人知道我为什么会看到这个错误吗?当我以用户名登录时,我可以毫无问题地运行脚本。

答案1

test.sh不可执行。因此,您可以通过将其作为参数传递给 shell 来运行它,如bash /home/username/test.sh,但您不能像示例命令中那样直接将其作为程序运行。运行chmod +x /home/username/test.sh以使其可执行。

如果test.sh正在执行诸如设置环境变量之类的操作,则它们仅在进程持续期间存在。因此,如果您运行/home/username/test.sh; exec bash,则最终的交互式 shell 将不会拥有该进程的环境变量。要保留环境变量,请在父 bash 进程中设置它们:获取脚本,而不是将其作为单独的程序运行。

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

相关内容