D-BUS message bus daemon configuration === The message bus daemon has a configuration file that specializes it for a particular application. For example, one configuration file might set up the message bus to be a systemwide message bus, while another might set it up to be a per-user login session bus. The configuration file also establishes resource limits, security parameters, and so forth. The configuration file is not part of any interoperability specification and its backward compatibility is not guaranteed; this document is documentation, not specification. A DTD should be written here eventually, but for now I suck. Doctype declaration: Elements: Root element. ignore_missing="(yes|no)" optional attribute, defaults to no Include a file filename.conf at this point. The user account the daemon should run as, as either a username or a UID. If the daemon doesn't have and cannot change to this UID on startup, it will exit. If this element is not present, the daemon will not change or care about its UID. The last entry in the file "wins", the others are ignored. address="name" mandatory attribute Add an address that the bus should listen on. The address is in the standard D-BUS format that contains a transport name plus possible parameters/options. Example: If there are multiple elements, then the bus listens on multiple addresses. Lists permitted authorization mechanisms. If this element doesn't exist, then all known mechanisms are allowed. If there are multiple elements, the last one wins (they are not merged). context="(default|mandatory)" one of the context/user/group attributes is mandatory user="username or userid" group="group name or gid" Encloses a policy to be applied to a particular set of connections to the bus. A policy is made up of , , elements. Policies are applied to a connection as follows: - all context="default" policies are applied - all group="connection's user's group" policies are applied in undefined order - all user="connection's auth user" policies are applied in undefined order - all context="mandatory" policies are applied Policies applied later will override those applied earlier, when the policies overlap. Multiple policies with the same user/group/context are applied in the order they appear in the config file. name="resource name" mandatory Appears below a element and establishes a resource limit. For example: 64 512 send="messagename" receive="messagename" own="servicename" send_to="servicename" receive_from="servicename" user="username" group="groupname" Examples: send_to and receive_from mean that messages may not be sent to or received from the *owner* of the given service, not that they may not be sent *to that service name*. That is, if a connection owns services A, B, C, and sending to A is denied, sending to B or C will not work either. user and group denials mean that the given user or group may not connect to the message bus. For "servicename" or "messagename" or "username" or "groupname" the character "*" can be substituted, meaning "any." Complex globs like "foo.bar.*" aren't allowed for now because they'd be work to implement and maybe encourage sloppy security anyway. It does not make sense to deny a user or group inside a for a user or group; user/group denials can only be inside context="default" or context="required" policies. A single rule may specify both send and send_to, OR both receive and receive_from. In this case, the denial applies only if both attributes match the message being denied. e.g. would deny messages of the given name AND to the given service. send="messagename" receive="messagename" own="servicename" send_to="servicename" receive_from="servicename" user="username" group="groupname" Makes an exception to previous statements. Works just like but with the inverse meaning. An only punches holes in the equivalent , it does not unconditionally allow the message. For example: Here the policy still doesn't allow sending any messages, because no recipients have been allowed. You have to add to make the policy useful.