使用 upstart 在启动时以非 root 用户身份启动用户空间程序

使用 upstart 在启动时以非 root 用户身份启动用户空间程序

有没有办法设置一个 upstart 脚本来执行用户空间程序没有保持 root 权限,但拥有基于目录/权限的程序所有权的用户可以停止/启动,同时仍让程序在启动时启动?

答案1

是的,使用 sudo:

sudo -u lordoftime program

-u +用户名以该用户身份启动程序。

答案2

su使用技巧时出现问题系统作业用户无法控制该作业。尽管以指定用户身份运行,但它仍然是系统作业。

12.04 中的正确解决方案是使用用户作业。这些作业存在于每个用户的系统中$HOME/.init,并完全由该用户控制。它们也没有 root 权限,因为用户作业始终以该用户的凭据运行。否则,它们就像系统作业一样运行,因此您可以start on像系统作业一样定义节。

默认情况下,Upstart 作业没有环境设置,除了作业中定义的环境。您可以通过sh -l( exec /bin/sh -l -c "exec YOUR STUFF HERE") 执行来规避这种情况。

相关内容