更多的注释可以参考:dbus-daemon
# 根元素 <busconfig> <!-- 根据指定的 -system或 -session 来选择的配置文件 --> <type>system</type> <!-- dbus-daemon运行的用户 --> <user>dbus</user> <!-- Fork into daemon mode --> <fork/> <!-- We use system service launching using a helper --> <standard_system_servicedirs/> <!-- This is a setuid helper that is used to launch system services --> <servicehelper>//usr/libexec/dbus-1/dbus-daemon-launch-helper</servicehelper> <!-- Write a pid file --> <pidfile>/run/dbus/messagebus.pid</pidfile> <!-- Enable logging to syslog --> <syslog/> <!-- 指定授权机制。如果不存在,所有的机制都被允许。 --> <auth>EXTERNAL</auth> <!-- 总线监听的地址,支持unix socket,tcp,system等 --> <listen>unix:path=http://www.likecs.com/run/dbus/system_bus_socket</listen> <listen>unix:path=http://www.likecs.com/tmp/foo</listen> <listen>tcp:host=localhost,port=1234</listen> <policy context="default"> <!-- All users can connect to system bus --> <allow user="*"/> <!-- Holes must be punched in service configuration files for name ownership and sending method calls --> <deny own="*"/> <deny send_type="method_call"/> <!-- Signals and reply messages (method returns, errors) are allowed by efault --> <allow send_type="signal"/> <allow send_requested_reply="true" send_type="method_return"/> <allow send_requested_reply="true" send_type="error"/> <!-- All messages may be received by default --> <allow receive_type="method_call"/> <allow receive_type="method_return"/> <allow receive_type="error"/> <allow receive_type="signal"/> <!-- Allow anyone to talk to the message bus --> <allow send_destination="org.freedesktop.DBus" send_interface="org.freedesktop.DBus" /> <allow send_destination="org.fedoraproject.FirewallD1" send_interface="org.fedorapproject.FirewallD1" /> <allow send_destination="org.freedesktop.DBus" send_interface="org.freedesktop.DBus.Introspectable"/> <!-- But disallow some specific bus services --> <deny send_destination="org.freedesktop.DBus" send_interface="org.freedesktop.DBus" send_member="UpdateActivationEnvironment"/> <deny send_destination="org.freedesktop.DBus" send_interface="org.freedesktop.DBus.Debug.Stats"/> <deny send_destination="org.freedesktop.DBus" send_interface="org.freedesktop.systemd1.Activator"/> </policy> <!-- Only systemd, which runs as root, may report activation failures. --> <policy user="root"> <allow send_destination="org.freedesktop.DBus" send_interface="org.freedesktop.systemd1.Activator"/> </policy> <!-- root may monitor the system bus. --> <policy user="root"> <allow send_destination="org.freedesktop.DBus" send_interface="org.freedesktop.DBus.Monitoring"/> </policy> <!-- If the Stats interface was enabled at compile-time, root may use it. Copy this into system.local.conf or system.d/*.conf if you want to enable other privileged users to view statistics and debug info --> <policy user="root"> <allow send_destination="org.freedesktop.DBus" send_interface="org.freedesktop.DBus.Debug.Stats"/> </policy> <!-- Include legacy configuration location --> <include ignore_missing="yes">/etc/dbus-1/system.conf</include> <!-- 包含的子配置文件. --> <includedir>system.d</includedir> <includedir>/etc/dbus-1/system.d</includedir> <!-- This is included last so local configuration can override what's in this standard file --> <include ignore_missing="yes">/etc/dbus-1/system-local.conf</include> <include if_selinux_enabled="yes" selinux_root_relative="yes">contexts/dbus_contexts</include> </busconfig> 通过命令行发送dbus消息dbus支持通过命令发送一个dbus消息,如获取可用的dbus 服务。
dbus-send --session \ --dest=org.freedesktop.DBus \ --type=method_call \ --print-reply \ /org/freedesktop/DBus \ org.freedesktop.DBus.ListNames method return time=1631452206.288425 sender=org.freedesktop.DBus -> destination=:1.29 serial=3 reply_serial=2 array [ string "org.freedesktop.DBus" string "org.freedesktop.login1" string "org.freedesktop.systemd1" string "org.fedoraproject.FirewallD1" string "org.freedesktop.PolicyKit1" string ":1.17" string ":1.0" string ":1.29" string ":1.18" string ":1.1" ]返回org.freedesktop.DBus service
dbus-send --session \ --dest=org.freedesktop.DBus \ --type=method_call \ --print-reply \ /org/freedesktop/DBus \ org.freedesktop.DBus.Introspectable.Introspect