1XDM(1)                      General Commands Manual                     XDM(1)
2
3
4

NAME

6       xdm - X Display Manager with support for XDMCP, host chooser
7

SYNOPSIS

9       xdm [ -config configuration_file ] [ -nodaemon ] [ -debug debug_level ]
10       [ -error error_log_file  ]  [  -resources  resource_file  ]  [  -server
11       server_entry ] [ -session session_program ]
12

DESCRIPTION

14       Xdm  manages a collection of X displays, which may be on the local host
15       or remote servers.  The design of xdm was guided by the needs of X ter‐
16       minals  as well as The Open Group standard XDMCP, the X Display Manager
17       Control Protocol.  Xdm provides services similar to those  provided  by
18       init,  getty and login on character terminals: prompting for login name
19       and password, authenticating the user, and running a ``session.''
20
21       A ``session'' is defined by the lifetime of a  particular  process;  in
22       the  traditional character-based terminal world, it is the user's login
23       shell.  In the xdm context, it is an arbitrary session  manager.   This
24       is  because  in  a  windowing environment, a user's login shell process
25       does not necessarily have any terminal-like  interface  with  which  to
26       connect.   When  a real session manager is not available, a window man‐
27       ager or terminal emulator is typically used as the ``session manager,''
28       meaning that termination of this process terminates the user's session.
29
30       When  the  session  is terminated, xdm resets the X server and (option‐
31       ally) restarts the whole process.
32
33       When xdm receives an Indirect query via XDMCP, it  can  run  a  chooser
34       process to perform an XDMCP BroadcastQuery (or an XDMCP Query to speci‐
35       fied hosts) on behalf of the display and offer a menu of possible hosts
36       that  offer  XDMCP  display  management.  This feature is useful with X
37       terminals that do not offer a host menu themselves.
38
39       Xdm can be configured to ignore BroadcastQuery messages  from  selected
40       hosts.   This is useful when you don't want the host to appear in menus
41       produced by chooser or X terminals themselves.
42
43       Because xdm provides the first interface that users  will  see,  it  is
44       designed  to  be  simple to use and easy to customize to the needs of a
45       particular site.  Xdm has many options, most of which  have  reasonable
46       defaults.   Browse through the various sections of this manual, picking
47       and choosing the things you want to change.  Pay  particular  attention
48       to  the  Session Program section, which will describe how to set up the
49       style of session desired.
50

OVERVIEW

52       xdm is highly configurable, and most of its behavior can be  controlled
53       by  resource  files  and shell scripts.  The names of these files them‐
54       selves are resources read from the file xdm-config or the file named by
55       the -config option.
56
57       xdm  offers  display  management  two  different ways.  It can manage X
58       servers running on the local machine and specified in Xservers, and  it
59       can  manage  remote  X servers (typically X terminals) using XDMCP (the
60       XDM Control Protocol) as specified in the Xaccess file.
61
62       The resources of the X clients run by xdm outside the  user's  session,
63       including  xdm's own login window, can be affected by setting resources
64       in the Xresources file.
65
66       For X terminals that do not offer a menu of hosts to get  display  man‐
67       agement from, xdm can collect willing hosts and run the chooser program
68       to offer the user a menu.  For X displays attached to a host, this step
69       is typically not used, as the local host does the display management.
70
71       After  resetting  the X server, xdm runs the Xsetup script to assist in
72       setting up the screen the user sees along with the xlogin widget.
73
74       The xlogin widget, which xdm presents, offers the  familiar  login  and
75       password prompts.
76
77       After the user logs in, xdm runs the Xstartup script as root.
78
79       Then  xdm  runs  the  Xsession script as the user.  This system session
80       file may do some additional startup and typically  runs  the  .xsession
81       script  in  the user's home directory.  When the Xsession script exits,
82       the session is over.
83
84       At the end of the session, the Xreset script is run to clean up, the  X
85       server is reset, and the cycle starts over.
86
87       The  file   /var/log/xdm.log  will  contain error messages from xdm and
88       anything output to stderr by  Xsetup,  Xstartup,  Xsession  or  Xreset.
89       When  you  have  trouble getting xdm working, check this file to see if
90       xdm has any clues to the trouble.
91

OPTIONS

93       All of these options, except -config itself, specify  values  that  can
94       also be specified in the configuration file as resources.
95
96       -config configuration_file
97              Names  the configuration file, which specifies resources to con‐
98              trol  the  behavior  of  xdm.   /etc/X11/xdm/xdm-config  is  the
99              default.  See the section Configuration File.
100
101       -nodaemon
102              Specifies  ``false'' as the value for the DisplayManager.daemon‐
103              Mode resource.  This  suppresses  the  normal  daemon  behavior,
104              which  is  for  xdm  to close all file descriptors, disassociate
105              itself from the controlling terminal,  and  put  itself  in  the
106              background when it first starts up.
107
108       -debug debug_level
109              Specifies  the  numeric  value for the DisplayManager.debugLevel
110              resource.  A non-zero value causes xdm to print lots  of  debug‐
111              ging  statements  to the terminal; it also disables the Display‐
112              Manager.daemonMode resource, forcing xdm to  run  synchronously.
113              To interpret these debugging messages, a copy of the source code
114              for xdm is almost a necessity.  No  attempt  has  been  made  to
115              rationalize or standardize the output.
116
117       -error error_log_file
118              Specifies   the   value   for   the  DisplayManager.errorLogFile
119              resource.  This file contains errors from xdm as  well  as  any‐
120              thing  written to stderr by the various scripts and programs run
121              during the progress of the session.
122
123       -resources resource_file
124              Specifies the value for the  DisplayManager*resources  resource.
125              This  file  is  loaded  using  xrdb(1)  to specify configuration
126              parameters for the authentication widget.
127
128       -server server_entry
129              Specifies the value  for  the  DisplayManager.servers  resource.
130              See  the section Local Server Specification for a description of
131              this resource.
132
133       -udpPort port_number
134              Specifies the value for the DisplayManager.requestPort resource.
135              This  sets  the  port-number  which  xdm  will monitor for XDMCP
136              requests.  As XDMCP uses the registered well-known UDP port 177,
137              this resource should not be changed except for debugging. If set
138              to 0 xdm will not listen for XDMCP or Chooser requests.
139
140       -session session_program
141              Specifies the value  for  the  DisplayManager*session  resource.
142              This  indicates the program to run as the session after the user
143              has logged in.
144
145       -xrm resource_specification
146              Allows an arbitrary resource to be specified, as in most X Tool‐
147              kit applications.
148

RESOURCES

150       At  many stages the actions of xdm can be controlled through the use of
151       its configuration file, which  is  in  the  X  resource  format.   Some
152       resources modify the behavior of xdm on all displays, while others mod‐
153       ify its behavior on a single display.  Where actions relate to  a  spe‐
154       cific  display,  the  display  name  is inserted into the resource name
155       between ``DisplayManager'' and the final resource name segment.
156
157       For local displays, the resource name and class are as  read  from  the
158       Xservers file.
159
160       For  remote  displays, the resource name is what the network address of
161       the display resolves to.  See the removeDomain resource.  The name must
162       match  exactly;  xdm is not aware of all the network aliases that might
163       reach a given display.  If the name resolve fails, the address is used.
164       The  resource  class  is  as  sent  by  the display in the XDMCP Manage
165       request.
166
167       Because the resource manager uses colons to separate the  name  of  the
168       resource  from  its value and dots to separate resource name parts, xdm
169       substitutes underscores for both dots and colons  when  generating  the
170       resource name.  For example, DisplayManager.expo_x_org_0.startup is the
171       name of the resource which defines  the  startup  shell  file  for  the
172       ``expo.x.org:0'' display.
173
174       DisplayManager.servers
175              This  resource  either  specifies  a  file  name  full of server
176              entries, one per line (if the value starts with a slash),  or  a
177              single server entry.  See the section Local Server Specification
178              for the details.
179
180       DisplayManager.requestPort
181              This indicates the UDP port number which xdm uses to listen  for
182              incoming  XDMCP  requests.  Unless you need to debug the system,
183              leave this with its default value of 177.
184
185       DisplayManager.errorLogFile
186              Error output is normally directed at the system console.  To re‐
187              direct  it,  set this resource to a file name.  A method to send
188              these messages to syslog should be developed for  systems  which
189              support  it;  however,  the wide variety of interfaces precludes
190              any system-independent implementation.  This file also  contains
191              any  output directed to stderr by the Xsetup, Xstartup, Xsession
192              and Xreset files, so it will contain descriptions of problems in
193              those scripts as well.
194
195       DisplayManager.debugLevel
196              If  the  integer  value  of  this resource is greater than zero,
197              reams of debugging information will be printed.   It  also  dis‐
198              ables daemon mode, which would redirect the information into the
199              bit-bucket, and allows non-root users to run  xdm,  which  would
200              normally not be useful.
201
202       DisplayManager.daemonMode
203              Normally,  xdm  attempts  to  make  itself into a daemon process
204              unassociated with any terminal.  This is accomplished by forking
205              and  leaving  the  parent  process  to  exit,  then closing file
206              descriptors and releasing the  controlling  terminal.   In  some
207              environments  this  is  not  desired (in particular, when debug‐
208              ging).  Setting this resource to  ``false''  will  disable  this
209              feature.
210
211       DisplayManager.pidFile
212              The  filename specified will be created to contain an ASCII rep‐
213              resentation of the process-id of the main xdm process.  Xdm also
214              uses  file locking on this file to attempt to eliminate multiple
215              daemons running on the same machine, which would cause  quite  a
216              bit of havoc.
217
218       DisplayManager.lockPidFile
219              This  is the resource which controls whether xdm uses file lock‐
220              ing to keep multiple display managers  from  running  amok.   On
221              System V, this uses the lockf library call, while on BSD it uses
222              flock.
223
224       DisplayManager.authDir
225              This names a directory  under  which  xdm  stores  authorization
226              files  while  initializing  the  session.   The default value is
227              /etc/X11/xdm.  Can be overridden for specific displays  by  Dis‐
228              playManager.DISPLAY.authFile.
229
230       DisplayManager.autoRescan
231              This  boolean  controls  whether  xdm rescans the configuration,
232              servers, access control and authentication keys  files  after  a
233              session terminates and the files have changed.  By default it is
234              ``true.''  You can force xdm to reread these files by sending  a
235              SIGHUP to the main process.
236
237       DisplayManager.removeDomainname
238              When  computing  the  display  name  for XDMCP clients, the name
239              resolver will typically create a fully qualified host  name  for
240              the  terminal.   As this is sometimes confusing, xdm will remove
241              the domain name portion of the host name if it is  the  same  as
242              the domain name of the local host when this variable is set.  By
243              default the value is ``true.''
244
245       DisplayManager.keyFile
246              XDM-AUTHENTICATION-1 style XDMCP authentication requires that  a
247              private  key  be  shared  between  xdm  and  the terminal.  This
248              resource specifies the file containing those values.  Each entry
249              in  the  file consists of a display name and the shared key.  By
250              default, xdm does not include support for  XDM-AUTHENTICATION-1,
251              as  it requires DES which is not generally distributable because
252              of United States export restrictions.
253
254       DisplayManager.accessFile
255              To prevent unauthorized XDMCP service and to allow forwarding of
256              XDMCP  IndirectQuery  requests, this file contains a database of
257              hostnames  which  are  either  allowed  direct  access  to  this
258              machine, or have a list of hosts to which queries should be for‐
259              warded to.  The format of this file is described in the  section
260              XDMCP Access Control.
261
262       DisplayManager.exportList
263              A  list  of additional environment variables, separated by white
264              space, to pass on to the Xsetup, Xstartup, Xsession, and  Xreset
265              programs.
266
267       DisplayManager.randomFile
268              A  file  to checksum to generate the seed of authorization keys.
269              This should be a file that changes frequently.  The  default  is
270              /dev/mem.
271
272
273       DisplayManager.randomDevice
274              A  file  to read 8 bytes from to generate the seed of authoriza‐
275              tion keys.  The default is  "/dev/urandom" . If this file cannot
276              be  read, or if a read blocks for more than 5 seconds, xdm falls
277              back to using a checksum of DisplayManager.randomFile to  gener‐
278              ate the seed.
279
280
281
282       DisplayManager.prngdSocket
283
284       DisplayManager.prngPort
285              A  UNIX  domain socket name or a TCP socket port number on local
286              host on which a Pseudo-Random Number Generator Daemon, like  EGD
287              (http://egd.sourceforge.net)  is listening, in order to generate
288              the autorization keys. Either a non null port or a valid  socket
289              name  must  be  specified. The default is to use the Unix-domain
290              socket /tmp/entropy.
291
292       On systems that don't have such a daemon, a fall-back entropy gathering
293       system,  based on various log file contents hashed by the MD5 algorithm
294       is used instead.
295
296
297       DisplayManager.greeterLib
298              On systems that support a dynamically-loadable greeter  library,
299              the name of the library.  The default is
300               /etc/X11/xdm/libXdmGreet.so.
301
302       DisplayManager.choiceTimeout
303              Number  of seconds to wait for display to respond after user has
304              selected a host from the chooser.  If the display sends an XDMCP
305              IndirectQuery  within this time, the request is forwarded to the
306              chosen host.  Otherwise, it is assumed to be from a new  session
307              and the chooser is offered again.  Default is 15.
308
309       DisplayManager.sourceAddress
310              Use  the numeric IP address of the incoming connection on multi‐
311              homed hosts instead of the host name. This is to avoid trying to
312              connect on the wrong interface which might be down at this time.
313
314       DisplayManager.willing
315              This specifies a program which is run (as) root when an an XDMCP
316              BroadcastQuery is received and this host is configured to  offer
317              XDMCP display management. The output of this program may be dis‐
318              played on a chooser window.  If no  program  is  specified,  the
319              string Willing to manage is sent.
320
321       DisplayManager.DISPLAY.resources
322              This  resource  specifies  the  name of the file to be loaded by
323              xrdb as the resource database onto the root window of  screen  0
324              of  the  display.   The  Xsetup  program,  the Login widget, and
325              chooser will use the resources set in this file.  This  resource
326              data  base is loaded just before the authentication procedure is
327              started, so it can control the appearance of the  login  window.
328              See the section Authentication Widget, which describes the vari‐
329              ous resources that are appropriate to place in this file.  There
330              is no default value for this resource, but
331               /etc/X11/xdm/Xresources is the conventional name.
332
333       DisplayManager.DISPLAY.chooser
334              Specifies  the  program  run  to  offer a host menu for Indirect
335              queries redirected to the special host name CHOOSER.
336               /usr/lib64/X11/xdm/chooser  is the default.  See  the  sections
337              XDMCP Access Control and Chooser.
338
339       DisplayManager.DISPLAY.xrdb
340              Specifies  the  program used to load the resources.  By default,
341              xdm uses  /usr/bin/xrdb.
342
343       DisplayManager.DISPLAY.cpp
344              This specifies the name of the C preprocessor which is  used  by
345              xrdb.
346
347       DisplayManager.DISPLAY.setup
348              This  specifies a program which is run (as root) before offering
349              the Login window.  This may be used to change the appearance  of
350              the  screen  around  the Login window or to put up other windows
351              (e.g., you may want to run xconsole here).  By default, no  pro‐
352              gram  is  run.   The  conventional  name for a file used here is
353              Xsetup.  See the section Setup Program.
354
355       DisplayManager.DISPLAY.startup
356              This specifies a program  which  is  run  (as  root)  after  the
357              authentication process succeeds.  By default, no program is run.
358              The conventional name for a file used here is Xstartup.  See the
359              section Startup Program.
360
361       DisplayManager.DISPLAY.session
362              This specifies the session to be executed (not running as root).
363              By default,  /usr/bin/xterm is run.  The  conventional  name  is
364              Xsession.  See the section Session Program.
365
366       DisplayManager.DISPLAY.reset
367              This  specifies  a program which is run (as root) after the ses‐
368              sion terminates.  By default, no program is  run.   The  conven‐
369              tional name is Xreset.  See the section Reset Program.
370
371       DisplayManager.DISPLAY.openDelay
372
373       DisplayManager.DISPLAY.openRepeat
374
375       DisplayManager.DISPLAY.openTimeout
376
377       DisplayManager.DISPLAY.startAttempts
378              These  numeric  resources  control  the  behavior  of  xdm  when
379              attempting to  open  intransigent  servers.   openDelay  is  the
380              length  of  the  pause (in seconds) between successive attempts,
381              openRepeat is the number of attempts to make, openTimeout is the
382              amount of time to wait while actually attempting the open (i.e.,
383              the maximum time spent in the connect(2) system call) and  star‐
384              tAttempts  is  the  number  of times this entire process is done
385              before giving up on the server.  After openRepeat attempts  have
386              been  made,  or  if openTimeout seconds elapse in any particular
387              attempt, xdm terminates and restarts the server,  attempting  to
388              connect again.  This process is repeated startAttempts times, at
389              which point the display is declared dead and disabled.  Although
390              this behavior may seem arbitrary, it has been empirically devel‐
391              oped and works quite well on most systems.  The  default  values
392              are  5 for openDelay, 5 for openRepeat, 30 for openTimeout and 4
393              for startAttempts.
394
395       DisplayManager.DISPLAY.pingInterval
396
397       DisplayManager.DISPLAY.pingTimeout
398              To discover when remote  displays  disappear,  xdm  occasionally
399              pings them, using an X connection and XSync calls.  pingInterval
400              specifies the time (in minutes) between each ping attempt, ping‐
401              Timeout  specifies  the  maximum  amount of time (in minutes) to
402              wait for the terminal to respond to the request.  If the  termi‐
403              nal  does  not  respond, the session is declared dead and termi‐
404              nated.  By default, both are set to  5  minutes.   If  you  fre‐
405              quently  use X terminals which can become isolated from the man‐
406              aging host, you may wish to increase this value.  The only worry
407              is  that  sessions will continue to exist after the terminal has
408              been accidentally disabled.  xdm will not ping  local  displays.
409              Although it would seem harmless, it is unpleasant when the work‐
410              station session is terminated as a result of the server  hanging
411              for NFS service and not responding to the ping.
412
413       DisplayManager.DISPLAY.terminateServer
414              This  boolean  resource specifies whether the X server should be
415              terminated when a session terminates (instead of resetting  it).
416              This  option  can  be used when the server tends to grow without
417              bound over time, in order to limit the amount of time the server
418              is run.  The default value is ``false.''
419
420       DisplayManager.DISPLAY.userPath
421              Xdm  sets  the PATH environment variable for the session to this
422              value.  It should be a colon separated list of directories;  see
423              sh(1)          for          a          full         description.
424              ``:/bin:/usr/bin:/usr/bin:/usr/ucb'' is a common  setting.   The
425              default  value  can  be  specified at build time in the X system
426              configuration file with DefaultUserPath.
427
428       DisplayManager.DISPLAY.systemPath
429              Xdm sets the PATH environment variable for the startup and reset
430              scripts  to  the  value  of this resource.  The default for this
431              resource is specified at build  time  by  the  DefaultSystemPath
432              entry      in      the      system      configuration      file;
433              ``/etc:/bin:/usr/bin:/usr/bin:/usr/ucb''  is  a  common  choice.
434              Note the absence of ``.'' from this entry.  This is a good prac‐
435              tice to follow for root; it avoids many common Trojan Horse sys‐
436              tem penetration schemes.
437
438       DisplayManager.DISPLAY.systemShell
439              Xdm  sets  the  SHELL  environment  variable for the startup and
440              reset scripts to the value of this resource.  It is  /bin/sh  by
441              default.
442
443       DisplayManager.DISPLAY.failsafeClient
444              If  the  default session fails to execute, xdm will fall back to
445              this program.  This program is executed with no  arguments,  but
446              executes  using  the  same  environment variables as the session
447              would have had (see the section Session Program).   By  default,
448              /usr/bin/xterm is used.
449
450       DisplayManager.DISPLAY.grabServer
451
452       DisplayManager.DISPLAY.grabTimeout
453              To  improve  security,  xdm  grabs the server and keyboard while
454              reading the login name and password.   The  grabServer  resource
455              specifies  if  the server should be held for the duration of the
456              name/password reading.  When ``false,'' the server is  ungrabbed
457              after  the  keyboard  grab  succeeds,  otherwise  the  server is
458              grabbed until just before the session begins.   The  default  is
459              ``false.''   The grabTimeout resource specifies the maximum time
460              xdm will wait for the grab to succeed.  The  grab  may  fail  if
461              some  other  client  has  the server grabbed, or possibly if the
462              network latencies are very high.  This resource  has  a  default
463              value of 3 seconds; you should be cautious when raising it, as a
464              user can be spoofed by a look-alike window on the  display.   If
465              the  grab fails, xdm kills and restarts the server (if possible)
466              and the session.
467
468       DisplayManager.DISPLAY.authorize
469
470       DisplayManager.DISPLAY.authName
471              authorize is a boolean resource which controls whether xdm  gen‐
472              erates  and uses authorization for the local server connections.
473              If authorization is used, authName is a  list  of  authorization
474              mechanisms  to use, separated by white space.  XDMCP connections
475              dynamically specify  which  authorization  mechanisms  are  sup‐
476              ported,  so authName is ignored in this case.  When authorize is
477              set for a display and authorization is not available,  the  user
478              is informed by having a different message displayed in the login
479              widget.  By default, authorize is ``true.''  authName is  ``MIT-
480              MAGIC-COOKIE-1,''   or,  if  XDM-AUTHORIZATION-1  is  available,
481              ``XDM-AUTHORIZATION-1 MIT-MAGIC-COOKIE-1.''
482
483       DisplayManager.DISPLAY.authFile
484              This file is used to communicate the authorization data from xdm
485              to  the  server, using the -auth server command line option.  It
486              should be kept in a directory which is not world-writable as  it
487              could  easily  be removed, disabling the authorization mechanism
488              in the server.  If not specified, a name is generated from  Dis‐
489              playManager.authDir and the name of the display.
490
491       DisplayManager.DISPLAY.authComplain
492              If set to ``false,'' disables the use of the unsecureGreeting in
493              the login window.  See the section Authentication  Widget.   The
494              default is ``true.''
495
496       DisplayManager.DISPLAY.resetSignal
497              The number of the signal xdm sends to reset the server.  See the
498              section Controlling the Server.  The default is 1 (SIGHUP).
499
500       DisplayManager.DISPLAY.termSignal
501              The number of the signal xdm sends to terminate the server.  See
502              the   section   Controlling  the  Server.   The  default  is  15
503              (SIGTERM).
504
505       DisplayManager.DISPLAY.resetForAuth
506              The original  implementation  of  authorization  in  the  sample
507              server  reread  the  authorization  file  at  server reset time,
508              instead of when checking the initial connection.  As xdm  gener‐
509              ates the authorization information just before connecting to the
510              display, an old server would not  get  up-to-date  authorization
511              information.   This  resource  causes  xdm to send SIGHUP to the
512              server after setting up the file, causing an  additional  server
513              reset to occur, during which time the new authorization informa‐
514              tion will be read.  The default is ``false,''  which  will  work
515              for all MIT servers.
516
517       DisplayManager.DISPLAY.userAuthDir
518              When xdm is unable to write to the usual user authorization file
519              ($HOME/.Xauthority), it creates  a  unique  file  name  in  this
520              directory  and points the environment variable XAUTHORITY at the
521              created file.  It uses /tmp by default.
522

CONFIGURATION FILE

524       First, the xdm configuration file should be set up.  Make  a  directory
525       (usually  /etc/X11/xdm) to contain all of the relevant files.
526
527       Here  is a reasonable configuration file, which could be named xdm-con‐
528       fig:
529
530
531            DisplayManager.servers:            /etc/X11/xdm/Xservers
532            DisplayManager.errorLogFile:       /var/log/xdm.log
533            DisplayManager*resources:          /etc/X11/xdm/Xresources
534            DisplayManager*startup:            /etc/X11/xdm/Xstartup
535            DisplayManager*session:            /etc/X11/xdm/Xsession
536            DisplayManager.pidFile:            /var/run/xdm-pid
537            DisplayManager._0.authorize:       true
538            DisplayManager*authorize:          false
539
540
541       Note that this file mostly contains references to  other  files.   Note
542       also that some of the resources are specified with ``*'' separating the
543       components.  These resources can be made unique for each different dis‐
544       play,  by  replacing the ``*'' with the display-name, but normally this
545       is not very useful.  See the Resources section for a  complete  discus‐
546       sion.
547

XDMCP ACCESS CONTROL

549       The  database  file specified by the DisplayManager.accessFile provides
550       information which xdm uses to control access from  displays  requesting
551       XDMCP  service.   This  file  contains three types of entries:  entries
552       which control the response to Direct  and  Broadcast  queries,  entries
553       which control the response to Indirect queries, and macro definitions.
554
555       The  format  of  the  Direct entries is simple, either a host name or a
556       pattern, which is distinguished from a host name by  the  inclusion  of
557       one  or  more  meta  characters  (`*' matches any sequence of 0 or more
558       characters, and `?' matches any single character)  which  are  compared
559       against  the  host  name of the display device.  If the entry is a host
560       name, all comparisons are done using network  addresses,  so  any  name
561       which  converts  to  the correct network address may be used.  For pat‐
562       terns, only canonical host names are used in the comparison, so  ensure
563       that you do not attempt to match aliases.  Preceding either a host name
564       or a pattern with a `!' character causes hosts which match  that  entry
565       to be excluded.
566
567       To only respond to Direct queries for a host or pattern, it can be fol‐
568       lowed by the optional ``NOBROADCAST'' keyword.  This  can  be  used  to
569       prevent  an  xdm  server  from  appearing  on  menus based on Broadcast
570       queries.
571
572       An Indirect entry also contains a host name or pattern, but follows  it
573       with a list of host names or macros to which indirect queries should be
574       sent.
575
576       A macro definition contains a macro name and a list of host  names  and
577       other  macros  that  the  macro expands to.  To distinguish macros from
578       hostnames, macro names start with  a  `%'  character.   Macros  may  be
579       nested.
580
581       Indirect  entries  may  also specify to have xdm run chooser to offer a
582       menu of hosts to connect to.  See the section Chooser.
583
584       When checking access for a  particular  display  host,  each  entry  is
585       scanned  in  turn and the first matching entry determines the response.
586       Direct and Broadcast entries are ignored when scanning for an  Indirect
587       entry and vice-versa.
588
589       Blank  lines are ignored, `#' is treated as a comment delimiter causing
590       the rest of that line to be ignored, and `\newline' causes the  newline
591       to be ignored, allowing indirect host lists to span multiple lines.
592
593       Here is an example Xaccess file:
594
595       #
596       # Xaccess - XDMCP access control file
597       #
598
599       #
600       # Direct/Broadcast query entries
601       #
602
603       !xtra.lcs.mit.edu   # disallow direct/broadcast service for xtra
604       bambi.ogi.edu       # allow access from this particular display
605       *.lcs.mit.edu       # allow access from any display in LCS
606
607       *.deshaw.com        NOBROADCAST         # allow only direct access
608       *.gw.com                                # allow direct and broadcast
609
610       #
611       # Indirect query entries
612       #
613
614       %HOSTS              expo.lcs.mit.edu xenon.lcs.mit.edu excess.lcs.mit.edu kanga.lcs.mit.edu
615
616
617       extract.lcs.mit.edu xenon.lcs.mit.edu   #force extract to contact xenon
618       !xtra.lcs.mit.edu   dummy               #disallow indirect access
619       *.lcs.mit.edu       %HOSTS              #all others get to choose
620
621       If  compiled  with  IPv6  support, multicast address groups may also be
622       included in the list of addresses indirect queries are set to.   Multi‐
623       cast  addresses  may  be  followed  by  an optional / character and hop
624       count. If no hop count is specified, the multicast hop  count  defaults
625       to  1,  keeping the packet on the local network. For IPv4 multicasting,
626       the hop count is used as the TTL.
627
628       Examples:
629
630       rincewind.sample.net ff02::1                 #IPv6 Multicast to ff02::1
631                                                    #with a hop count of 1
632       ponder.sample.net    CHOOSER 239.192.1.1/16  #Offer a menu of hosts
633                                                    #who respond to IPv4 Multicast
634                                                    # to 239.192.1.1 with a TTL of 16
635

CHOOSER

637       For X terminals that do not offer a host menu for use with Broadcast or
638       Indirect  queries,  the  chooser  program can do this for them.  In the
639       Xaccess file, specify ``CHOOSER'' as the first entry  in  the  Indirect
640       host  list.  Chooser will send a Query request to each of the remaining
641       host names in the list and offer a menu of all the hosts that respond.
642
643       The list may consist of the word ``BROADCAST,'' in which  case  chooser
644       will  send a Broadcast instead, again offering a menu of all hosts that
645       respond.  Note that on some operating systems, UDP  packets  cannot  be
646       broadcast, so this feature will not work.
647
648       Example Xaccess file using chooser:
649
650       extract.lcs.mit.edu  CHOOSER %HOSTS          #offer a menu of these hosts
651       xtra.lcs.mit.edu     CHOOSER BROADCAST       #offer a menu of all hosts
652
653       The  program to use for chooser is specified by the DisplayManager.DIS‐
654       PLAY.chooser resource.  For more flexibility at this step, the  chooser
655       could  be  a  shell script.  Chooser is the session manager here; it is
656       run instead of a child xdm to manage the display.
657
658       Resources for this program can be put into the file named  by  Display‐
659       Manager.DISPLAY.resources.
660
661       When  the user selects a host, chooser prints the host chosen, which is
662       read by the parent xdm, and exits.  xdm closes its connection to the  X
663       server, and the server resets and sends another Indirect XDMCP request.
664       xdm remembers the user's choice (for DisplayManager.choiceTimeout  sec‐
665       onds)  and forwards the request to the chosen host, which starts a ses‐
666       sion on that display.
667

LISTEN

669       The following configuration directive is also defined for  the  Xaccess
670       configuration file:
671
672       LISTEN interface [list of multicast group addresses]
673              interface  may  be a hostname or IP addresss representing a net‐
674              work interface on this machine, or the wildcard *  to  represent
675              all available network interfaces.
676
677       If  one  or more LISTEN lines are specified, xdm only listens for XDMCP
678       connections on the specified interfaces. If multicast  group  addresses
679       are  listed  on  a  listen  line, xdm joins the multicast groups on the
680       given interface.
681
682       If no LISTEN lines are given, the original behavior of listening on all
683       interfaces  is preserved for backwards compatibility.  Additionally, if
684       no LISTEN is specified, xdm joins  the  default  XDMCP  IPv6  multicast
685       group, when compiled with IPv6 support.
686
687       To  disable listening for XDMCP connections altogther, a line of LISTEN
688       with no addresses may be specified, or the previously supported  method
689       of setting DisplayManager.requestPort to 0 may be used.
690
691       Examples:
692       LISTEN * ff02::1    # Listen on all interfaces and to the
693                           # ff02::1 IPv6 multicast group.
694       LISTEN 10.11.12.13  # Listen only on this interface, as long
695                           # as no other listen directives appear in
696                           # file.
697

IPv6 MULTICAST ADDRESS SPECIFICATION

699       The    Internet   Assigned   Numbers   Authority   has   has   assigned
700       ff0X:0:0:0:0:0:0:12b as the permanently  assigned  range  of  multicast
701       addresses  for  XDMCP. The X in the prefix may be replaced by any valid
702       scope identifier, such as 1 for Node-Local, 2  for  Link-Local,  5  for
703       Site-Local,  and so on.  (See IETF RFC 2373 or its replacement for fur‐
704       ther details and scope definitions.)  xdm defaults to listening on  the
705       Link-Local scope address ff02:0:0:0:0:0:0:12b to most closely match the
706       old IPv4 subnet broadcast behavior.
707

LOCAL SERVER SPECIFICATION

709       The resource DisplayManager.servers gives a server specification or, if
710       the  values  starts  with  a  slash  (/), the name of a file containing
711       server specifications, one per line.
712
713       Each specification indicates a display which should constantly be  man‐
714       aged  and  which is not using XDMCP.  This method is used typically for
715       local servers only.  If the resource or the file named by the  resource
716       is empty, xdm will offer XDMCP service only.
717
718       Each specification consists of at least three parts:  a display name, a
719       display class, a display type, and (for local servers) a  command  line
720       to  start the server.  A typical entry for local display number 0 would
721       be:
722
723         :0 Digital-QV local /usr/bin/X :0
724
725       The display types are:
726
727       local     local display: xdm must run the server
728       foreign   remote display: xdm opens an X connection to a running server
729
730
731       The display name must be something that can be passed in  the  -display
732       option  to  an X program.  This string is used to generate the display-
733       specific resource names, so be careful to match the  names  (e.g.,  use
734       ``:0  Sun-CG3  local  /usr/bin/X  :0'' instead of ``localhost:0 Sun-CG3
735       local /usr/bin/X :0'' if your other resources are specified  as  ``Dis‐
736       playManager._0.session'').   The  display class portion is also used in
737       the display-specific resources, as the class of the resource.  This  is
738       useful  if  you  have a large collection of similar displays (such as a
739       corral of X terminals) and would like to set resources  for  groups  of
740       them.  When using XDMCP, the display is required to specify the display
741       class, so the manual for your particular X terminal should document the
742       display  class  string for your device.  If it doesn't, you can run xdm
743       in debug mode and look at the resource strings which it  generates  for
744       that device, which will include the class string.
745
746       When  xdm  starts  a  session,  it  sets  up authorization data for the
747       server.  For local  servers,  xdm  passes  ``-auth  filename''  on  the
748       server's command line to point it at its authorization data.  For XDMCP
749       servers, xdm passes the authorization data to the server via the Accept
750       XDMCP request.
751

RESOURCES FILE

753       The  Xresources  file is loaded onto the display as a resource database
754       using xrdb.  As the authentication widget reads  this  database  before
755       starting up, it usually contains parameters for that widget:
756
757            xlogin*login.translations: #overrideCtrl<Key>R: abort-display()\n<Key>F1: set-session-argument(failsafe) finish-field()\n<Key>Return: set-session-argument() finish-field()
758
759
760
761            xlogin*borderWidth: 3
762            xlogin*greeting: CLIENTHOST
763            #ifdef COLOR
764            xlogin*greetColor: CadetBlue
765            xlogin*failColor: red
766            #endif
767
768
769       Please note the translations entry; it specifies a few new translations
770       for the widget which allow users to escape  from  the  default  session
771       (and  avoid  troubles that may occur in it).  Note that if #override is
772       not specified, the default translations are removed and replaced by the
773       new value, not a very useful result as some of the default translations
774       are quite useful (such as ``<Key>: insert-char ()'' which  responds  to
775       normal typing).
776
777       This file may also contain resources for the setup program and chooser.
778

SETUP PROGRAM

780       The  Xsetup file is run after the server is reset, but before the Login
781       window is offered.  The file is typically a shell script.  It is run as
782       root, so should be careful about security.  This is the place to change
783       the root background or bring up other windows that should appear on the
784       screen along with the Login widget.
785
786       In  addition to any specified by DisplayManager.exportList, the follow‐
787       ing environment variables are passed:
788
789            DISPLAY        the associated display name
790            PATH           the value of DisplayManager.DISPLAY.systemPath
791            SHELL          the value of DisplayManager.DISPLAY.systemShell
792            XAUTHORITY     may be set to an authority file
793
794       Note that since xdm grabs the keyboard, any other windows will  not  be
795       able to receive keyboard input.  They will be able to interact with the
796       mouse, however; beware of potential security holes here.   If  Display‐
797       Manager.DISPLAY.grabServer  is  set, Xsetup will not be able to connect
798       to the display at all.  Resources for this program can be put into  the
799       file named by DisplayManager.DISPLAY.resources.
800
801       Here is a sample Xsetup script:
802
803            #!/bin/sh
804            # Xsetup_0 - setup script for one workstation
805            xcmsdb < /etc/X11/xdm/monitors/alex.0
806            xconsole -geometry 480x130-0-0 -notify -verbose -exitOnFail &
807
808

AUTHENTICATION WIDGET

810       The  authentication widget prompts the user for the username, password,
811       and/or other required authentication data from  the  keyboard.   Nearly
812       every   imaginable   parameter  can  be  controlled  with  a  resource.
813       Resources for this widget should be put into the file named by Display‐
814       Manager.DISPLAY.resources.   All  of these have reasonable default val‐
815       ues, so it is not necessary to specify any of them.
816
817       The resource file is loaded with xrdb(1) so it may  use  the  substitu‐
818       tions  defined  by that program such as CLIENTHOST for the client host‐
819       name in the login message, or C pre-processor #ifdef statements to pro‐
820       duce different displays depending on color depth or other variables.
821
822       Xdm  can  be compiled with support for the Xft(3) library for font ren‐
823       dering.   If this support is present, font faces  are  specified  using
824       the resources with names ending in "face" in the fontconfig face format
825       described in the Font Names section of  fonts.conf(5).   If  not,  then
826       fonts  are specified using the resources with names ending in "font" in
827       the traditional X Logical Font Description format described in the Font
828       Names section of X(7).
829
830       xlogin.Login.width, xlogin.Login.height, xlogin.Login.x, xlogin.Login.y
831              The  geometry of the Login widget is normally computed automati‐
832              cally.  If you wish to position it elsewhere,  specify  each  of
833              these resources.
834
835       xlogin.Login.foreground
836              The color used to display the input typed by the user.
837
838       xlogin.Login.face
839              The  face used to display the input typed by the user when built
840              with Xft support.  The default is ``Serif-18''.
841
842       xlogin.Login.font
843              The font used to display the input typed by the  user  when  not
844              built with Xft support.
845
846       xlogin.Login.greeting
847              A  string which identifies this window.  The default is ``X Win‐
848              dow System.''
849
850       xlogin.Login.unsecureGreeting
851              When X authorization is requested in the configuration file  for
852              this  display  and  none  is  in use, this greeting replaces the
853              standard greeting.  The default is ``This is  an  unsecure  ses‐
854              sion''
855
856       xlogin.Login.greetFace
857              The  face  used to display the greeting when built with Xft sup‐
858              port.  The default is ``Serif-24:italic''.
859
860       xlogin.Login.greetFont
861              The font used to display the greeting when not  built  with  Xft
862              support.
863
864       xlogin.Login.greetColor
865              The color used to display the greeting.
866
867       xlogin.Login.namePrompt
868              The  string  displayed  to  prompt for a user name.  Xrdb strips
869              trailing white space from resource values, so to add  spaces  at
870              the end of the prompt (usually a nice thing), add spaces escaped
871              with backslashes.  The default is ``Login:  ''
872
873       xlogin.Login.passwdPrompt
874              The string displayed to prompt for a password, when not using an
875              authentication system such as PAM that provides its own prompts.
876              The default is ``Password:  ''
877
878       xlogin.Login.promptFace
879              The face used to display prompts when built  with  Xft  support.
880              The default is ``Serif-18:bold''.
881
882       xlogin.Login.promptFont
883              The  font  used  to display prompts when not built with Xft sup‐
884              port.
885
886       xlogin.Login.promptColor
887              The color used to display prompts.
888
889       xlogin.Login.changePasswdMessage
890              A message  which  is  displayed  when  the  users  password  has
891              expired.  The default is ``Password Change Required''
892
893       xlogin.Login.fail
894              A message which is displayed when the authentication fails, when
895              not using an authentication system such as PAM that provides its
896              own prompts.  The default is ``Login incorrect''
897
898       xlogin.Login.failFace
899              The face used to display the failure message when built with Xft
900              support.  The default is ``Serif-18:bold''.
901
902       xlogin.Login.failFont
903              The font used to display the failure message when not built with
904              Xft support.
905
906       xlogin.Login.failColor
907              The color used to display the failure message.
908
909       xlogin.Login.failTimeout
910              The  number  of  seconds  that the failure message is displayed.
911              The default is 10.
912
913       xlogin.Login.logoFileName
914              Name of an XPM format pixmap to display in the  greeter  window,
915              if built with XPM support.   The default is no pixmap.
916
917       xlogin.Login.logoPadding
918              Number of pixels of space between the logo pixmap and other ele‐
919              ments of the greeter window, if the pixmap  is  displayed.   The
920              default is 5.
921
922       xlogin.Login.useShape
923              If  set to ``true'', when built with XPM support, attempt to use
924              the X Non-Rectangular Window Shape Extension to set  the  window
925              shape.  The default is ``true''.
926
927       xlogin.Login.hiColor, xlogin.Login.shdColor
928              Raised  appearance  bezels may be drawn around the greeter frame
929              and text input boxes by setting these resources.  hiColor is the
930              highlight  color,  used  on the top and left sides of the frame,
931              and the bottom and right sides of text input  areas.    shdColor
932              is  the  shadow color, used on the bottom and right sides of the
933              frame, and the top and left sides  of  text  input  areas.   The
934              default  for  both  is  the  foreground  color, providing a flat
935              appearance.
936
937       xlogin.Login.frameWidth
938              frameWidth is the width in pixels of the area around the greeter
939              frame drawn in hiColor and shdColor.
940
941       xlogin.Login.innerFramesWidth
942              innerFramesWidth  is the width in pixels of the area around text
943              input areas drawn in hiColor and shdColor.
944
945       xlogin.Login.sepWidth
946              sepWidth is the width in pixels of the bezeled line between  the
947              greeting and input areas drawn in hiColor and shdColor.
948
949       xlogin.Login.allowRootLogin
950              If  set  to ``false'', don't allow root (and any other user with
951              uid = 0) to log in directly.  The default is ``true''.
952
953       xlogin.Login.allowNullPasswd
954              If set to ``true'', allow an otherwise failing password match to
955              succeed  if the account does not require a password at all.  The
956              default is ``false'', so only users that have passwords assigned
957              can log in.
958
959       xlogin.Login.translations
960              This  specifies  the  translations  used  for  the login widget.
961              Refer to the X Toolkit documentation for a  complete  discussion
962              on translations.  The default translation table is:
963
964                   Ctrl<Key>H:    delete-previous-character() \nCtrl<Key>D:delete-character() \nCtrl<Key>B:move-backward-character() \nCtrl<Key>F:move-forward-character() \nCtrl<Key>A:move-to-begining() \nCtrl<Key>E:move-to-end() \nCtrl<Key>K:erase-to-end-of-line() \nCtrl<Key>U:erase-line() \nCtrl<Key>X:erase-line() \nCtrl<Key>C:restart-session() \nCtrl<Key>\\:abort-session() \n<Key>BackSpace:delete-previous-character() \n<Key>Delete:delete-previous-character() \n<Key>Return:finish-field() \n<Key>:insert-char() .fi
965
966       The actions which are supported by the widget are:
967
968       delete-previous-character
969              Erases the character before the cursor.
970
971       delete-character
972              Erases the character after the cursor.
973
974       move-backward-character
975              Moves the cursor backward.
976
977       move-forward-character
978              Moves the cursor forward.
979
980       move-to-begining
981              (Apologies about the spelling error.)
982              Moves the cursor to the beginning of the editable text.
983
984       move-to-end
985              Moves the cursor to the end of the editable text.
986
987       erase-to-end-of-line
988              Erases all text after the cursor.
989
990       erase-line
991              Erases the entire text.
992
993       finish-field
994              If the cursor is in the name field, proceeds to the password field; if the
995              cursor is in the password field, checks the current name/password pair.  If
996              the name/password pair is valid, xdm
997              starts the session.  Otherwise the failure message is displayed and
998              the user is prompted again.
999
1000       abort-session
1001              Terminates and restarts the server.
1002
1003       abort-display
1004              Terminates the server, disabling it.  This action
1005              is not accessible in the default configuration.
1006              There are various reasons to stop xdm on a system console, such as
1007              when shutting the system down, when using xdmshell,
1008              to start another type of server, or to generally access the console.
1009              Sending xdm a SIGHUP will restart the display.  See the section
1010              Controlling XDM.
1011
1012       restart-session
1013              Resets the X server and starts a new session.  This can be used when
1014              the resources have been changed and you want to test them or when
1015              the screen has been overwritten with system messages.
1016
1017       insert-char
1018              Inserts the character typed.
1019
1020       set-session-argument
1021              Specifies a single word argument which is passed to the session at startup.
1022              See the section Session Program.
1023
1024       allow-all-access
1025              Disables access control in the server.  This can be used when
1026              the .Xauthority file cannot be created by
1027              xdm.
1028              Be very careful using this;
1029              it might be better to disconnect the machine from the network
1030              before doing this.
1031
1032       On some systems (OpenBSD) the user's shell must be listed in
1033       /etc/shells
1034       to allow login through xdm. The normal password and account expiration
1035       dates are enforced too.
1036

STARTUP PROGRAM

1038       The Xstartup program is run as root when the user logs in.  It is typi‐
1039       cally a shell script.  Since it is run as root, Xstartup should be very
1040       careful  about  security.   This is the place to put commands which add
1041       entries to /etc/utmp (the sessreg program may be  useful  here),  mount
1042       users'  home  directories  from  file  servers, or abort the session if
1043       logins are not allowed.
1044
1045       In addition to any specified by DisplayManager.exportList, the  follow‐
1046       ing environment variables are passed:
1047
1048            DISPLAY        the associated display name
1049            HOME           the initial working directory of the user
1050            LOGNAME        the user name
1051            USER           the user name
1052            PATH           the value of DisplayManager.DISPLAY.systemPath
1053            SHELL          the value of DisplayManager.DISPLAY.systemShell
1054            XAUTHORITY     may be set to an authority file
1055            WINDOWPATH     may be set to the "window path" leading to the X server
1056
1057
1058       No  arguments  are  passed  to the script.  Xdm waits until this script
1059       exits before starting the user session.  If  the  exit  value  of  this
1060       script  is  non-zero,  xdm  discontinues the session and starts another
1061       authentication cycle.
1062
1063       The sample Xstartup file shown  here  prevents  login  while  the  file
1064       /etc/nologin exists.  Thus this is not a complete example, but simply a
1065       demonstration of the available functionality.
1066
1067       Here is a sample Xstartup script:
1068
1069            #!/bin/sh
1070            #
1071            # Xstartup
1072            #
1073            # This program is run as root after the user is verified
1074            #
1075            if [ -f /etc/nologin ]; then
1076                 xmessage -file /etc/nologin -timeout 30 -center
1077                 exit 1
1078            fi
1079            sessreg -a -l $DISPLAY -x /etc/X11/xdm/Xservers $LOGNAME
1080            /etc/X11/xdm/GiveConsole
1081            exit 0
1082

SESSION PROGRAM

1084       The Xsession program is the command which is run as the user's session.
1085       It is run with the permissions of the authorized user.
1086
1087       In  addition to any specified by DisplayManager.exportList, the follow‐
1088       ing environment variables are passed:
1089
1090            DISPLAY        the associated display name
1091            HOME           the initial working directory of the user
1092            LOGNAME        the user name
1093            USER           the user name
1094            PATH           the value of DisplayManager.DISPLAY.userPath
1095            SHELL          the user's default shell (from getpwnam)
1096            XAUTHORITY     may be set to a non-standard authority file
1097            KRB5CCNAME     may be set to a Kerberos credentials cache name
1098            WINDOWPATH     may be set to the "window path" leading to the X server
1099
1100
1101       At most installations, Xsession should look in $HOME for a file  .xses‐
1102       sion,  which  contains  commands  that each user would like to use as a
1103       session.  Xsession should also implement a system default session if no
1104       user-specified session exists.
1105
1106       An  argument may be passed to this program from the authentication wid‐
1107       get using the `set-session-argument'  action.   This  can  be  used  to
1108       select different styles of session.  One good use of this feature is to
1109       allow the user to escape from the ordinary session when it fails.  This
1110       allows users to repair their own .xsession if it fails, without requir‐
1111       ing administrative intervention.  The  example  following  demonstrates
1112       this feature.
1113
1114       This example recognizes the special ``failsafe'' mode, specified in the
1115       translations in the Xresources file, to  provide  an  escape  from  the
1116       ordinary  session.   It  also  requires that the .xsession file be exe‐
1117       cutable so we don't have to guess what shell it wants to use.
1118
1119            #!/bin/sh
1120            #
1121            # Xsession
1122            #
1123            # This is the program that is run as the client
1124            # for the display manager.
1125
1126            case $# in
1127            1)
1128                 case $1 in
1129                 failsafe)
1130                      exec xterm -geometry 80x24-0-0
1131                      ;;
1132                 esac
1133            esac
1134
1135            startup=$HOME/.xsession
1136            resources=$HOME/.Xresources
1137
1138            if [ -f "$startup" ]; then
1139                 exec "$startup"
1140            else
1141                 if [ -f "$resources" ]; then
1142                      xrdb -load "$resources"
1143                 fi
1144                 twm &
1145                 xman -geometry +10-10 &
1146                 exec xterm -geometry 80x24+10+10 -ls
1147            fi
1148
1149
1150       The user's .xsession file  might  look  something  like  this  example.
1151       Don't forget that the file must have execute permission.
1152            #! /bin/csh
1153            # no -f in the previous line so .cshrc gets run to set $PATH
1154            twm &
1155            xrdb -merge "$HOME/.Xresources"
1156            emacs -geometry +0+50 &
1157            xbiff -geometry -430+5 &
1158            xterm -geometry -0+50 -ls
1159

RESET PROGRAM

1161       Symmetrical with Xstartup, the Xreset script is run after the user ses‐
1162       sion has terminated.  Run as root, it should contain commands that undo
1163       the effects of commands in Xstartup, removing entries from /etc/utmp or
1164       unmounting directories from file servers.   The  environment  variables
1165       that were passed to Xstartup are also passed to Xreset.
1166
1167       A sample Xreset script:
1168            #!/bin/sh
1169            #
1170            # Xreset
1171            #
1172            # This program is run as root after the session ends
1173            #
1174            sessreg -d -l $DISPLAY -x /etc/X11/xdm/Xservers $LOGNAME
1175            /etc/X11/xdm/TakeConsole
1176            exit 0
1177

CONTROLLING THE SERVER

1179       Xdm  controls local servers using POSIX signals.  SIGHUP is expected to
1180       reset the server, closing all client connections and  performing  other
1181       cleanup duties.  SIGTERM is expected to terminate the server.  If these
1182       signals do not perform the expected actions, the resources  DisplayMan‐
1183       ager.DISPLAY.resetSignal   and   DisplayManager.DISPLAY.termSignal  can
1184       specify alternate signals.
1185
1186       To control remote terminals not using XDMCP, xdm  searches  the  window
1187       hierarchy on the display and uses the protocol request KillClient in an
1188       attempt to clean up the terminal for the next session.   This  may  not
1189       actually kill all of the clients, as only those which have created win‐
1190       dows will be noticed.  XDMCP provides a more sure mechanism;  when  xdm
1191       closes  its initial connection, the session is over and the terminal is
1192       required to close all other connections.
1193

CONTROLLING XDM

1195       Xdm responds to two signals: SIGHUP and SIGTERM.  When sent  a  SIGHUP,
1196       xdm  rereads  the  configuration file, the access control file, and the
1197       servers file.  For the servers file, it notices if  entries  have  been
1198       added  or removed.  If a new entry has been added, xdm starts a session
1199       on the associated display.  Entries which have been  removed  are  dis‐
1200       abled  immediately, meaning that any session in progress will be termi‐
1201       nated without notice and no new session will be started.
1202
1203       When sent a SIGTERM, xdm terminates all sessions in progress and exits.
1204       This can be used when shutting down the system.
1205
1206       Xdm attempts to mark its various sub-processes for ps(1) by editing the
1207       command line argument list in place.  Because xdm can't allocate  addi‐
1208       tional space for this task, it is useful to start xdm with a reasonably
1209       long command line (using the full path name should  be  enough).   Each
1210       process which is servicing a display is marked -display.
1211

ADDITIONAL LOCAL DISPLAYS

1213       To  add  an additional local display, add a line for it to the Xservers
1214       file.  (See the section Local Server Specification.)
1215
1216       Examine the display-specific resources in xdm-config (e.g., DisplayMan‐
1217       ager._0.authorize)  and consider which of them should be copied for the
1218       new display.  The default xdm-config has all the appropriate lines  for
1219       displays :0 and :1.
1220

OTHER POSSIBILITIES

1222       You  can  use xdm to run a single session at a time, using the 4.3 init
1223       options or other suitable daemon by specifying the server on  the  com‐
1224       mand line:
1225
1226            xdm -server “:0 SUN-3/60CG4 local /usr/bin/X :0”
1227
1228
1229       Or,  you might have a file server and a collection of X terminals.  The
1230       configuration for this is identical to the  sample  above,  except  the
1231       Xservers file would look like
1232
1233            extol:0 VISUAL-19 foreign
1234            exalt:0 NCD-19 foreign
1235            explode:0 NCR-TOWERVIEW3000 foreign
1236
1237
1238       This  directs  xdm  to manage sessions on all three of these terminals.
1239       See the section Controlling Xdm for a description of using  signals  to
1240       enable and disable these terminals in a manner reminiscent of init(8).
1241

LIMITATIONS

1243       One  thing  that  xdm isn't very good at doing is coexisting with other
1244       window systems.  To use multiple window systems on the  same  hardware,
1245       you'll probably be more interested in xinit.
1246

FILES

1248       /etc/X11/xdm/xdm-config
1249                           the default configuration file
1250
1251       $HOME/.Xauthority   user  authorization  file where xdm stores keys for
1252                           clients to read
1253
1254       /usr/lib64/X11/xdm/chooser
1255                           the default chooser
1256
1257       /usr/bin/xrdb       the default resource database loader
1258
1259       /usr/bin/X          the default server
1260
1261       /usr/bin/xterm      the default session program and failsafe client
1262
1263       /etc/X11/xdm/A<display>-<suffix>
1264                           the default place for authorization files
1265
1266       /tmp/K5C<display>   Kerberos credentials cache
1267

SEE ALSO

1269       X(7),   xinit(1),   xauth(1),   xrdb(1),   Xsecurity(7),    sessreg(1),
1270       Xserver(1), fonts.conf(5).
1271       X Display Manager Control Protocol
1272

AUTHOR

1274       Keith Packard, MIT X Consortium
1275
1276
1277
1278X Version 11                       xdm 1.1.6                            XDM(1)
Impressum