DBus,未能获得系统范围的名称

Posted

技术标签:

【中文标题】DBus,未能获得系统范围的名称【英文标题】:DBus, failed to obtain systemwide name 【发布时间】:2013-12-16 10:18:34 【问题描述】:

我正在使用 gio,以及这个 DBus 实现来注册某个守护进程的内部对象。我使用 SESSION 范围的 Dbus 进行了所有测试,一切正常,但我尝试使用系统范围的注册,因为我的名称注册失败。

我使用 g_bus_own_name 来获取名称,我的错误案例响应 bus_acquired_handler 然后 name_lost_handler 场景。

任何想法,我该如何解决这个问题,或者我如何获得有关错误的更多信息?

GIO:https://developer.gnome.org/gio/2.38/gio-Owning-Bus-Names.html#g-bus-own-name

这是 dbus-monitor 跟踪:

signal sender=org.freedesktop.DBus -> dest=:1.96 serial=2 path=/org/freedesktop/DBus;接口=org.freedesktop.DBus;成员=获得姓名 字符串 ":1.96"


signal sender=:1.95 -> dest=(null destination) serial=3 path=/org/ast/AstCore;接口=org.freedesktop.DBus.Properties;成员=属性更改 字符串“org.ast.AstCore” 数组 [ 字典条目( 字符串“状态” 变体 int32 3 ) ] 数组 [ ]


signal sender=:1.95 -> dest=(null destination) serial=5 path=/org/ast/AstCore;接口=org.freedesktop.DBus.Properties;成员=属性更改 字符串“org.ast.AstCore” 数组 [ 字典条目( 字符串“状态” 变体 int32 4 ) ] 数组 [ ]


signal sender=org.freedesktop.DBus -> dest=(null destination) serial=173 path=/org/freedesktop/DBus;接口=org.freedesktop.DBus;成员=NameOwnerChanged 字符串“:1.95” 字符串“:1.95” 字符串 ""


signal sender=org.freedesktop.DBus -> dest=(null destination) serial=174 path=/org/freedesktop/DBus;接口=org.freedesktop.DBus;成员=NameOwnerChanged 字符串“:1.97” 字符串 "" 字符串 ":1.97"


【问题讨论】:

总线的安全设置可能会阻止它 - 检查/etc/dbus-1/system.xml/etc/dbus-1/system.d/中的文件 【参考方案1】:

如 /etc/dbus-1/system.conf 中所述

<!-- Holes must be punched in service configuration files for
     name ownership and sending method calls -->
<deny own="*"/>
...

在 /etc/dbus-1/system.d/ 中添加您自己的配置文件(例如 astcore.conf),以允许您的应用拥有特定的总线名称。

【讨论】:

【参考方案2】:

不要在 GDBus 中使用空目标,它没有实现。

几周前我提交了一些补丁,但似乎 NULL 接口调用将很快从 DBus 规范中清除。

https://bugzilla.gnome.org/show_bug.cgi?id=706675


请注意,dbus 守护程序会将 NULL 接口消息从流中过滤出来并丢弃它们(最后 2 篇文章)——毕竟 NULL 接口是一个潜在的安全线程并且可以绕过全局 dbus-daemon 的过滤:

https://bugs.freedesktop.org/show_bug.cgi?id=68597

【讨论】:

以上是关于DBus,未能获得系统范围的名称的主要内容,如果未能解决你的问题,请参考以下文章

无法获得对 dbus-send 的任何回复

使用 libdbus-c++ 获得 DBus::Path - 下一步是啥?

因为数据库正在使用,所以未能获得对数据库的排它访问权RESTORE DATABASE操作异常终止

Jquery Autocomplete 未能获得焦点

查尔斯未能获得 https 请求

声纳未能获得 pylint 结果