如何在Upstart中以非特权用户身份开始工作?

我正在使用ubuntu 10.4 LTS的最新upstart版本。 使用–debug内核标志启动upstart。

我正在为nzbget守护进程进行自定义作业配置。 基本上,这个作业有一个预启动脚本,用于安装文件系统,一个卸载文件系统的启动后脚本和一个exec nzbget -D行。

问题是nzbget守护程序需要作为非特权用户运行。 此function已包含在nzbget中。 实际上,当我从控制台sudo nzbget -D运行时,该进程作为非特权用户运行。 但是当我使用exec nzbget -D行启动upstart作业时,进程nzbget -D以root身份运行。 正如在新贵的食谱中所说的那样,我尝试使用su -c“nzbget -D”用户以及start-stop-daemon,而不需要预期的节。 但对于这两个命令,由于upstart跟踪错误的PID我猜,它在启动过程结束时看到主进程被杀死(由于upstart日志),因此,它启动了我不想要的后处理脚本。

=>我该怎么办呢? exec nzbget -D upstart命令如何使进程以root sudo nzbget -D运行,而sudo nzbget -D命令使它作为非特权用户运行?

版本1.4的发布取得了一些进展:

新的“setuid”和“setgid”节允许系统作业在与给定名称/组对应​​的指定uid / gid下运行。

您可以从LaunchPad页面获取它,但(奇怪的是)我看不到PPA,因此您可能需要自己编译。

否则,在exec命令中使用susudo ,如下所示:

 su -c ""  sudo -u   

他们都做了几乎相同的事情,所以选择你最开心的。 所以使用你的示例命令:

 exec sudo -u me "nzbget -D" 

我建议使用sudo语法如下:

 sudo -u foouser foocommand 

这将命令foocommand作为用户foouser运行。