如何在 Upstart 中启用用户作业

如何在 Upstart 中启用用户作业

$HOME/.init我正在尝试允许非特权用户从他们的目录运行 upstart 作业。

Upstart 食谱提到你必须启用此项,但没有提到如何做到这一点。挫败感可以总结为@ropez 的评论

文档似乎没有提到如何要启用用户作业,它仅提到配置文件,并且管理员必须执行此操作

start当我尝试以非特权用户身份执行工作时仍然收到此错误:

start: Rejected send message, 1 matched rules; type="method_call", sender=":1.70"

到目前为止,我发现最接近的是这样的一个观点有人修补了 Upstart.conf,但它看起来比我在使用的 Ubuntu 12.04 中看到的要短很多。

是否有一个规范的、明确定义的方法来做到这一点?

PS我知道有关的 问题。然而,他们的答案都没有真正说明如何做到这一点。

答案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>

相关内容