Linux DBus通讯

Linux DBus communication

在 Linux D 总线中:

  1. 是什么阻止进程 A 直接与进程 B 对话?为什么方法调用消息必须经过总线守护进程?

  2. 为什么守护程序配置文件中的 <policy> 部分有一个选项允许/拒绝拥有总线名称?

  3. 如果一个进程可以使用匹配规则潜在地监视通过总线守护进程的任何消息,那么两个通信进程是否可以以任何方式表达任何限制,使得其他进程无法观察到它们的流量?

  4. 为什么在 documentation 中说给定的总线名称将始终引用相同的应用程序? - 机器重启后会这样吗?

对于 1:我目前的理解是,进程 A 和 B 要相互通信,都必须向总线守护进程注册一个总线名称。那么唯一阻止 A 与 B 对话的是它可能知道 B 的总线名称但无法在机器上找到它吗?

1 - 没有。使用总线要简单得多(服务和客户端都是 tcp 客户端,而不是服务器,更容易配置、管理名称等)

2 - 确保名称背后的服务是您信任的服务。否则恶意代码可能会请求名称并伪装成该服务。

3 - IMO 是(虽然不确定)

4 - 名称 <-> 连接。一个进程可以拥有多个名称。自动名称不会重新分配给新连接(如果您重新连接它总是新名称)重新启动后您可以再次看到相同的名称,但在重新启动之间您可以假设随着时间的推移没有相同的名称分配给两个不同的连接(=竞争条件)