$HOME/.init
我正在尝试允许非特权用户从他们的目录运行 upstart 作业。
Upstart 食谱提到你必须启用此项,但没有提到如何做到这一点。挫败感可以总结为@ropez 的评论:
文档似乎没有提到如何要启用用户作业,它仅提到配置文件,并且管理员必须执行此操作
start
当我尝试以非特权用户身份执行工作时仍然收到此错误:
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.70"
到目前为止,我发现最接近的是这样的一个观点有人修补了 Upstart.conf,但它看起来比我在使用的 Ubuntu 12.04 中看到的要短很多。
是否有一个规范的、明确定义的方法来做到这一点?
答案1
您链接到的“修补” Upstart 配置与随附的 Upstart 配置相同新贵 1.3(从无法让 upstart 运行用户作业),所以我认为这是启用用户作业的最简单的方法。
答案2
此解决方案适用于 Ubuntu 12.04 上的 Upstart 1.5。
打开 upstart 配置:
sudo vim /etc/dbus-1/system.d/Upstart.conf
注释掉该default
策略,即
<policy context="default">
...
</policy>
并粘贴来自此补丁:
<!--
Allow any user to invoke all of the methods on Upstart, its jobs
or their instances, and to get and set properties - since Upstart
isolates commands by user.
-->
<policy context="default">
<allow send_destination="com.ubuntu.Upstart"
send_interface="org.freedesktop.DBus.Introspectable" />
<allow send_destination="com.ubuntu.Upstart"
send_interface="org.freedesktop.DBus.Properties" />
<allow send_destination="com.ubuntu.Upstart"
send_interface="com.ubuntu.Upstart0_6" />
<allow send_destination="com.ubuntu.Upstart"
send_interface="com.ubuntu.Upstart0_6.Job" />
<allow send_destination="com.ubuntu.Upstart"
send_interface="com.ubuntu.Upstart0_6.Instance" />
</policy>