Bash Cures Cancer
Learn the UNIX/Linux command line

Home     Man Pages     SpamDefeator


dbus-daemon-1(1)					     dbus-daemon-1(1)



NAME
       dbus-daemon-1 - Message bus daemon

SYNOPSIS
       dbus-daemon-1 dbus-daemon-1 [--version] [--session] [--system] [--con-
       fig-file=FILE]  [--print-address[=DESCRIPTOR]]  [--print-pid[=DESCRIP-
       TOR]] [--fork]


DESCRIPTION
       dbus-daemon-1	is    the    D-BUS    message	 bus	daemon.	  See
       http://www.freedesktop.org/software/dbus/ for more  information	about
       the  big	 picture.  D-BUS  is first a library that provides one-to-one
       communication between any two applications; dbus-daemon-1 is an appli-
       cation  that uses this library to implement a message bus daemon. Mul-
       tiple programs connect to the message bus daemon and can exchange mes-
       sages with one another.


       There  are  two standard message bus instances: the systemwide message
       bus (installed on many systems as the "messagebus"  service)  and  the
       per-user-login-session message bus (started each time a user logs in).
       dbus-daemon-1 is used for both of these instances, but with a  differ-
       ent configuration file.


       The  --session option is equivalent to "--config-file=/etc/dbus-1/ses-
       sion.conf"  and	the  --system  option  is  equivalent  to  "--config-
       file=/etc/dbus-1/system.conf".  By  creating  additional configuration
       files and using the --config-file option,  additional  special-purpose
       message bus daemons could be created.


       The  systemwide	daemon	is normally launched by an init script, stan-
       dardly called simply "messagebus".


       The systemwide daemon is largely used for broadcasting system  events,
       such as changes to the printer queue, or adding/removing devices.


       The  per-session daemon is used for various interprocess communication
       among desktop applications (however, it is not tied to X or the GUI in
       any way).


       There  is no way to cause the D-BUS daemon to reload its configuration
       file (HUP will not do so). The reason is that  changing	configuration
       would  break  the  semantics expected by applications connected to the
       message bus. Thus, changing configuration would	require	 kicking  all
       apps off the bus; so you may as well just restart the daemon.


OPTIONS
       The following options are supported:

       --config-file=FILE
	      Use the given configuration file.

       --fork Force  the message bus to fork and become a daemon, even if the
	      configuration file does not specify that it  should.   In	 most
	      contexts	the  configuration  file  already  gets	 this  right,
	      though.

       --print-address[=DESCRIPTOR]
	      Print the address of the message bus to standard output, or  to
	      the given file descriptor. This is used by programs that launch
	      the message bus.

       --print-pid[=DESCRIPTOR]
	      Print the process ID of the message bus to standard output,  or
	      to  the  given  file  descriptor. This is used by programs that
	      launch the message bus.

       --session
	      Use the standard configuration file for  the  per-login-session
	      message bus.

       --system
	      Use  the standard configuration file for the systemwide message
	      bus.

       --version
	      Print the version of the daemon.


CONFIGURATION FILE
       A 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  specifica-
       tion  and  its backward compatibility is not guaranteed; this document
       is documentation, not specification.


       The standard systemwide and per-session message bus setups are config-
       ured  in	 the  files  "/etc/dbus-1/system.conf"	and "/etc/dbus-1/ses-
       sion.conf".  These files normally    a	system-local.conf  or
       session-local.conf;  you	 can  put  local  overrides in those files to
       avoid modifying the primary configuration files.


       The configuration file is an XML document. It must have the  following
       doctype declaration:

	  



       The following elements may be present in the configuration file.


       


       Root element.


       

       The  well-known	type  of  the message bus. Currently known values are
       "system" and "session"; if other values are set, they should be either
       added to the D-BUS specification, or namespaced.	 The last  ele-
       ment "wins" (previous values are ignored).


       Example: session


       


       Include a file filename.conf at this point.  If the
       filename is relative, it is located relative to the configuration file
       doing the including.


        has an optional  attribute  "ignore_missing=(yes|no)"	which
       defaults to "no" if not provided. This attribute controls whether it's
       a fatal error for the included file to be absent.


       


       Include all files in  foo.d  at	 this  point.
       Files  in  the  directory are included in undefined order.  Only files
       ending in ".conf" are included.


       This is intended to allow extension of the system  bus  by  particular
       packages.  For example, if CUPS wants to be able to send out notifica-
       tion  of	 printer  queue	 changes,  it  could  install	a   file   to
       /etc/dbus-1/system.d that allowed all apps to receive this message and
       allowed the printer daemon user to send it.


       

       The user account the daemon should run as, as either a username	or  a
       UID. If the daemon 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.


       The  user  is  changed after the bus has completed initialization.  So
       sockets etc. will be created before changing user, but no data will be
       read  from  clients  before changing user. This means that sockets and
       PID files can be created in a location that requires  root  privileges
       for writing.


       

       If present, the bus daemon becomes a real daemon (forks into the back-
       ground, etc.). This is generally used rather than the  --fork  command
       line option.


       


       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: unix:path=/tmp/foo


       If  there are multiple  elements, then the bus listens on mul-
       tiple addresses. The bus will pass its address to  activated  services
       or  other  interested  parties with the last address given in 
       first. That is, apps will try to connect to the last   address
       first.


       

       Lists  permitted	 authorization	mechanisms.  If	 this element doesn't
       exist, then all known mechanisms are allowed.  If there	are  multiple
         elements, all the listed mechanisms are allowed.	 The order in
       which mechanisms are listed is not meaningful.


       Example: EXTERNAL


       Example: DBUS_COOKIE_SHA1


       


       Adds a directory to scan for .service files. Directories	 are  scanned
       starting	 with  the last to appear in the config file (the first .ser-
       vice file found that provides a particular service will be used).


       Service files tell the bus how to  automatically	 start	a  particular
       service.	 They  are  primarily used with the per-user-session bus, not
       the systemwide bus.


       


        establishes a resource limit. For example:
	 64
	 512


       The name attribute is mandatory.	 Available limit names are:
	     "max_incoming_bytes"	  : total size in bytes of messages
					    incoming from a single connection
	     "max_outgoing_bytes"	  : total size in bytes of messages
					    queued up for a single connection
	     "max_message_size"		  : max size of a single message in
					    bytes
	     "activation_timeout"	  : milliseconds (thousandths) until
					    an activated service has to connect
	     "auth_timeout"		  : milliseconds (thousandths) a
					    connection is given to
					    authenticate
	     "max_completed_connections"  : max number of authenticated connections
	     "max_incomplete_connections" : max number of unauthenticated
					    connections
	     "max_connections_per_user"	  : max number of completed connections from
					    the same user
	     "max_pending_activations"	  : max number of activations in
					    progress at the same time
	     "max_services_per_connection": max number of services a single
					    connection can own
	     "max_replies_per_connection" : max number of pending method
					    replies per connection
					    (number of calls-in-progress)
	     "reply_timeout"		  : milliseconds (thousandths)
					    until a method call times out


       The max incoming/outgoing queue sizes allow a new message to be queued
       if  one	byte remains below the max. So you can in fact exceed the max
       by max_message_size.


       max_completed_connections divided by max_connections_per_user  is  the
       number of users that can work together to DOS all other users by using
       up all connections.


       


       The  element defines a policy to be applied  to	a  particular
       set  of	connections  to	 the  bus. A policy is made up of  and
        elements.


       The  element has one of three attributes:
	 context="(default|mandatory)"
	 user="username or userid"
	 group="group name or gid"



       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.


        


       A  element appears below a  element and  prohibits	 some
       action.	The    element  makes  an exception to previous 
       statements, and works just like  but with the inverse meaning.


       The possible attributes of these elements are:
	  send_interface="interface_name"
	  send_member="method_or_signal_name"
	  send_error="error_name"
	  send_destination="service_name"
	  send_type="method_call" | "method_return" | "signal" | "error"
	  send_path="/path/name"

	  receive_interface="interface_name"
	  receive_member="method_or_signal_name"
	  receive_error="error_name"
	  receive_sender="service_name"
	  receive_type="method_call" | "method_return" | "signal" | "error"
	  receive_path="/path/name"

	  send_requested_reply="true" | "false"
	  receive_requested_reply="true" | "false"

	  eavesdrop="true" | "false"

	  own="servicename"
	  user="username"
	  group="groupname"


       Examples:
	  
	  
	  
	  
	  
	  
	  


       The  element's attributes determine whether the deny "matches" a
       particular  action.  If it matches, the action is denied (unless later
       rules in the config file allow it).


       send_destination and receive_sender rules 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.


       The other send_* and receive_* attributes are purely  textual/by-value
       matches against the given field in the message header.


       "Eavesdropping" occurs when an application receives a message that was
       explicitly addressed to	a  service  the	 application  does  not	 own.
       Eavesdropping thus only applies to messages that are addressed to ser-
       vices (i.e. it does not apply to signals).


       For , eavesdrop="true" indicates that  the  rule	matches	 even
       when  eavesdropping.  eavesdrop="false"	is the default and means that
       the rule only allows messages to go to their specified recipient.  For
       ,	eavesdrop="true"  indicates  that  the rule matches only when
       eavesdropping. eavesdrop="false" is the default for   also,  but
       here  it	 means that the rule applies always, even when not eavesdrop-
       ping. The eavesdrop attribute can only be combined with receive	rules
       (with receive_* attributes).



       The  [send|receive]_requested_reply  attribute  works similarly to the
       eavesdrop attribute. It controls whether the  or  matches
       a  reply	 that is expected (corresponds to a previous method call mes-
       sage).  This attribute only makes sense for reply messages (errors and
       method returns), and is ignored for other message types.


       For  , [send|receive]_requested_reply="true" is the default and
       indicates that  only  requested	replies	 are  allowed  by  the	rule.
       [send|receive]_requested_reply="false"  means that the rule allows any
       reply even if unexpected.


       For , [send|receive]_requested_reply="false" is the default  but
       indicates that the rule matches only when the reply was not requested.
       [send|receive]_requested_reply="true" indicates that the rule  applies
       always, regardless of pending reply state.


       user  and group denials mean that the given user or group may not con-
       nect to the message bus.


       For "service_name", "username", "groupname", etc.  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="mandatory" policies.


       A  single    rule may specify combinations of attributes such as
       send_service and send_interface	and  send_type.	 In  this  case,  the
       denial applies only if both attributes match the message being denied.
       e.g. 	would
       deny messages of the given interface AND to the given service.  To get
       an OR effect you specify multiple  rules.


       You can't include both send_ and receive_ attributes on the same rule,
       since  "whether	the  message  can  be  sent"  and  "whether it can be
       received" are evaluated separately.


       Be careful with send_interface/receive_interface, because  the  inter-
       face field in messages is optional.


       


       The    element contains settings related to Security Enhanced
       Linux.  More details below.


       


       An  element appears below an  element and  creates
       a mapping. Right now only one kind of association is possible:
	  


       This means that if a connection asks to own the service "org.freedesk-
       top.Foobar" then the source context will be the context of the connec-
       tion and the target context will be "foo_t" - see the short discussion
       of SELinux below.


       Note, the context here is the target context when acquiring a service,
       NOT the context of the connection owning the service.


       There's	currently  no way to set a default for owning any service, if
       we add this syntax it will look like:
	  
       If you find a reason this is useful, let the developers	know.	Right
       now the default will be the security context of the bus itself.


       If two  elements specify the same service name, the element
       appearing later in the configuration file will be used.


SELinux
       See http://www.nsa.gov/selinux/ for full details on SELinux. Some use-
       ful excerpts:


	       Every  subject  (process)  and  object (e.g. file, socket, IPC
	       object, etc) in the system is assigned a collection  of	secu-
	       rity  attributes, known as a security context. A security con-
	       text contains all of the security attributes associated with a
	       particular subject or object that are relevant to the security
	       policy.


	       In order to better encapsulate security contexts and  to	 pro-
	       vide  greater  efficiency,  the	policy	enforcement  code  of
	       SELinux typically handles security identifiers  (SIDs)  rather
	       than  security contexts. A SID is an integer that is mapped by
	       the security server to a security context at runtime.


	       When a security decision is required, the  policy  enforcement
	       code passes a pair of SIDs (typically the SID of a subject and
	       the SID of an object, but sometimes a pair of subject SIDs  or
	       a  pair	of  object SIDs), and an object security class to the
	       security server. The object security class indicates the	 kind
	       of  object, e.g. a process, a regular file, a directory, a TCP
	       socket, etc.


	       Access decisions	 specify  whether  or  not  a  permission  is
	       granted	for a given pair of SIDs and class. Each object class
	       has a set of associated permissions defined to control  opera-
	       tions on objects with that class.


       D-BUS performs SELinux security checks in two places.


       First,  any  time  a  message is routed from one connection to another
       connection, the bus daemon will check permissions  with	the  security
       context	of  the	 first	connection as source, security context of the
       second connection as target, object class "dbus" and requested permis-
       sion "send_msg".


       If  a  security	context is not available for a connection (impossible
       when using UNIX domain sockets), then the target context used  is  the
       context of the bus daemon itself.  There is currently no way to change
       this default, because we're assuming that  only	UNIX  domain  sockets
       will  be used to connect to the systemwide bus. If this changes, we'll
       probably add a way to set the default connection context.


       Second, any time a connection asks to own a service,  the  bus  daemon
       will  check permissions with the security context of the connection as
       source, the security context specified for the service  name  with  an
         element as target, object class "dbus" and requested per-
       mission "acquire_svc".


       If the service name has no security context associated in the configu-
       ration  file,  the  security  context of the bus daemon itself will be
       used.


AUTHOR
       See http://www.freedesktop.org/software/dbus/doc/AUTHORS


BUGS
       Please send bug reports to the D-BUS mailing list or bug tracker,  see
       http://www.freedesktop.org/software/dbus/



							     dbus-daemon-1(1)


UNIX/Linux commands referenced on this page:
  1. more
  2. as
  3. time
  4. init
  5. script
  6. file
  7. last
  8. at
  9. which
  10. size
  11. users
  12. make
  13. look
  14. find