diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | doc/TODO | 41 | ||||
-rw-r--r-- | doc/config-file.txt | 154 |
3 files changed, 202 insertions, 0 deletions
@@ -1,3 +1,10 @@ +2003-03-18 Havoc Pennington <hp@redhat.com> + + * doc/TODO: some notes on high-level todo items. Little nitpick + stuff is all in @todo, so no need to add it here. + + * doc/config-file.txt: some notes on how config file might look + 2003-03-18 Anders Carlsson <andersca@codefactory.se> * configure.in: 0.6 diff --git a/doc/TODO b/doc/TODO new file mode 100644 index 00000000..dffb7389 --- /dev/null +++ b/doc/TODO @@ -0,0 +1,41 @@ + + - Service and message names should be more carefully restricted; + they should have a max length, may not be an empty string, + and perhaps should not be allowed to be a glob such as "*" since + the config file could conveniently use such notation. + + Suggest requiring length > 0, length < max, + name contains at least one ".", no initial ".", and valid UTF-8. + That would prohibit plain "*" but not "foo.bar.baz.operator*" + + For maximum convenience from all programming languages, we could go + further and just categorically ban nearly all non-alphanumeric + characters. + + - Message matching rules (so broadcasts can be filtered) need sorting + out. + + - How we will handle DCOP needs sorting out. Among other things, we + need to check that service and service-ownership semantics map to DCOP + reasonably well. + + - Activation needs some careful additional thinking-through. + + - Recursive/composite/etc. types and associated API, see mailing list. + + - dbus-bus.h should contain convenience API for connecting to system + and login-session message buses (automatically handling env + variables etc.) + + - Configuration file (working on that now) + + - Property list feature on message bus (list of properties associated + with a connection). May also include message matching rules + that involve the properties of the source or destination + connection. + + - Implement all the needed resource limits to keep clients from + killing the message bus. + + + diff --git a/doc/config-file.txt b/doc/config-file.txt new file mode 100644 index 00000000..c78a65b7 --- /dev/null +++ b/doc/config-file.txt @@ -0,0 +1,154 @@ + +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: + + <!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" + "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> + +Elements: + + <busconfig> + + Root element. + + <include> + ignore_missing="(yes|no)" optional attribute, defaults to no + + Include a file <include>filename.conf</include> at this point. + + <user> + + 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 <user> entry in the file "wins", the others are ignored. + + <listen> + 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: <listen address="unix:path=/tmp/foo"/> + + If there are multiple <listen> elements, then the bus listens + on multiple addresses. + + <auth> + + Lists permitted authorization mechanisms. If this element doesn't + exist, then all known mechanisms are allowed. If there are + multiple <auth> elements, the last one wins (they are not merged). + + <policy> + context="(default|required)" 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 <limit>, + <allow>, <deny> 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 + - all user="connection's auth user" policies are applied + - all context="required" 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. + + <limit> + name="resource name" mandatory + + Appears below a <policy> element and establishes a resource + limit. For example: + <limit name="max_message_size">64</limit> + <limit name="max_connections">512</limit> + + <deny> + send="messagename" + receive="messagename" + own="servicename" + send_to="servicename" + receive_from="servicename" + + Examples: + <deny send="org.freedesktop.System.Reboot"/> + <deny receive="org.freedesktop.System.Reboot"/> + <deny own="org.freedesktop.System"/> + <deny send_to="org.freedesktop.System"/> + <deny receive_from="org.freedesktop.System"/> + + 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. + + For "servicename" or "messagename" 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. + + FIXME should we allow send/send_to and receive/receive_from + to both be specified, in which case they would be ANDed together? + e.g. <deny send="foo.bar" send_to="foo.blah"/> would deny + messages of the given name AND to the given service. + + Probably need to see how hard/slow all this will be to implement. + + <allow> + send="messagename" + receive="messagename" + own="servicename" + send_to="servicename" + receive_from="servicename" + + Makes an exception to previous <deny> statements. Works + just like <deny> but with the inverse meaning. + + An <allow> only punches holes in the equivalent <deny>, it does + not unconditionally allow the message. For example: + + <deny send="*"/> + <deny send_to="*"/> + <allow send="org.foo.Bar"/> + + Here the policy still doesn't allow sending any messages, because + no recipients have been allowed. You have to add + <allow send_to="something"/> to make the policy useful. + + + + + + + + + + + +
\ No newline at end of file |