如何防止 D-Bus 啟動(禁用)其他守護程序?
最近我注意到
rtkit-daemon
在我的 Debian 10.4 機器上執行的程序可能會干擾該機器上的自定義伺服器應用程序。所以我想像這樣禁用那個實時工具包守護程序:$ sudo systemctl stop rtkit-daemon.service $ sudo systemctl disable rtkit-daemon.service
那正確地停止(並禁用)了該
rtkit-daemon
過程。但是,過了一會兒,我注意到它再次執行,並且在 syslog 中我發現了以下幾行:Jun 12 16:15:12 box-63 dbus-daemon[453]: [system] Activating via systemd: service name='org.freedesktop.RealtimeKit1' unit='rtkit-daemon.service' requested by ':1.6746' (uid=1000 pid=11857 comm="python pipecheck.py") Jun 12 16:15:12 box-63 systemd[1]: Starting RealtimeKit Scheduling Policy Service... Jun 12 16:15:12 box-63 dbus-daemon[453]: [system] Successfully activated service 'org.freedesktop.RealtimeKit1' Jun 12 16:15:12 box-63 systemd[1]: Started RealtimeKit Scheduling Policy Service.
那
python pipecheck.py
是我們的自定義應用程序。為什麼 D-Bus 首先要為我們的應用程序啟動實時套件?
無論如何,顯然
dbus-daemon
已經重新啟動了rtkit-daemon
.我怎樣才能防止這種情況並永久禁用實時工具包守護程序?
歡迎使用桌面匯流排匯流排啟動!這是一種痛苦,應該避免。
一個桌面匯流排客戶端(某種)正在請求桌面匯流排代理與
org.freedesktop.RealtimeKit1
D-Bus 伺服器進行通信。當rtkit-daemon
程序執行時,它會向 D-Bus 代理註冊自己作為這個名稱。當它不執行時,代理呼叫D-Bus 匯流排啟動。當客戶在這種情況下詢問 D-Bus 代理時,代理會查看
org.freedesktop.RealtimeKit1.service
文件中指定的內容。(這不是一個 systemd 服務單元文件,而是一個 D-Bus 配置文件,位於 下/usr/{local/,}share/dbus-1/system-services/
,D-Bus 也使用.service
副檔名。)代理從這個文件中了解到,只有在 systemd 系統上,org.freedesktop.RealtimeKit1
伺服器才作為rtkit-daemon.service
systemd 服務進行管理。
systemd
代理通過相同的桌面匯流排與一個特殊且未記錄org.freedesktop.systemd1.Activator
的 D-Bus服務名稱交談,要求它通過一條消息啟動rtkit-daemon.service
systemd服務。ActivationRequest
此未記錄的啟動功能沒有僅在啟用時啟動服務的概念。它總是啟動服務,即使它被禁用。因此,具有諷刺意味的是,您不能
rtkit-daemon
使用明顯的禁用方法來禁用它,disable
命令。您可以改為:
org.freedesktop.RealtimeKit1.service
…用您自己的文件覆蓋文件,其中不包含啟動org.freedesktop.RealtimeKit1
D-Bus 伺服器的方法;- …找出 D-Bus 客戶端的要求
org.freedesktop.RealtimeKit1
,使用busctl monitor
,然後停止它;或者- …屏蔽
rtkit-daemon.service
systemd 服務,因此即使桌面匯流排代理通過特殊且未記錄的 API 請求啟動,systemd本身也不知道如何啟動它。這是 my
system-control
有一個reset
動詞(根據其目前啟用/禁用狀態啟動/停止服務)並且我的替換dbus-daemon-launch-helper
呼叫system-control reset
而不是system-control activate
.進一步閱讀
- 喬納森·德博因·波拉德 (2016)。避免桌面匯流排 (D-Bus) 匯流排啟動。點心。軟體。
- 喬納森·德博因·波拉德。“
reset
”。system-control
. 小吃指南。- 喬納森·德博因·波拉德。
dbus-daemon-launch-helper
. 小吃指南。