首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBus SystemBus策略

DBus SystemBus策略
EN

Stack Overflow用户
提问于 2012-06-23 22:07:09
回答 1查看 17.9K关注 0票数 10

我写了一个通过dbus作为会话服务运行的程序。

如果由根用户(Uid0)执行,我想让它作为系统服务运行(创建一个dbus.SystemBus总线名称)。

我尝试为dbus.SystemBus运行我当前为dbus.SessionBus运行的程序,但得到一个策略错误。

代码(python,但这并不重要),清除了所有不必要的东西,我运行的是:

代码语言:javascript
复制
import gobject
import dbus
import dbus.service
from dbus.mainloop.glib import DBusGMainLoop

DBusGMainLoop(set_as_default=True)
loop = gobject.MainLoop()

class dbusService(dbus.service.Object):
    def __init__(self):
        bus_name = dbus.service.BusName('org.testobj.service', bus=dbus.SystemBus())
        dbus.service.Object.__init__(self, bus_name, '/org/testobj/service')

a = dbusService()

并获取:

代码语言:javascript
复制
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in __init__
  File "/usr/lib/python2.7/site-packages/dbus/service.py", line 131, in __new__ retval = bus.request_name(name, name_flags)
  File "/usr/lib/python2.7/site-packages/dbus/bus.py", line 303, in request_name 'su', (name, flags))
  File "/usr/lib/python2.7/site-packages/dbus/connection.py", line 651, in call_blocking message, timeout)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: Connection ":1.48" is not allowed to own the service "org.testobj.service" due to security policies in the configuration file
EN

回答 1

Stack Overflow用户

发布于 2013-07-11 00:21:19

执行上述示例的最简单方法是编辑/etc/dbus-1/system.conf并添加以下行:

代码语言:javascript
复制
<policy>
    ...
    <allow own="org.testobj.service"/>
</policy>

Relevant documentation

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11170118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档