谁在Linux系统中调用了我的DBus API?

8

情景如下:

在一个基于Linux的手持设备中,我有一个C应用程序,其中已经准备好由第三方应用程序调用的dbus API。DBus API在启动时被调用。

是否有系统API可以在我的函数中使用,以打印调用者的ID并将其保存到syslog中?

提前致谢!

1个回答

4

/org/freedesktop/DBus 对象在 org.freedesktop.DBus 总线上有两个属于 org.freedesktop.DBus 接口的方法(哦,好吧):GetConnectionUnixUserGetConnectionUnixProcessID。两个方法都接受一个字符串——唯一的连接名称,可以通过调用 dbus_message_get_sender(或您所使用的高级 API 包装器提供的任何方法)获取。


3
值得指出的是,自此回答撰写以来,已添加了org.freedesktop.DBus.GetConnectionCredentials方法,应优先使用该方法而不是GetConnectionUnixUserGetConnectionUnixProcessID。这意味着只需一次方法调用,消除了某些竞态条件,并为您提供有关安全标签的其他信息。请参阅规范:https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-get-connection-credentials - Philip Withnall
凭据对象在某些情况下无法获取对等Unix用户ID或进程ID,因为有多种类型的身份验证可用。 - Jari Turkia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接