dwww Home | Manual pages | Find package

XSECURITY(7)            Miscellaneous Information Manual           XSECURITY(7)

NAME
       Xsecurity - X display access control

OVERVIEW
       X  provides mechanism for implementing many access control systems.  The
       sample implementation includes five mechanisms:
           Host Access                       Simple host-based access control.
           MIT-MAGIC-COOKIE-1                Shared plain-text "cookies".
           XDM-AUTHORIZATION-1               Secure DES based private-keys.
           SUN-DES-1                         Based on Sun's secure rpc system.
           Server Interpreted                Server-dependent methods of access control
       Not all of these are available in all builds or implementations.

ACCESS SYSTEM DESCRIPTIONS
       Host Access
              Any client on a host in the host access control list  is  allowed
              access  to the X server.  This system can work reasonably well in
              an environment where everyone trusts everyone,  or  when  only  a
              single  person  can log in to a given machine, and is easy to use
              when the list of hosts used is small.  This system does not  work
              well  when multiple people can log in to a single machine and mu-
              tual trust does not exist.  The list of allowed hosts  is  stored
              in  the X server and can be changed with the xhost command.   The
              list is stored in the server by network address, not host  names,
              so  is  not automatically updated if a host changes address while
              the server is running.  When using  the  more  secure  mechanisms
              listed  below,  the  host  list  is normally configured to be the
              empty list, so that only authorized programs can connect  to  the
              display.    See  the  GRANTING  ACCESS section of the Xserver man
              page for details on  how  this  list  is  initialized  at  server
              startup.

       MIT-MAGIC-COOKIE-1
              When  using  MIT-MAGIC-COOKIE-1,  the  client  sends  a  128  bit
              "cookie" along with the connection  setup  information.   If  the
              cookie presented by the client matches one that the X server has,
              the  connection  is allowed access.  The cookie is chosen so that
              it is hard to guess; xdm  generates  such  cookies  automatically
              when this form of access control is used.  The user's copy of the
              cookie  is usually stored in the .Xauthority file in the home di-
              rectory, although the environment variable XAUTHORITY can be used
              to specify an alternate location.   Xdm  automatically  passes  a
              cookie  to  the server for each new login session, and stores the
              cookie in the user file at login.

              The cookie is transmitted on the network without  encryption,  so
              there  is nothing to prevent a network snooper from obtaining the
              data and using it to gain access to the X server.  This system is
              useful in an environment where many users  are  running  applica-
              tions  on  the  same  machine and want to avoid interference from
              each other, with the caveat that this control is only as good  as
              the  access  control  to  the  physical network.  In environments
              where network-level snooping is difficult, this system  can  work
              reasonably well.

       XDM-AUTHORIZATION-1
              Sites  who  compile  with  DES support can use a DES-based access
              control mechanism called XDM-AUTHORIZATION-1.  It is  similar  in
              usage  to MIT-MAGIC-COOKIE-1 in that a key is stored in the .Xau-
              thority file and is shared with the X server.  However, this  key
              consists  of  two parts - a 56 bit DES encryption key and 64 bits
              of random data used as the authenticator.

              When connecting to the X server, the  application  generates  192
              bits  of  data  by  combining  the current time in seconds (since
              00:00 1/1/1970 GMT) along with  48  bits  of  "identifier".   For
              TCP/IPv4  connections,  the  identifier  is the address plus port
              number; for local connections it is the process ID and 32 bits to
              form a unique id (in case multiple connections to the same server
              are made from a single process).  This 192 bit packet is then en-
              crypted using the DES key and sent to the X server, which is able
              to verify if the requestor is authorized to connect by decrypting
              with the same DES key and validating the authenticator and  addi-
              tional  data.   This  system is useful in many environments where
              host-based access control is inappropriate and where network  se-
              curity cannot be ensured.

       SUN-DES-1
              Recent versions of SunOS (and some other systems) have included a
              secure  public  key remote procedure call system.  This system is
              based on the notion of a network principal; a user name  and  NIS
              domain  pair.   Using this system, the X server can securely dis-
              cover the actual user name of the  requesting  process.   It  in-
              volves encrypting data with the X server's public key, and so the
              identity of the user who started the X server is needed for this;
              this  identity  is  stored in the .Xauthority file.  By extending
              the semantics of "host address" to include this notion of network
              principal, this form of access control is very easy to use.

              To allow access by a new user, use xhost.  For example,
                  xhost keith@ ruth@mit.edu
              adds "keith" from the NIS domain of the local machine, and "ruth"
              in the "mit.edu" NIS domain.  For keith or ruth  to  successfully
              connect  to  the display, they must add the principal who started
              the server to their .Xauthority file.  For example:
                  xauth add expo.lcs.mit.edu:0 SUN-DES-1 unix.expo.lcs.mit.edu@our.domain.edu
              This system only works on machines which support Secure RPC,  and
              only  for  users which have set up the appropriate public/private
              key pairs on their system.  See the Secure RPC documentation  for
              details.   To access the display from a remote host, you may have
              to do a keylogin on the remote host first.

       Server Interpreted
              The Server Interpreted method  provides  two  strings  to  the  X
              server  for  entry  in the access control list.  The first string
              represents the type of entry, and the second string contains  the
              value  of the entry.  These strings are interpreted by the server
              and different implementations and builds  may  support  different
              types  of entries.  The types supported in the sample implementa-
              tion are defined in the SERVER INTERPRETED ACCESS  TYPES  section
              below.    Entries of this type can be manipulated via xhost.  For
              example to add a Server Interpreted entry of type localuser  with
              a value of root, the command is xhost +si:localuser:root.

THE AUTHORIZATION FILE
       Except  for  Host  Access control and Server Interpreted Access Control,
       each of these systems uses data stored in the .Xauthority file to gener-
       ate the correct authorization information to pass along to the X  server
       at  connection  setup.  MIT-MAGIC-COOKIE-1 and XDM-AUTHORIZATION-1 store
       secret data in the file; so anyone who can read the file can gain access
       to the X server.  SUN-DES-1 stores only the identity  of  the  principal
       who  started the server (unix.hostname@domain when the server is started
       by xdm), and so it is not useful to anyone not authorized to connect  to
       the server.

       Each  entry  in the .Xauthority file matches a certain connection family
       (TCP/IP, DECnet or local connections) and X display name (hostname  plus
       display number).  This allows multiple authorization entries for differ-
       ent  displays  to share the same data file.  A special connection family
       (FamilyWild, value 65535) causes an entry to match every display, allow-
       ing the entry to be used for all connections.  Each  entry  additionally
       contains  the authorization name and whatever private authorization data
       is needed by that authorization type to generate the correct information
       at connection setup time.

       The xauth program manipulates the .Xauthority file  format.   It  under-
       stands  the  semantics  of  the connection families and address formats,
       displaying them in an easy to understand format.   It  also  understands
       that  SUN-DES-1  uses string values for the authorization data, and dis-
       plays them appropriately.

       The X server (when running on a workstation) reads authorization  infor-
       mation from a file name passed on the command line with the -auth option
       (see  the  Xserver  manual page).  The authorization entries in the file
       are used to control access to the server.  In each of the  authorization
       schemes listed above, the data needed by the server to initialize an au-
       thorization scheme is identical to the data needed by the client to gen-
       erate the appropriate authorization information, so the same file can be
       used by both processes.  This is especially useful when xinit is used.

       MIT-MAGIC-COOKIE-1
              This system uses 128 bits of data shared between the user and the
              X  server.   Any  collection  of bits can be used.  Xdm generates
              these keys using a cryptographically secure pseudo random  number
              generator,  and so the key to the next session cannot be computed
              from the current session key.

       XDM-AUTHORIZATION-1
              This system uses two pieces of information.  First,  64  bits  of
              random  data,  second  a 56 bit DES encryption key (again, random
              data) stored in 8 bytes, the last byte of which is ignored.   Xdm
              generates these keys using the same random number generator as is
              used for MIT-MAGIC-COOKIE-1.

       SUN-DES-1
              This  system needs a string representation of the principal which
              identifies the associated X server.  This information is used  to
              encrypt the client's authority information when it is sent to the
              X server.  When xdm starts the X server, it uses the root princi-
              pal for the machine on which it is running (unix.hostname@domain,
              e.g.,   "unix.expire.lcs.mit.edu@our.domain.edu").   Putting  the
              correct principal name in the .Xauthority  file  causes  Xlib  to
              generate  the appropriate authorization information using the se-
              cure RPC library.

SERVER INTERPRETED ACCESS TYPES
       The sample implementation includes  several  Server  Interpreted  mecha-
       nisms:
           IPv6                              IPv6 literal addresses
           hostname                          Network host name
           localuser                         Local connection user id
           localgroup                        Local connection group id

       IPv6   A literal IPv6 address as defined in IETF RFC 3513.   This allows
              adding  IPv6  addresses  when the X server supports IPv6, but the
              xhost client was compiled without IPv6 support.

       hostname
              The value must be a hostname as defined in IETF RFC 2396. Due  to
              Mobile  IP and dynamic DNS, the name service is consulted at con-
              nection authentication time, unlike the traditional  host  access
              control  list  which only contains numeric addresses and does not
              automatically update when a host's address  changes.   Note  that
              this  definition of hostname does not allow use of literal IP ad-
              dresses.

       localuser & localgroup
              On systems which can determine in a secure  fashion  the  creden-
              tials  of  a client process, the "localuser" and "localgroup" au-
              thentication methods provide access based on  those  credentials.
              The  format  of  the  values  provided is platform specific.  For
              POSIX & UNIX platforms, if the value starts  with  the  character
              '#',  the  rest of the string is treated as a decimal uid or gid,
              otherwise the string is defined as a user name or group name.

              If your system supports this method and you  use  it,  be  warned
              that  some programs that proxy connections and are setuid or set-
              gid may get authenticated as the uid or gid of the proxy process.
              For instance, some versions of ssh will be authenticated  as  the
              user  root,  no matter what user is running the ssh client, so on
              systems with such software, adding access for localuser:root  may
              allow wider access than intended to the X display.

FILES
       .Xauthority

SEE ALSO
       X(7), xdm(1), xauth(1), xhost(1), xinit(1), Xserver(1)

X Version 11                    xorg-docs 1.7.3                    XSECURITY(7)

Generated by dwww version 1.16 on Sat Oct 3 06:25:07 CEST 2026.