1 个不稳定版本
| 0.2.0 | 2023年8月9日 |
|---|
#2 在 #readiness
13KB
75 行
dbus-waiter
dbus-waiter 是一个小型程序,用于实现采用 D-Bus 名称的服务的就绪检查。
用法
dbus-waiter --notify-fd FD --bus-name BUS_NAME PROG...
以下示例执行 xdg-desktop-portal,并在执行进程接管名为 org.freedesktop.portal.Desktop 的总线时,在文件描述符 3 上发送就绪通知
dbus-waiter \
--notify-fd 3 \
--bus-name org.freedesktop.portal.Desktop \
/usr/libexec/xdg-desktop-portal
实现的就绪通知机制在 systemd 和 s6 上都有效。
如果没有文件描述符与 --notify-fd 的值匹配,输出错误将包括
Error: Invalid argument (os error 22)
实现
dbus-waiter 首先进行分叉。子进程监听 NameOwnerChanged 事件,事件发生在 BUS_NAME 总线。父进程 exec 进入 PROG。
当 BUS_NAME 有新的所有者时,如果所有者是父进程,则子进程将发送就绪通知并退出。
如果另一个进程接管了 BUS_NAME,则子进程将立即退出。在这种错误场景中,就绪检查预计会超时,并且管理程序 应该 杀死父进程。
注意事项
- 基于 PID 重用的攻击 理论上 是可能的,尽管攻击者需要具有在指定总线上获取
BUS_NAME的权限。
另请参阅
许可证
本项目采用 ISC 许可证。有关详细信息,请参阅许可证。
依赖项
~12-25MB
~370K SLoC