13189
|
1 |
<!DOCTYPE REFENTRY PUBLIC "-//Sun Microsystems//DTD DocBook V3.0-Based SolBook Subset V2.0//EN" [
|
|
2 |
<!--ArborText, Inc., 1988-1999, v.4002-->
|
|
3 |
<!ENTITY cmd "dbus-daemon">
|
|
4 |
<!ENTITY % commonents SYSTEM "smancommon.ent">
|
|
5 |
%commonents;
|
|
6 |
<!ENTITY % booktitles SYSTEM "booktitles.ent">
|
|
7 |
%booktitles;
|
|
8 |
<!ENTITY suncopy "Copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved.">
|
|
9 |
]>
|
|
10 |
<?Pub UDT _bookmark _target>
|
|
11 |
<?Pub Inc>
|
|
12 |
<refentry id="dbus-daemon-1">
|
|
13 |
<!-- %Z%%M% %I% %E% SMI; -->
|
|
14 |
<refmeta><refentrytitle>&cmd;</refentrytitle><manvolnum>3</manvolnum>
|
|
15 |
<refmiscinfo class="date">19 Nov 2007</refmiscinfo>
|
|
16 |
<refmiscinfo class="sectdesc">&man3;</refmiscinfo>
|
|
17 |
<refmiscinfo class="software">&release;</refmiscinfo>
|
|
18 |
<refmiscinfo class="arch">generic</refmiscinfo>
|
|
19 |
<refmiscinfo class="copyright">&suncopy;</refmiscinfo>
|
|
20 |
</refmeta>
|
|
21 |
<indexterm><primary>&cmd;</primary></indexterm><indexterm><primary>
|
|
22 |
Message bus daemon
|
|
23 |
</primary></indexterm><refnamediv id="dbus-daemon-1-name">
|
|
24 |
<refname>&cmd;</refname><refpurpose>
|
|
25 |
Message bus daemon
|
|
26 |
</refpurpose></refnamediv>
|
|
27 |
<refsynopsisdiv id="dbus-daemon-1-synp"><title>&synp-tt;</title>
|
|
28 |
<cmdsynopsis><command>&cmd;</command>
|
|
29 |
<arg choice="opt"><option>-config-file=<replaceable>file</replaceable></option></arg>
|
|
30 |
<arg choice="opt"><option>-fork</option> | <option>-nofork</option></arg>
|
|
31 |
<arg choice="opt"><option>-introspect</option></arg>
|
|
32 |
<arg choice="opt"><option>-print-address[=<replaceable>descriptor</replaceable>]</option></arg>
|
|
33 |
<arg choice="opt"><option>-print-pid[=<replaceable>descriptor</replaceable>]</option></arg>
|
|
34 |
<arg choice="opt"><option>-session</option></arg>
|
|
35 |
<arg choice="opt"><option>-system</option></arg>
|
|
36 |
<arg choice="opt"><option>-version</option></arg>
|
|
37 |
</cmdsynopsis></refsynopsisdiv>
|
|
38 |
<refsect1 id="dbus-daemon-1-desc"><title>&desc-tt;</title>
|
|
39 |
<para>
|
|
40 |
&cmd; is the D\-Bus message bus daemon. See
|
|
41 |
<literal>http://www.freedesktop.org/software/dbus/</literal>
|
|
42 |
for more information. D\-Bus is first a library that provides one\-to\-one
|
|
43 |
communication between any two applications; &cmd; is an application that uses
|
|
44 |
this library to implement a message bus daemon. Multiple programs connect to
|
|
45 |
the message bus daemon and can exchange messages with one another.
|
|
46 |
</para>
|
|
47 |
<para>
|
|
48 |
There are two standard message bus instances. &cmd; is used for both of these
|
|
49 |
instances, but with a different configuration file.
|
|
50 |
</para>
|
|
51 |
<itemizedlist>
|
|
52 |
<listitem><para>
|
|
53 |
systemwide message bus - Disabled and not supported on Solaris, but installed
|
|
54 |
on many systems as the "messagebus" init service. Note that the
|
|
55 |
<option>-system</option> option is equivalent to:
|
|
56 |
</para>
|
|
57 |
<para>
|
|
58 |
"<option>-config\-file=/etc/dbus\-1/system.conf</option>"
|
|
59 |
</para></listitem>
|
|
60 |
<listitem><para>
|
|
61 |
per-user-login-session message bus - Enabled and supported on Solaris, and
|
|
62 |
started each time a user logs in. Note that the
|
|
63 |
<option>-session</option> option is equivalent to:
|
|
64 |
</para>
|
|
65 |
<para>
|
|
66 |
"<option>-config\-file=/etc/dbus\-1/session.conf</option>"
|
|
67 |
</para></listitem>
|
|
68 |
</itemizedlist>
|
|
69 |
<para>
|
|
70 |
By creating additional configuration files and using the
|
|
71 |
<option>-config\-file</option> option, additional special-purpose message bus
|
|
72 |
daemons could be created.
|
|
73 |
</para>
|
|
74 |
<para>
|
|
75 |
On Solaris, D\-Bus is configured with the systemwide message bus disabled.
|
|
76 |
The systemwide message bus is not used by any applications that are currently
|
|
77 |
shipped with Solaris.
|
|
78 |
</para>
|
|
79 |
<para>
|
|
80 |
The systemwide daemon is normally launched by an init script, standardly called
|
|
81 |
simply "messagebus".
|
|
82 |
</para>
|
|
83 |
<para>
|
|
84 |
The systemwide daemon is largely used for broadcasting system events, such as
|
|
85 |
changes to the printer queue, or adding/removing devices.
|
|
86 |
</para>
|
|
87 |
<para>
|
|
88 |
The per-session daemon is used for various interprocess communication among
|
|
89 |
desktop applications (however, it is not tied to X or the GUI in any way).
|
|
90 |
</para>
|
|
91 |
<para>
|
|
92 |
SIGHUP will cause the D\-Bus daemon to PARTIALLY reload its configuration file
|
|
93 |
and to flush its user/group information caches. Some configuration changes
|
|
94 |
would require kicking all apps off the bus; so they will only take effect if
|
|
95 |
you restart the daemon. Policy changes should take effect with SIGHUP.
|
|
96 |
</para>
|
|
97 |
</refsect1>
|
|
98 |
<refsect1 id="dbus-daemon-1-opts"><title>&opts-tt;</title>
|
|
99 |
<para>The following options are supported:</para>
|
|
100 |
<variablelist termlength="wholescreen">
|
|
101 |
<varlistentry>
|
|
102 |
<term><option>-config-file=<replaceable>file</replaceable></option></term>
|
|
103 |
<listitem><para>
|
|
104 |
Use the given configuration <replaceable>file</replaceable>.
|
|
105 |
</para>
|
|
106 |
</listitem></varlistentry>
|
|
107 |
<varlistentry>
|
|
108 |
<term><option>-fork</option></term>
|
|
109 |
<listitem><para>
|
|
110 |
Force the message bus to fork and become a daemon, regardless of configuration
|
|
111 |
file settings.
|
|
112 |
</para>
|
|
113 |
</listitem></varlistentry>
|
|
114 |
<varlistentry>
|
|
115 |
<term><option>-introspect</option></term>
|
|
116 |
<listitem><para>
|
|
117 |
Print introspect data and exit.
|
|
118 |
</para>
|
|
119 |
</listitem></varlistentry>
|
|
120 |
<varlistentry>
|
|
121 |
<term><option>-nofork</option></term>
|
|
122 |
<listitem><para>
|
|
123 |
Avoid running the message bus as a daemon, regardless of configuration file
|
|
124 |
settings.
|
|
125 |
</para>
|
|
126 |
</listitem></varlistentry>
|
|
127 |
<varlistentry>
|
|
128 |
<term><option>-print-address[=<replaceable>descriptor</replaceable>]</option></term>
|
|
129 |
<listitem><para>
|
|
130 |
Print the address of the message bus to standard output, or to the given file
|
|
131 |
<replaceable>descriptor</replaceable>. This is used by programs that launch
|
|
132 |
the message bus.
|
|
133 |
</para>
|
|
134 |
</listitem></varlistentry>
|
|
135 |
<varlistentry>
|
|
136 |
<term><option>-print-pid[=<replaceable>descriptor</replaceable>]</option></term>
|
|
137 |
<listitem><para>
|
|
138 |
Print the process ID of the message bus to standard output, or to the given
|
|
139 |
file <replaceable>descriptor</replaceable>. This is used by programs that
|
|
140 |
launch the message bus.
|
|
141 |
</para>
|
|
142 |
</listitem></varlistentry>
|
|
143 |
<varlistentry>
|
|
144 |
<term><option>-session</option></term>
|
|
145 |
<listitem><para>
|
|
146 |
Use the standard configuration file for the per-login-session message bus.
|
|
147 |
</para>
|
|
148 |
</listitem></varlistentry>
|
|
149 |
<varlistentry>
|
|
150 |
<term><option>-system</option></term>
|
|
151 |
<listitem><para>
|
|
152 |
Use the standard configuration file for the systemwide message bus.
|
|
153 |
</para>
|
|
154 |
</listitem></varlistentry>
|
|
155 |
<varlistentry>
|
|
156 |
<term><option>-version</option></term>
|
|
157 |
<listitem><para>
|
|
158 |
Print the version of the daemon.
|
|
159 |
</para>
|
|
160 |
</listitem></varlistentry>
|
|
161 |
</variablelist></refsect1>
|
|
162 |
<refsect1 id="dbus-daemon-1-exde"><title>&exde-tt;</title>
|
|
163 |
<refsect2>
|
|
164 |
<title>CONFIGURATION FILE</title>
|
|
165 |
<para>
|
|
166 |
A message bus daemon has a configuration file that specializes it for a
|
|
167 |
particular application. For example, one configuration file might set up the
|
|
168 |
message bus to be a systemwide message bus, while another might set it
|
|
169 |
up to be a per-user-login-session bus.
|
|
170 |
</para>
|
|
171 |
<para>
|
|
172 |
The configuration file also establishes resource limits, security parameters,
|
|
173 |
and so forth.
|
|
174 |
</para>
|
|
175 |
<para>
|
|
176 |
The configuration file is not part of any interoperability specification and
|
|
177 |
its backward compatibility is not guaranteed; this document is documentation,
|
|
178 |
not specification.
|
|
179 |
</para>
|
|
180 |
<para>
|
|
181 |
The standard systemwide and per-session message bus setups are configured in
|
|
182 |
the files "<filename>/etc/dbus-1/system.conf</filename>" and
|
|
183 |
"<filename>/etc/dbus-1/session.conf</filename>". These files normally
|
|
184 |
<include> a <filename>system-local.conf</filename> or
|
|
185 |
<filename>session-local.conf</filename>; you can put local overrides in those
|
|
186 |
files to avoid modifying the primary configuration files.
|
|
187 |
</para>
|
|
188 |
<para>
|
|
189 |
The configuration file is an XML document. It must have the following doctype
|
|
190 |
declaration:
|
|
191 |
</para>
|
|
192 |
<screen>
|
|
193 |
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D\-Bus Bus Configuration 1.0//EN"
|
|
194 |
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
|
|
195 |
</screen>
|
|
196 |
<para>
|
|
197 |
The following elements may be present in the configuration file.
|
|
198 |
Note that some configuration file options are only meaningful with
|
|
199 |
the systemwide message bus, which is disabled on Solaris. Such options
|
|
200 |
are only documented for reference.
|
|
201 |
</para>
|
|
202 |
<para>
|
|
203 |
<busconfig>
|
|
204 |
</para>
|
|
205 |
<para>
|
|
206 |
Root element.
|
|
207 |
</para>
|
|
208 |
<para>
|
|
209 |
<type>
|
|
210 |
</para>
|
|
211 |
<para>
|
|
212 |
The well-known type of the message bus. Currently known values are "system"
|
|
213 |
and "session"; if other values are set, they should be either added to the
|
|
214 |
D\-Bus specification, or namespaced. The last <type> element "wins"
|
|
215 |
(previous values are ignored).
|
|
216 |
</para>
|
|
217 |
<para>
|
|
218 |
Example: <type>session</type>
|
|
219 |
</para>
|
|
220 |
<para>
|
|
221 |
<include>
|
|
222 |
</para>
|
|
223 |
<para>
|
|
224 |
Include a file <include>filename.conf</include> at this point. If
|
|
225 |
the filename is relative, it is located relative to the configuration file
|
|
226 |
doing the including.
|
|
227 |
</para>
|
|
228 |
<para>
|
|
229 |
<include> has an optional attribute "ignore_missing=(yes|no)" which
|
|
230 |
defaults to "no" if not provided. This attribute controls whether it is a
|
|
231 |
fatal error for the included file to be absent.
|
|
232 |
</para>
|
|
233 |
<para>
|
|
234 |
<includedir>
|
|
235 |
</para>
|
|
236 |
<para>
|
|
237 |
Include all files in <includedir>foo.d</includedir> at this point.
|
|
238 |
Files in the directory are included in undefined order. Only files ending in
|
|
239 |
".conf" are included.
|
|
240 |
</para>
|
|
241 |
<para>
|
|
242 |
This is intended to allow extension of the system bus by particular packages.
|
|
243 |
For example, if CUPS wants to be able to send out notification of printer queue
|
|
244 |
changes, it could install a file to /etc/dbus-1/system.d that allowed all apps
|
|
245 |
to receive this message and allowed the printer daemon user to send it.
|
|
246 |
</para>
|
|
247 |
<para>
|
|
248 |
<user>
|
|
249 |
</para>
|
|
250 |
<para>
|
|
251 |
The user account the daemon should run as, as either a username or a UID.
|
|
252 |
If the daemon cannot change to this UID on startup, it will exit. If this
|
|
253 |
element is not present, the daemon will not change or care about its UID.
|
|
254 |
</para>
|
|
255 |
<para>
|
|
256 |
The last <user> entry in the file "wins", the others are ignored.
|
|
257 |
</para>
|
|
258 |
<para>
|
|
259 |
The user is changed after the bus has completed initialization. So sockets
|
|
260 |
etc. will be created before changing user, but no data will be read from
|
|
261 |
clients before changing user. This means that sockets and PID files can be
|
|
262 |
created in a location that requires root privileges for writing.
|
|
263 |
</para>
|
|
264 |
<para>
|
|
265 |
<fork>
|
|
266 |
</para>
|
|
267 |
<para>
|
|
268 |
If present, the bus daemon becomes a real daemon (forks into the background,
|
|
269 |
etc.). This is generally used rather than the <option>-fork</option> command
|
|
270 |
line option.
|
|
271 |
</para>
|
|
272 |
<para>
|
|
273 |
<listen>
|
|
274 |
</para>
|
|
275 |
<para>
|
|
276 |
Add an address that the bus should listen on. The address is in the standard
|
|
277 |
D\-Bus format that contains a transport name plus possible parameters/options.
|
|
278 |
</para>
|
|
279 |
<screen>
|
|
280 |
Example: <listen>unix:path=/tmp/foo</listen>
|
|
281 |
Example: <listen>tcp:host=localhost,port=1234</listen>
|
|
282 |
</screen>
|
|
283 |
<para>
|
|
284 |
If there are multiple <listen> elements, then the bus listens on multiple
|
|
285 |
addresses. The bus will pass its address to started services or other
|
|
286 |
interested parties with the last address given in <listen> first. That
|
|
287 |
is, apps will try to connect to the last <listen> address first.
|
|
288 |
</para>
|
|
289 |
<para>
|
|
290 |
tcp sockets can accept IPv4 addresses, IPv6 addresses or hostnames. If a
|
|
291 |
hostname resolves to multiple addresses, the server will bind to all of them.
|
|
292 |
The family=ipv4 or family=ipv6 options can be used to force it to bind to a
|
|
293 |
subset of addresses.
|
|
294 |
</para>
|
|
295 |
<screen>
|
|
296 |
Example:
|
|
297 |
<listen>tcp:host=localhost,port=0,family=ipv4</listen>
|
|
298 |
</screen>
|
|
299 |
<para>
|
|
300 |
A special case is using a port number of zero (or omitting the port), which
|
|
301 |
means to choose an available port selected by the operating system. The port
|
|
302 |
number chosen can be obtained with the <option>-print-address</option> command
|
|
303 |
line parameter and will be present in other cases where the server reports its
|
|
304 |
own address, such as when DBUS_SESSION_BUS_ADDRESS is set.
|
|
305 |
</para>
|
|
306 |
<screen>
|
|
307 |
Example: <listen>tcp:host=localhost,port=0</listen>
|
|
308 |
</screen>
|
|
309 |
<para>
|
|
310 |
tcp addresses also allow a bind=hostname option, which will override the host
|
|
311 |
option specifying what address to bind to, without changing the address
|
|
312 |
reported by the bus. The bind option can also take a special name '*' to
|
|
313 |
cause the bus to listen on all local address (INADDR_ANY). The specified host
|
|
314 |
should be a valid name of the local machine or weird stuff will happen.
|
|
315 |
</para>
|
|
316 |
<screen>
|
|
317 |
Example: <listen>tcp:host=localhost,bind=*,port=0</listen>
|
|
318 |
</screen>
|
|
319 |
<para>
|
|
320 |
<auth>
|
|
321 |
</para>
|
|
322 |
<para>
|
|
323 |
Lists permitted authorization mechanisms. If this element does not exist, then
|
|
324 |
all known mechanisms are allowed. If there are multiple <auth> elements,
|
|
325 |
all the listed mechanisms are allowed. The order in which mechanisms are
|
|
326 |
listed is not meaningful.
|
|
327 |
</para>
|
|
328 |
<screen>
|
|
329 |
Example: <auth>EXTERNAL</auth>
|
|
330 |
Example: <auth>DBUS_COOKIE_SHA1</auth>
|
|
331 |
</screen>
|
|
332 |
<para>
|
|
333 |
<servicedir>
|
|
334 |
</para>
|
|
335 |
<para>
|
|
336 |
Adds a directory to scan for <filename>.service</filename> files. Directories
|
|
337 |
are scanned starting with the last to appear in the config file (the first
|
|
338 |
<filename>.service</filename> file found that provides a particular service
|
|
339 |
will be used).
|
|
340 |
</para>
|
|
341 |
<para>
|
|
342 |
Service files tell the bus how to automatically start a program. They are
|
|
343 |
primarily used with the per-user-session bus, not the systemwide bus.
|
|
344 |
</para>
|
|
345 |
<para>
|
|
346 |
<standard session servicedirs/>
|
|
347 |
</para>
|
|
348 |
<para>
|
|
349 |
<standard_session_servicedirs/> is equivalent to specifying a series of
|
|
350 |
<servicedir/> elements for each of the data directories in the "XDG Base
|
|
351 |
Directory Specification" with the subdirectory "dbus-1/services", so for
|
|
352 |
example "/usr/share/dbus-1/services" would be among the directories searched.
|
|
353 |
</para>
|
|
354 |
<para>
|
|
355 |
The "XDG Base Directory Specification" should be found at
|
|
356 |
<literal>http://freedesktop.org/wiki/Standards/basedir-spec</literal>.
|
|
357 |
</para>
|
|
358 |
<para>
|
|
359 |
The <standard_session_servicedirs/> option is only relevant to the
|
|
360 |
per-user-session bus daemon defined in
|
|
361 |
<filename>/etc/dbus\-1/session.conf</filename>. Putting it in any other
|
|
362 |
configuration file would probably be nonsense.
|
|
363 |
</para>
|
|
364 |
<para>
|
|
365 |
<standard system servicedirs/>
|
|
366 |
</para>
|
|
367 |
<para>
|
|
368 |
<standard_system_servicedirs/> specifies the standard systemwide
|
|
369 |
activation directories that should be searched for service files. This option
|
|
370 |
defaults to <filename>/usr/share/dbus-1/system-services</filename>.
|
|
371 |
</para>
|
|
372 |
<para>
|
|
373 |
The <standard_system_servicedirs/> option is only relevant
|
|
374 |
to the per-system bus daemon defined in
|
|
375 |
<filename>/etc/dbus\-1/system.conf</filename>. Putting it in any other
|
|
376 |
configuration file would probably be nonsense.
|
|
377 |
</para>
|
|
378 |
<para>
|
|
379 |
<servicehelper/>
|
|
380 |
</para>
|
|
381 |
<para>
|
|
382 |
<servicehelper/> specifies the setuid helper that is used to launch
|
|
383 |
system daemons with an alternate user. Typically this would be the
|
|
384 |
<command>dbus-daemon-launch-helper</command> executable. Because the
|
|
385 |
systemwide message bus is disabled on Solaris, the
|
|
386 |
<command>dbus-daemon-launch-helper</command> executable is not distributed
|
|
387 |
with Solaris.
|
|
388 |
</para>
|
|
389 |
<para>
|
|
390 |
The <servicehelper/> option is only relevant to the per-system bus
|
|
391 |
daemon defined in <filename>/etc/dbus-1/system.conf</filename>. Putting it in
|
|
392 |
any other configuration file would probably be nonsense.
|
|
393 |
</para>
|
|
394 |
<para>
|
|
395 |
<limit>
|
|
396 |
</para>
|
|
397 |
<para>
|
|
398 |
<limit> establishes a resource limit. For example:
|
|
399 |
</para>
|
|
400 |
<screen>
|
|
401 |
<limit name="max_message_size">64</limit>
|
|
402 |
<limit name="max_completed_connections">512</limit>
|
|
403 |
</screen>
|
|
404 |
<para>
|
|
405 |
The name attribute is mandatory. Available limit names are:
|
|
406 |
</para>
|
|
407 |
|
|
408 |
<screen>
|
|
409 |
"max_incoming_bytes" : total size in bytes
|
|
410 |
of messages incoming
|
|
411 |
from a single
|
|
412 |
connection
|
|
413 |
"max_outgoing_bytes" : total size in bytes
|
|
414 |
of messages queued up
|
|
415 |
for a single
|
|
416 |
connection
|
|
417 |
"max_message_size" : max size of a single
|
|
418 |
message in bytes
|
|
419 |
"service_start_timeout" : milliseconds
|
|
420 |
(thousandths) until
|
|
421 |
a started service has
|
|
422 |
to connect
|
|
423 |
"auth_timeout" : milliseconds
|
|
424 |
(thousandths) a
|
|
425 |
connection is given
|
|
426 |
to authenticate
|
|
427 |
"max_completed_connections" : max number of
|
|
428 |
authenticated
|
|
429 |
connections
|
|
430 |
"max_incomplete_connections" : max number of
|
|
431 |
unauthenticated
|
|
432 |
connections
|
|
433 |
"max_connections_per_user" : max number of
|
|
434 |
completed connections
|
|
435 |
from the same user
|
|
436 |
"max_pending_service_starts" : max number of service
|
|
437 |
launches in progress
|
|
438 |
at the same time
|
|
439 |
"max_names_per_connection" : max number of names a
|
|
440 |
single connection can
|
|
441 |
own
|
|
442 |
"max_match_rules_per_connection" : max number of match
|
|
443 |
rules for a single
|
|
444 |
connection
|
|
445 |
"max_replies_per_connection" : max number of pending
|
|
446 |
method replies per
|
|
447 |
connection (number of
|
|
448 |
calls-in-progress)
|
|
449 |
"reply_timeout" : milliseconds
|
|
450 |
(thousandths) until a
|
|
451 |
method call times out
|
|
452 |
</screen>
|
|
453 |
<para>
|
|
454 |
The max incoming/outgoing queue sizes allow a new message to be queued if one
|
|
455 |
byte remains below the max. So you can in fact exceed the max by
|
|
456 |
max_message_size.
|
|
457 |
</para>
|
|
458 |
<para>
|
|
459 |
max_completed_connections divided by max_connections_per_user is the number of
|
|
460 |
users that can work together to denial-of-service all other users by using up
|
|
461 |
all connections on the systemwide bus.
|
|
462 |
</para>
|
|
463 |
<para>
|
|
464 |
Limits are normally only of interest on the systemwide bus, not the user
|
|
465 |
session buses.
|
|
466 |
</para>
|
|
467 |
<para>
|
|
468 |
<policy>
|
|
469 |
</para>
|
|
470 |
<para>
|
|
471 |
The <policy> element defines a security policy to be applied to a
|
|
472 |
particular set of connections to the bus. A policy is made up of <allow>
|
|
473 |
and <deny> elements. Policies are normally used with the systemwide bus;
|
|
474 |
they are analogous to a firewall in that they allow expected traffic and
|
|
475 |
prevent unexpected traffic.
|
|
476 |
</para>
|
|
477 |
<para>
|
|
478 |
The <policy> element has one of three attributes:
|
|
479 |
</para>
|
|
480 |
<itemizedlist>
|
|
481 |
<listitem><para>
|
|
482 |
context="(default|mandatory)"
|
|
483 |
</para></listitem>
|
|
484 |
<listitem><para>
|
|
485 |
user="username or userid"
|
|
486 |
</para></listitem>
|
|
487 |
<listitem><para>
|
|
488 |
group="group name or gid"
|
|
489 |
</para></listitem>
|
|
490 |
</itemizedlist>
|
|
491 |
<para>
|
|
492 |
Policies are applied to a connection as follows:
|
|
493 |
</para>
|
|
494 |
<itemizedlist>
|
|
495 |
<listitem><para>
|
|
496 |
all context="default" policies are applied
|
|
497 |
</para></listitem>
|
|
498 |
<listitem><para>
|
|
499 |
all group="connection's user's group" policies are applied
|
|
500 |
in undefined order
|
|
501 |
</para></listitem>
|
|
502 |
<listitem><para>
|
|
503 |
all user="connection's auth user" policies are applied
|
|
504 |
in undefined order
|
|
505 |
</para></listitem>
|
|
506 |
<listitem><para>
|
|
507 |
all context="mandatory" policies are applied
|
|
508 |
</para></listitem>
|
|
509 |
</itemizedlist>
|
|
510 |
<para>
|
|
511 |
Policies applied later will override those applied earlier, when the policies
|
|
512 |
overlap. Multiple policies with the same user/group/context are applied in the
|
|
513 |
order they appear in the config file.
|
|
514 |
</para>
|
|
515 |
<para>
|
|
516 |
<deny> and <allow>
|
|
517 |
</para>
|
|
518 |
<para>
|
|
519 |
A <deny> element appears below a <policy> element and prohibits
|
|
520 |
some action. The <allow> element makes an exception to previous
|
|
521 |
<deny> statements, and works just like <deny> but with the inverse
|
|
522 |
meaning.
|
|
523 |
</para>
|
|
524 |
<para>
|
|
525 |
The possible attributes of these elements are:
|
|
526 |
</para>
|
|
527 |
<screen>
|
|
528 |
send_interface="interface_name"
|
|
529 |
send_member="method_or_signal_name"
|
|
530 |
send_error="error_name"
|
|
531 |
send_destination="name"
|
|
532 |
send_type="method_call" | "method_return" | "signal" | "error"
|
|
533 |
send_path="/path/name"
|
|
534 |
</screen>
|
|
535 |
<screen>
|
|
536 |
receive_interface="interface_name"
|
|
537 |
receive_member="method_or_signal_name"
|
|
538 |
receive_error="error_name"
|
|
539 |
receive_sender="name"
|
|
540 |
receive_type="method_call" | "method_return" | "signal" | "error"
|
|
541 |
receive_path="/path/name"
|
|
542 |
</screen>
|
|
543 |
<screen>
|
|
544 |
send_requested_reply="true" | "false"
|
|
545 |
receive_requested_reply="true" | "false"
|
|
546 |
</screen>
|
|
547 |
<screen>
|
|
548 |
eavesdrop="true" | "false"
|
|
549 |
</screen>
|
|
550 |
<screen>
|
|
551 |
own="name"
|
|
552 |
user="username"
|
|
553 |
group="groupname"
|
|
554 |
</screen>
|
|
555 |
<para>
|
|
556 |
Examples:
|
|
557 |
</para>
|
|
558 |
<screen>
|
|
559 |
<deny send_interface="org.freedesktop.System" send_member="Reboot"/>
|
|
560 |
<deny receive_interface="org.freedesktop.System" receive_member="Reboot"/>
|
|
561 |
<deny own="org.freedesktop.System"/>
|
|
562 |
<deny send_destination="org.freedesktop.System"/>
|
|
563 |
<deny receive_sender="org.freedesktop.System"/>
|
|
564 |
<deny user="john"/>
|
|
565 |
<deny group="enemies"/>
|
|
566 |
</screen>
|
|
567 |
<para>
|
|
568 |
The <deny> element's attributes determine whether the deny "matches" a
|
|
569 |
particular action. If it matches, the action is denied (unless later rules in
|
|
570 |
the config file allow it).
|
|
571 |
</para>
|
|
572 |
<para>
|
|
573 |
send_destination and receive_sender rules mean that messages may not be sent to
|
|
574 |
or received from the *owner* of the given name, not that they may not be sent
|
|
575 |
*to that name*. That is, if a connection owns services A, B, C, and sending to
|
|
576 |
A is denied, sending to B or C will not work either.
|
|
577 |
</para>
|
|
578 |
<para>
|
|
579 |
The other send_* and receive_* attributes are purely textual/by-value matches
|
|
580 |
against the given field in the message header.
|
|
581 |
</para>
|
|
582 |
<para>
|
|
583 |
"Eavesdropping" occurs when an application receives a message that was
|
|
584 |
explicitly addressed to a name the application does not own, or is a reply to
|
|
585 |
such a message. Eavesdropping thus only applies to messages that are addressed
|
|
586 |
to services and replies to such messages (i.e. it does not apply to signals).
|
|
587 |
</para>
|
|
588 |
<para>
|
|
589 |
For <allow>, eavesdrop="true" indicates that the rule matches even when
|
|
590 |
eavesdropping. eavesdrop="false" is the default and means that the rule only
|
|
591 |
allows messages to go to their specified recipient. For <deny>,
|
|
592 |
eavesdrop="true" indicates that the rule matches only when eavesdropping.
|
|
593 |
eavesdrop="false" is the default for <deny> also, but here it means that
|
|
594 |
the rule applies always, even when not eavesdropping. The eavesdrop attribute
|
|
595 |
can only be combined with send and receive rules (with send_* and receive_*
|
|
596 |
attributes).
|
|
597 |
</para>
|
|
598 |
<para>
|
|
599 |
The [send|receive]_requested_reply attribute works similarly to the eavesdrop
|
|
600 |
attribute. It controls whether the <deny> or <allow> matches a
|
|
601 |
reply that is expected (corresponds to a previous method call message). This
|
|
602 |
attribute only makes sense for reply messages (errors and method returns), and
|
|
603 |
is ignored for other message types.
|
|
604 |
</para>
|
|
605 |
<para>
|
|
606 |
For <allow>, [send|receive]_requested_reply="true" is the default and
|
|
607 |
indicates that only requested replies are allowed by the rule.
|
|
608 |
[send|receive]_requested_reply="false" means that the rule allows any reply
|
|
609 |
even if unexpected.
|
|
610 |
</para>
|
|
611 |
<para>
|
|
612 |
For <deny>, [send|receive]_requested_reply="false" is the default but
|
|
613 |
indicates that the rule matches only when the reply was not requested.
|
|
614 |
[send|receive]_requested_reply="true" indicates that the rule applies always,
|
|
615 |
regardless of pending reply state.
|
|
616 |
</para>
|
|
617 |
<para>
|
|
618 |
user and group denials mean that the given user or group may not connect to the
|
|
619 |
message bus.
|
|
620 |
</para>
|
|
621 |
<para>
|
|
622 |
For "name", "username", "groupname", etc. the character "*" can be substituted,
|
|
623 |
meaning "any." Complex globs like "foo.bar.*" aren't allowed for now because
|
|
624 |
they would be work to implement and maybe encourage sloppy security anyway.
|
|
625 |
</para>
|
|
626 |
<para>
|
|
627 |
It does not make sense to deny a user or group inside a <policy> for
|
|
628 |
a user or group; user/group denials can only be inside context="default" or
|
|
629 |
context="mandatory" policies.
|
|
630 |
</para>
|
|
631 |
<para>
|
|
632 |
A single <deny> rule may specify combinations of attributes such as
|
|
633 |
send_destination and send_interface and send_type. In this case, the denial
|
|
634 |
applies only if both attributes match the message being denied. e.g. <deny
|
|
635 |
send_interface="foo.bar" send_destination="foo.blah"/> would deny messages
|
|
636 |
with the given interface AND the given bus name. To get an OR effect you
|
|
637 |
specify multiple <deny> rules.
|
|
638 |
</para>
|
|
639 |
<para>
|
|
640 |
You can't include both send_ and receive_ attributes on the same rule, since
|
|
641 |
"whether the message can be sent" and "whether it can be received" are
|
|
642 |
evaluated separately.
|
|
643 |
</para>
|
|
644 |
<para>
|
|
645 |
Be careful with send_interface/receive_interface, because the interface field
|
|
646 |
in messages is optional.
|
|
647 |
</para>
|
|
648 |
<para>
|
|
649 |
<selinux>
|
|
650 |
</para>
|
|
651 |
<para>
|
|
652 |
The <selinux> element contains settings related to Security Enhanced
|
|
653 |
Linux. More details below. Note, SELinux is not supported on Solaris.
|
|
654 |
</para>
|
|
655 |
<para>
|
|
656 |
<associate>
|
|
657 |
</para>
|
|
658 |
<para>
|
|
659 |
An <associate> element appears below an <selinux> element and
|
|
660 |
creates a mapping. Right now only one kind of association is possible:
|
|
661 |
</para>
|
|
662 |
<screen>
|
|
663 |
<associate own="org.freedesktop.Foobar" context="foo_t"/>
|
|
664 |
</screen>
|
|
665 |
<para>
|
|
666 |
This means that if a connection asks to own the name "org.freedesktop.Foobar"
|
|
667 |
then the source context will be the context of the connection and the target
|
|
668 |
context will be "foo_t" - see the short discussion of SELinux below.
|
|
669 |
</para>
|
|
670 |
<para>
|
|
671 |
Note, the context here is the target context when requesting a name, NOT the
|
|
672 |
context of the connection owning the name.
|
|
673 |
</para>
|
|
674 |
<para>
|
|
675 |
There is currently no way to set a default for owning any name, if we add this
|
|
676 |
syntax it will look like:
|
|
677 |
</para>
|
|
678 |
<screen>
|
|
679 |
<associate own="*" context="foo_t"/>
|
|
680 |
</screen>
|
|
681 |
<para>
|
|
682 |
If you find a reason this is useful, let the developers know. Right now the
|
|
683 |
default will be the security context of the bus itself.
|
|
684 |
</para>
|
|
685 |
<para>
|
|
686 |
If two <associate> elements specify the same name, the element appearing
|
|
687 |
later in the configuration file will be used.
|
|
688 |
</para>
|
|
689 |
</refsect2>
|
|
690 |
<refsect2>
|
|
691 |
<title>SELinux</title>
|
|
692 |
<para>
|
|
693 |
SELinux is not supported on Solaris. It is used with the systemwide bus
|
|
694 |
which is disabled on Solaris.
|
|
695 |
</para>
|
|
696 |
<para>
|
|
697 |
See <literal>http://www.nsa.gov/selinux/</literal> for full details on SELinux.
|
|
698 |
Some useful excerpts:
|
|
699 |
</para>
|
|
700 |
<variablelist termlength="xtranarrow">
|
|
701 |
<varlistentry>
|
|
702 |
<term></term>
|
|
703 |
<listitem>
|
|
704 |
<para>
|
|
705 |
Every subject (process) and object (e.g. file, socket, IPC object, etc) in the
|
|
706 |
system is assigned a collection of security attributes, known as a security
|
|
707 |
context. A security context contains all of the security attributes associated
|
|
708 |
with a particular subject or object that are relevant to the security policy.
|
|
709 |
</para>
|
|
710 |
</listitem></varlistentry>
|
|
711 |
<varlistentry>
|
|
712 |
<term></term>
|
|
713 |
<listitem>
|
|
714 |
<para>
|
|
715 |
In order to better encapsulate security contexts and to provide greater
|
|
716 |
efficiency, the policy enforcement code of SELinux typically handles security
|
|
717 |
identifiers (SIDs) rather than security contexts. A SID is an integer that is
|
|
718 |
mapped by the security server to a security context at runtime.
|
|
719 |
</para>
|
|
720 |
</listitem></varlistentry>
|
|
721 |
<varlistentry>
|
|
722 |
<term></term>
|
|
723 |
<listitem>
|
|
724 |
<para>
|
|
725 |
When a security decision is required, the policy enforcement code passes a pair
|
|
726 |
of SIDs (typically the SID of a subject and the SID of an object, but sometimes
|
|
727 |
a pair of subject SIDs or a pair of object SIDs), and an object security class
|
|
728 |
to the security server. The object security class indicates the kind of object,
|
|
729 |
e.g. a process, a regular file, a directory, a TCP socket, etc.
|
|
730 |
</para>
|
|
731 |
</listitem></varlistentry>
|
|
732 |
<varlistentry>
|
|
733 |
<term></term>
|
|
734 |
<listitem>
|
|
735 |
<para>
|
|
736 |
Access decisions specify whether or not a permission is granted for a given
|
|
737 |
pair of SIDs and class. Each object class has a set of associated permissions
|
|
738 |
defined to control operations on objects with that class.
|
|
739 |
</para>
|
|
740 |
</listitem></varlistentry>
|
|
741 |
</variablelist>
|
|
742 |
<para>
|
|
743 |
D\-Bus performs SELinux security checks in two places.
|
|
744 |
</para>
|
|
745 |
</listitem></varlistentry>
|
|
746 |
<para>
|
|
747 |
First, any time a message is routed from one connection to another connection,
|
|
748 |
the bus daemon will check permissions with the security context of the first
|
|
749 |
connection as source, security context of the second connection as target,
|
|
750 |
object class "dbus" and requested permission "send_msg".
|
|
751 |
</para>
|
|
752 |
<para>
|
|
753 |
If a security context is not available for a connection (impossible when using
|
|
754 |
UNIX domain sockets), then the target context used is the context of the bus
|
|
755 |
daemon itself. There is currently no way to change this default, because we
|
|
756 |
are assuming that only UNIX domain sockets will be used to connect to the
|
|
757 |
systemwide bus. If this changes, we'll probably add a way to set the default
|
|
758 |
connection context.
|
|
759 |
</para>
|
|
760 |
<para>
|
|
761 |
Second, any time a connection asks to own a name, the bus daemon will check
|
|
762 |
permissions with the security context of the connection as source, the security
|
|
763 |
context specified for the name in the config file as target, object class
|
|
764 |
"dbus" and requested permission "acquire_svc".
|
|
765 |
</para>
|
|
766 |
<para>
|
|
767 |
The security context for a bus name is specified with the <associate>
|
|
768 |
element described earlier in this document. If a name has no security context
|
|
769 |
associated in the configuration file, the security context of the bus daemon
|
|
770 |
itself will be used.
|
|
771 |
</para>
|
|
772 |
</refsect2>
|
|
773 |
<refsect2>
|
|
774 |
<title>DEBUGGING</title>
|
|
775 |
<para>
|
|
776 |
If you are trying to figure out where your messages are going or why you are
|
|
777 |
not getting messages, there are several things you can try.
|
|
778 |
</para>
|
|
779 |
<para>
|
|
780 |
Remember that the system bus is heavily locked down and if you have not
|
|
781 |
installed a security policy file to allow your message through, it won't work.
|
|
782 |
For the session bus, this is not a concern.
|
|
783 |
</para>
|
|
784 |
<para>
|
|
785 |
The simplest way to figure out what's happening on the bus is to run the
|
|
786 |
<command>dbus-monitor</command> program, which comes with the D\-Bus package.
|
|
787 |
You can also send test messages with <command>dbus-send</command>. These
|
|
788 |
programs have their own man pages.
|
|
789 |
</para>
|
|
790 |
<para>
|
|
791 |
If you want to know what the daemon itself is doing, you might consider running
|
|
792 |
a separate copy of the daemon to test against. This will allow you to put the
|
|
793 |
daemon under a debugger, or run it with verbose output, without messing up your
|
|
794 |
real session and system daemons.
|
|
795 |
</para>
|
|
796 |
<para>
|
|
797 |
To run a separate test copy of the daemon, for example you might open a
|
|
798 |
terminal and type:
|
|
799 |
</para>
|
|
800 |
<screen>
|
|
801 |
DBUS_VERBOSE=1 &cmd; --session --print-address
|
|
802 |
</screen>
|
|
803 |
<para>
|
|
804 |
The test daemon address will be printed when the daemon starts. You will need
|
|
805 |
to copy-and-paste this address and use it as the value of the
|
|
806 |
DBUS_SESSION_BUS_ADDRESS environment variable when you launch the applications
|
|
807 |
you want to test. This will cause those applications to connect to your test
|
|
808 |
bus instead of the DBUS_SESSION_BUS_ADDRESS of your real session bus.
|
|
809 |
</para>
|
|
810 |
<para>
|
|
811 |
DBUS_VERBOSE=1 will have NO EFFECT unless your copy of D\-Bus was compiled with
|
|
812 |
verbose mode enabled. This is not recommended in production builds due to
|
|
813 |
performance impact. You may need to rebuild D\-Bus if your copy was not built
|
|
814 |
with debugging in mind. (DBUS_VERBOSE also affects the D\-Bus library and thus
|
|
815 |
applications using D\-Bus; it may be useful to see verbose output on both the
|
|
816 |
client side and from the daemon.)
|
|
817 |
</para>
|
|
818 |
<para>
|
|
819 |
If you want to get fancy, you can create a custom bus configuration for your
|
|
820 |
test bus (see the <filename>session.conf</filename> and
|
|
821 |
<filename>system.conf</filename> files that define the two default
|
|
822 |
configurations for example). This would allow you to specify a different
|
|
823 |
directory for <filename>.service</filename> files, for example.
|
|
824 |
</para>
|
|
825 |
</refsect2>
|
|
826 |
</refsect1>
|
|
827 |
<refsect1 id="dbus-daemon-1-exam"><title>&exam-tt;</title>
|
|
828 |
<example role="example">
|
|
829 |
<title>
|
|
830 |
Message bus daemon
|
|
831 |
</title>
|
|
832 |
<para><screen>example% <userinput>&cmd; </userinput></screen></para>
|
|
833 |
</example>
|
|
834 |
</refsect1>
|
|
835 |
<refsect1 id="dbus-daemon-1-envr"><title>&envr-tt;</title>
|
|
836 |
<para>
|
|
837 |
See
|
|
838 |
<citerefentry><refentrytitle>environ</refentrytitle><manvolnum>5</manvolnum></ci
|
|
839 |
terefentry>
|
|
840 |
for descriptions of the following environment variables:
|
|
841 |
</para>
|
|
842 |
<variablelist termlength="wholeline">
|
|
843 |
<varlistentry>
|
|
844 |
<term>DBUS_SESSION_BUS_ADDRESS</term>
|
|
845 |
<listitem><para>
|
|
846 |
The address of the login session message bus. If this variable is not set,
|
|
847 |
applications may also try to read the address from the X Window System root
|
|
848 |
window property _DBUS_SESSION_BUS_ADDRESS. The root window property
|
|
849 |
must have type STRING. The environment variable should have precedence over the
|
|
850 |
root window property.
|
|
851 |
</para>
|
|
852 |
</listitem></varlistentry>
|
|
853 |
<varlistentry>
|
|
854 |
<term>DBUS_VERBOSE</term>
|
|
855 |
<listitem><para>
|
|
856 |
Set DBUS_VERSION=1 to enable debugging, if D\-Bus was compiled with verbose
|
|
857 |
debug mode enabled.
|
|
858 |
</para>
|
|
859 |
</listitem></varlistentry>
|
|
860 |
</variablelist></refsect1>
|
|
861 |
<refsect1 id="dbus-daemon-1-exit"><title>&exit-tt;</title>
|
|
862 |
<para>The following exit values are returned:</para>
|
|
863 |
<variablelist termlength="xtranarrow">
|
|
864 |
<varlistentry>
|
|
865 |
<term><returnvalue>0</returnvalue></term>
|
|
866 |
<listitem><para>
|
|
867 |
Application exited successfully
|
|
868 |
</para>
|
|
869 |
</listitem></varlistentry>
|
|
870 |
<varlistentry>
|
|
871 |
<term><returnvalue>>0</returnvalue></term>
|
|
872 |
<listitem><para>
|
|
873 |
Application exited with failure
|
|
874 |
</para>
|
|
875 |
</listitem></varlistentry>
|
|
876 |
</variablelist></refsect1>
|
|
877 |
<refsect1 id="dbus-daemon-1-file"><title>&file-tt;</title>
|
|
878 |
<para>The following files are used by this application:</para>
|
|
879 |
<variablelist termlength="wholeline">
|
|
880 |
<varlistentry>
|
|
881 |
<term><filename>/usr/lib/&cmd;</filename></term>
|
|
882 |
<listitem><para>
|
|
883 |
Executable for &cmd;
|
|
884 |
</para>
|
|
885 |
</listitem></varlistentry>
|
|
886 |
<varlistentry>
|
|
887 |
<term><filename>/usr/share/dbus-1/services</filename></term>
|
|
888 |
<listitem><para>
|
|
889 |
Directory containing standard D\-Bus session services.
|
|
890 |
</para>
|
|
891 |
</listitem></varlistentry>
|
|
892 |
<varlistentry>
|
|
893 |
<term><filename>/usr/share/dbus-1/system-services</filename></term>
|
|
894 |
<listitem><para>
|
|
895 |
Directory containing standard D\-Bus systemwide services.
|
|
896 |
</para>
|
|
897 |
</listitem></varlistentry>
|
|
898 |
<varlistentry>
|
|
899 |
<term><filename>/etc/dbus-1/session.conf</filename></term>
|
|
900 |
<listitem><para>
|
|
901 |
Configuration file for D\-Bus session services.
|
|
902 |
</para>
|
|
903 |
</listitem></varlistentry>
|
|
904 |
<varlistentry>
|
|
905 |
<term><filename>/etc/dbus-1/system.conf</filename></term>
|
|
906 |
<listitem><para>
|
|
907 |
Configuration file for D\-Bus system services.
|
|
908 |
</para>
|
|
909 |
</listitem></varlistentry>
|
|
910 |
</variablelist></refsect1>
|
|
911 |
<refsect1 id="dbus-daemon-1-attr"><title>&attr-tt;</title>
|
|
912 |
<para>See <olink targetdocent="REFMAN5" localinfo="attributes-5"><citerefentry>
|
|
913 |
<refentrytitle>attributes</refentrytitle><manvolnum>5</manvolnum></citerefentry></olink>
|
|
914 |
for descriptions of the following attributes:</para>
|
|
915 |
<informaltable frame="all">
|
|
916 |
<tgroup cols="2" colsep="1" rowsep="1"><colspec colname="COLSPEC0" colwidth="1*">
|
|
917 |
<colspec colname="COLSPEC1" colwidth="1*">
|
|
918 |
<thead>
|
|
919 |
<row><entry align="center" valign="middle">ATTRIBUTE TYPE</entry><entry align="center"
|
|
920 |
valign="middle">ATTRIBUTE VALUE</entry></row>
|
|
921 |
</thead>
|
|
922 |
<tbody>
|
|
923 |
<row><entry>
|
|
924 |
<para>Availability</para>
|
|
925 |
</entry><entry>
|
|
926 |
<para>SUNWdbus</para>
|
|
927 |
</entry></row><row><entry colname="COLSPEC0">
|
|
928 |
<para>Interface stability</para>
|
|
929 |
</entry><entry colname="COLSPEC1">
|
|
930 |
<para>Volatile</para>
|
|
931 |
</entry></row>
|
|
932 |
</tbody>
|
|
933 |
</tgroup>
|
|
934 |
</informaltable>
|
|
935 |
</refsect1>
|
|
936 |
<refsect1 id="dbus-daemon-1-also"><title>&also-tt;</title>
|
|
937 |
<!--Reference to another man page-->
|
|
938 |
<!--Reference to a Help manual-->
|
|
939 |
<!--Reference to a book.-->
|
|
940 |
<para>
|
|
941 |
<citerefentry><refentrytitle>dbus-cleanup-sockets</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
|
|
942 |
<citerefentry><refentrytitle>dbus-launch</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
|
|
943 |
<citerefentry><refentrytitle>dbus-monitor</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
|
|
944 |
<citerefentry><refentrytitle>dbus-send</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
|
|
945 |
<citerefentry><refentrytitle>dbus-uuidgen</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
|
|
946 |
<citerefentry><refentrytitle>libdbus-glib-1</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
|
947 |
<citerefentry><refentrytitle>attributes</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
|
|
948 |
<citerefentry><refentrytitle>environ</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
|
949 |
</para>
|
|
950 |
</refsect1>
|
|
951 |
<refsect1 id="dbus-daemon-1-note"><title>¬e-tt;</title>
|
|
952 |
<para>
|
|
953 |
For authorship information refer to
|
|
954 |
<literal>http://www.freedesktop.org/software/dbus/doc/AUTHORS</literal>.
|
|
955 |
Updated by Brian Cameron, Sun Microsystems Inc., 2007.
|
|
956 |
</para>
|
|
957 |
<para>
|
|
958 |
Please send bug reports to the D\-Bus mailing list or bug
|
|
959 |
tracker, see
|
|
960 |
<literal>http://www.freedesktop.org/software/dbus/</literal>
|
|
961 |
</para>
|
|
962 |
</refsect1>
|
|
963 |
</refentry>
|