~darkxst/ubuntu/trusty/gdm/nokill

1.4.51 by Jeremy Bicha
Import upstream version 3.5.91
1
<?xml version="1.0" encoding="utf-8"?>
2
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
3
<!ENTITY legal SYSTEM "legal.xml">
4
<!ENTITY version "2.26.0">
5
<!ENTITY date "02/10/2009">
6
<!ENTITY mdash "&#8212;">
7
<!ENTITY percnt "&#x0025;">
8
]>
9
<article id="index" lang="oc">
10
  <articleinfo>
11
    <title lang="en">GNOME Display Manager Reference Manual</title>
12
13
    <revhistory>
14
      <revision lang="en">
15
        <revnumber>0.0</revnumber>
16
        <date>2008-09</date>
17
      </revision>
18
    </revhistory>
19
20
    <abstract role="description">
21
      <para lang="en">
22
        GDM is the GNOME Display Manager, a graphical login program.
23
      </para>
24
    </abstract>
25
26
    <authorgroup>
27
      <author lang="en">
28
        <firstname>Martin</firstname><othername>K.</othername>
29
           <surname>Petersen</surname>
30
        <affiliation>
31
          <address><email>mkp@mkp.net</email></address>
32
        </affiliation>
33
      </author>
34
      <author lang="en">
35
        <firstname>George</firstname><surname>Lebl</surname>
36
        <affiliation>
37
          <address><email>jirka@5z.com</email></address>
38
        </affiliation>
39
      </author>
40
      <author lang="en">
41
        <firstname>Jon</firstname><surname>McCann</surname>
42
        <affiliation>
43
          <address><email>mccann@jhu.edu</email></address>
44
        </affiliation>
45
      </author>
46
      <author lang="en">
47
        <firstname>Ray</firstname><surname>Strode</surname>
48
        <affiliation>
49
          <address><email>rstrode@redhat.com</email></address>
50
        </affiliation>
51
      </author>
52
      <author role="maintainer" lang="en">
53
        <firstname>Brian</firstname><surname>Cameron</surname>
54
        <affiliation>
55
          <address><email>Brian.Cameron@Oracle.COM</email></address>
56
        </affiliation>
57
      </author>
58
    </authorgroup>
59
    <copyright lang="en">
60
      <year>1998</year>
61
      <year>1999</year>
62
      <holder>Martin K. Petersen</holder>
63
    </copyright>
64
    <copyright lang="en">
65
      <year>2001</year>
66
      <year>2003</year>
67
      <year>2004</year>
68
      <holder>George Lebl</holder>
69
    </copyright>
70
    <copyright lang="en">
71
      <year>2003</year>
72
      <year>2007</year>
73
      <year>2008</year>
74
      <holder>Red Hat, Inc.</holder>
75
    </copyright>
76
    <copyright lang="en">
77
      <year>2003</year>
78
       <year>2011</year>
79
       <holder>Oracle and/or its affiliates. All rights reserved.</holder>
80
    </copyright>
81
82
      <legalnotice id="legalnotice">
83
	<para lang="en">
84
	  Permission is granted to copy, distribute and/or modify this
85
	  document under the terms of the GNU Free Documentation
86
	  License (GFDL), Version 1.1 or any later version published
87
	  by the Free Software Foundation with no Invariant Sections,
88
	  no Front-Cover Texts, and no Back-Cover Texts.  You can find
89
	  a copy of the GFDL at this <ulink type="help" url="ghelp:fdl">link</ulink> or in the file COPYING-DOCS
90
	  distributed with this manual.
91
         </para>
92
         <para lang="en"> This manual is part of a collection of GNOME manuals
93
          distributed under the GFDL.  If you want to distribute this
94
          manual separately from the collection, you can do so by
95
          adding a copy of the license to the manual, as described in
96
          section 6 of the license.
97
	</para>
98
99
	<para lang="en">
100
	  Many of the names used by companies to distinguish their
101
	  products and services are claimed as trademarks. Where those
102
	  names appear in any GNOME documentation, and the members of
103
	  the GNOME Documentation Project are made aware of those
104
	  trademarks, then the names are in capital letters or initial
105
	  capital letters.
106
	</para>
107
108
	<para lang="en">
109
	  DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED
110
	  UNDER  THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE
111
	  WITH THE FURTHER UNDERSTANDING THAT:
112
113
	  <orderedlist>
114
		<listitem>
115
		  <para lang="en">DOCUMENT IS PROVIDED ON AN "AS IS" BASIS,
116
                    WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
117
                    IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
118
                    THAT THE DOCUMENT OR MODIFIED VERSION OF THE
119
                    DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR
120
                    A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE
121
                    RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE
122
                    OF THE DOCUMENT OR MODIFIED VERSION OF THE
123
                    DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR
124
                    MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT,
125
                    YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY
126
                    CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
127
                    SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
128
                    OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
129
                    LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED
130
                    VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER
131
                    EXCEPT UNDER THIS DISCLAIMER; AND
132
		  </para>
133
		</listitem>
134
		<listitem>
135
		  <para lang="en">UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL
136
                       THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE),
137
                       CONTRACT, OR OTHERWISE, SHALL THE AUTHOR,
138
                       INITIAL WRITER, ANY CONTRIBUTOR, OR ANY
139
                       DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION
140
                       OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH
141
                       PARTIES, BE LIABLE TO ANY PERSON FOR ANY
142
                       DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
143
                       CONSEQUENTIAL DAMAGES OF ANY CHARACTER
144
                       INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS
145
                       OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR
146
                       MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR
147
                       LOSSES ARISING OUT OF OR RELATING TO USE OF THE
148
                       DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT,
149
                       EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF
150
                       THE POSSIBILITY OF SUCH DAMAGES.
151
		  </para>
152
		</listitem>
153
	  </orderedlist>
154
	</para>
155
  </legalnotice>
156
157
158
159
    <releaseinfo lang="en">
160
       This manual describes version 2.26.0 of the GNOME Display Manager.
161
       It was last updated on 02/10/2009.
162
    </releaseinfo>  
163
  </articleinfo>
164
165
  <!-- ============= Preface ================================== -->
166
167
  <sect1 id="preface">
168
    <title lang="en">Terms and Conventions Used in This Manual</title>
169
170
    <para lang="en">
171
      This manual describes version 2.26.0 of the GNOME Display Manager.
172
      It was last updated on 02/10/2009.
173
    </para>  
174
175
    <para lang="en">
176
      Chooser - A program used to select a remote host for managing a
177
      display remotely on the attached display (<command>gdm-host-chooser</command>).
178
    </para>
179
180
    <para lang="en">
181
      FreeDesktop - The organization providing desktop standards, such as the
182
      Desktop Entry Specification used by GDM.
183
      <ulink type="http" url="http://www.freedesktop.org/">
184
      http://www.freedesktop.org</ulink>.
185
    </para>
186
    <para lang="en">
187
      GDM - GNOME Display Manager. Used to describe the software package as a
188
      whole.
189
    </para>
190
191
    <para lang="en">
192
      Greeter - The graphical login window (<command>gdm-simple-greeter</command>).
193
    </para>
194
195
    <para lang="en">
196
      PAM - Pluggable Authentication Mechanism
197
    </para>
198
199
    <para lang="en">
200
      XDMCP - X Display Manage Protocol
201
    </para>
202
203
    <para lang="en">
204
      Xserver - An implementation of the X Window System.  For example the
205
      Xorg Xserver provided by the X.org Foundation
206
      <ulink type="http" url="http://www.x.org/">http://www.x.org</ulink>.
207
    </para>
208
209
    <para lang="en">
210
      Paths that start with a word in angle brackets are relative to the
211
      installation prefix. I.e. <filename>&lt;share&gt;/pixmaps/</filename>
212
      refers to <filename>/usr/share/pixmaps</filename> if GDM was
213
      configured with <command>--prefix=/usr</command>.
214
    </para>
215
  </sect1>
216
217
  <!-- ============= Overview ================================= -->
218
219
  <sect1 id="overview">
220
    <title lang="en">Overview</title>
221
222
    <sect2 id="introduction">
223
      <title lang="en">Introduction</title>
224
225
      <para lang="en"> 
226
        The GNOME Display Manager (GDM) is a display manager that implements
227
        all significant features required for managing attached and remote
228
        displays.  GDM was written from scratch and does not contain any XDM or
229
        X Consortium code.
230
      </para>
231
232
      <para lang="en">
233
        Note that GDM is configurable, and many configuration settings have
234
        an impact on security. Issues to be aware of are highlighted in this
235
        document.
236
      </para> 
237
238
      <para lang="en">
239
        Please note that some Operating Systems configure GDM to behave
240
        differently than the default values as described in this document.  If
241
        GDM does not seem to behave as documented, then check to see if any 
242
        related configuration may be different than described here.
243
      </para>
244
245
      <para lang="en">
246
        For further information about GDM, refer to the project website at
247
        <ulink type="http" url="http://www.gnome.org/projects/gdm/">
248
        http://www.gnome.org/projects/gdm</ulink> and the project
249
        Wiki <ulink type="http" url="http://live.gnome.org/GDM">
250
        http://live.gnome.org/GDM</ulink>.
251
      </para>
252
253
      <para lang="en">
254
        For discussion or queries about GDM, refer to the
255
        <address><email>gdm-list@gnome.org</email></address> mail list.  This
256
        list is archived, and is a good resource to check to seek answers to
257
        common questions.  This list is archived at
258
        <ulink type="http" url="http://mail.gnome.org/archives/gdm-list/">
259
        http://mail.gnome.org/archives/gdm-list/</ulink> and has a search
260
        facility to look for messages with keywords.
261
      </para>
262
263
      <para lang="en">
264
        Please submit any bug reports or enhancement requests to the
265
        "gdm" category in
266
        <ulink type="http" url="http://bugzilla.gnome.org/">
267
        http://bugzilla.gnome.org</ulink>.
268
      </para>
269
    </sect2>
270
271
    <sect2 id="stability">
272
      <title lang="en">Interface Stability</title>
273
274
      <para lang="en">
275
        GDM 2.20 and earlier supported stable configuration interfaces.
276
        However, the codebase was completely rewritten for GDM 2.22, and
277
        is not completely backward compatible with older releases. This is
278
        in part because things work differently, so some options just don't
279
        make sense, in part because some options never made sense, and in
280
        part because some functionality has not been reimplemented yet.
281
      </para>
282
283
      <para lang="en">
284
        Interfaces which continue to be supported in a stable fashion include
285
        the Init, PreSession, PostSession, PostLogin, and Xsession scripts.
286
        Some daemon configuration options in the 
287
        <filename>&lt;etc&gt;/gdm/custom.conf</filename> file continue to be
288
        supported.  Also, the <filename>~/.dmrc</filename>, and face browser
289
        image locations are still supported.
290
      </para>
291
292
      <para lang="en">
293
        GDM 2.20 and earlier supported the ability to manage multiple displays
294
        with separate graphics cards, such as used in terminal server
295
        environments, login in a window via a program like Xnest or Xephyr, the
296
        gdmsetup program, XML-based greeter themes, and the ability to run the
297
        XDMCP chooser from the login screen.  These features were not 
298
        added back during the 2.22 rewrite.
299
      </para>
300
301
    </sect2>
302
303
    <sect2 id="functionaldesc">
304
      <title lang="en">Functional Description</title>
305
306
<!--
307
<para>
308
        TODO - Would be good to discuss D-Bus, perhaps the new GObject model,
309
               and to explain the reasons why the rewrite made GDM better.
310
               From a high-level overview perspective, rather than the
311
               technical aspects.
312
</para>
313
-->
314
315
      <para lang="en">
316
        GDM is responsible for managing displays on the system.  This includes
317
        authenticating users, starting the user session, and terminating the
318
        user session.  GDM is configurable and the ways it can be configured
319
        are described in the "Configuring GDM" section of this
320
        document.  GDM is also accessible for users with disabilities.
321
      </para>
322
323
      <para lang="en">
324
        GDM provides the ability to manage the main console display, and 
325
        displays launched via VT.  It is integrated with other programs, 
326
        such as the Fast User Switch Applet (FUSA) and gnome-screensaver
327
        to manage multiple displays on the console via the Xserver Virtual
328
        Terminal (VT) interface.  It also can manage XDMCP displays.  
329
      </para>
330
331
      <para lang="en">
332
        Regardless of the display type, GDM will do the following when it
333
        manages the display.  It will start an Xserver process, then run the
334
        <filename>Init</filename> script as the root user, and start the
335
        greeter program on the display.
336
      </para>
337
338
      <para lang="en">
339
        The greeter program is run as the unprivileged "gdm"
340
        user/group.  This user and group are described in the
341
        "Security" section of this document.  The main functions of
342
        the greeter program are to provide a mechanism for selecting
343
        an account for log in and to drive the dialogue between
344
        the user and system when authenticating that account. The authentication
345
        process is driven by Pluggable Authentication Modules (PAM).  The PAM
346
        modules determine what prompts (if any) are shown to the user to
347
        authenticate.  On the average system, the greeter program will request
348
        a username and password for authentication.  However some systems may
349
        be configured to use supplemental mechanisms such as a fingerprint or
350
        SmartCard readers. GDM can be configured to support these
351
        alternatives in parallel with greeter login extensions and the
352
        <command>--enable-split-authentication</command>
353
        <filename>./configure</filename> option, or one at a
354
        time via system PAM configuration.
355
      </para>
356
357
      <para lang="en">
358
         The smartcard extension can be enabled or disabled via the
359
         <filename>org.gnome.display-manager.extensions.smartcard.active</filename>
360
         gsettings key.
361
      </para>
362
363
      <para lang="en">
364
         Likewise, the fingerprint extension can be enabled or disabled via the
365
         <filename>org.gnome.display-manager.extensions.fingerprint.active</filename>
366
         gsettings key.
367
      </para>
368
369
      <para lang="en">
370
        GDM and PAM can be configured to not require any
371
        input, which will cause GDM to automatically log in and simply
372
        start a session, which can be useful for some environments, such as
373
        single user systems or kiosks.
374
      </para>
375
376
      <para lang="en">
377
        In addition to authentication, the greeter program allows the user to
378
        select which session to start and which language to use.  Sessions are
379
        defined by files that end in the .desktop suffix and more information
380
        about these files can be found in the "GDM User Session and Language
381
        Configuration" section of this document.  By default, GDM is configured
382
        to display a face browser so the user can select their user account by
383
        clicking on an image instead of having to type their username. GDM
384
        keeps track of the user's default session and language in the user's
385
        <filename>~/.dmrc</filename> and will use these defaults if the user
386
        did not pick a session or language in the login GUI.
387
      </para>
388
389
      <para lang="en"> 
390
        After authenticating a user, the daemon runs the
391
        <filename>PostLogin</filename> script as root, then runs the  
392
        <filename>PreSession</filename> script as root.  After running these
393
        scripts, the user session is started.  When the user exits their 
394
        session, the <filename>PostSession</filename> script is run as root.
395
        These scripts are provided as hooks for distributions and end-users
396
        to customize how sessions are managed.  For example, using these 
397
        hooks you could set up a machine which creates the user's $HOME
398
        directory on the fly, and erases it on logout.  The difference 
399
        between the <filename>PostLogin</filename> and
400
        <filename>PreSession</filename> scripts is that
401
        <filename>PostLogin</filename> is run before the pam_open_session call
402
        so is the right place to do anything which should be run before the
403
        user session is initialized.  The <filename>PreSession</filename>
404
        script is called after session initialization.
405
      </para>
406
    </sect2>
407
408
    <sect2 id="greeterpanel">
409
      <title lang="en">Greeter Panel</title>
410
      <para lang="en">
411
        The GDM greeter program displays a panel docked at the bottom of the
412
        screen which provides additional functionality.  When a user is
413
        selected, the panel allows the user to select which session, language,
414
        and keyboard layout to use after logging in.  The keyboard layout
415
        selector also changes the keyboard layout used when typing your
416
        password.  The panel also contains an area for login services to leave
417
        status icons.  Some example status icons include a battery icon for
418
        current battery usage, and an icon for enabling accessibility features.
419
        The greeter program also provides buttons which allow the user to
420
        shutdown or restart the system.  It is possible to configure GDM to not
421
        provide the shutdown and restart buttons, if desired.  GDM can also be
422
        configured via PolicyKit (or via RBAC on Oracle Solaris) to require the
423
        user have appropriate authorization before accepting the shutdown or
424
        restart request.
425
      </para>
426
427
      <para lang="en">
428
        Note that keyboard layout features are only available on systems that
429
        support libxklavier.
430
      </para>
431
    </sect2>
432
433
    <sect2 id="accessibility">
434
      <title lang="en">Accessibility</title>
435
436
        <para lang="en">
437
          GDM supports "Accessible Login", allowing users to log into
438
          their desktop session even if they cannot easily use the screen,
439
          mouse, or keyboard in the usual way.  Accessible Technology (AT)
440
          features such as an on-screen keyboard, screen reader, screen
441
          magnifier, and Xserver AccessX keyboard accessibility are available.
442
          It is also possible to enable large text or high contrast icons and
443
          controls, if needed.  Refer to the "Accessibility
444
          Configuration" section of the document for more information
445
          how various accessibility features can be configured.
446
        </para>
447
448
        <para lang="en">
449
          On some Operating Systems, it is necessary to make sure that the GDM
450
          user is a member of the "audio" group for AT programs that
451
          require audio output (such as text-to-speech) to be functional.
452
        </para>
453
    </sect2>
454
455
    <sect2 id="facebrowser">
456
      <title lang="en">The GDM Face Browser</title>
457
458
      <para lang="en">
459
        The Face Browser is the interface which allows users to select their
460
        username by clicking on an image.  This feature can be enabled or
461
        disabled via the /apps/gdm/simple-greeter/disable_user_list GConf
462
        key and is on by default.  When disabled, users must type their
463
        complete username by hand.  When enabled, it displays all local users
464
        which are available for login on the system (all user accounts defined
465
        in the /etc/passwd file that have a valid shell and sufficiently high
466
        UID) and remote users that have recently logged in.
467
        The face browser in GDM 2.20 and earlier would attempt to display all
468
        remote users, which caused performance problems in large,
469
        enterprise deployments.
470
      </para>
471
472
      <para lang="en">
473
        The Face Browser is configured to display the users who log in most
474
        frequently at the top of the list.  This helps to ensure that users
475
        who log in frequently can quickly find their login image.
476
      </para>
477
478
      <para lang="en">
479
        The Face Browser supports "type-ahead search" which dynamically
480
        moves the face selection as the user types to the corresponding username
481
        in the list.  This means that a user with a long username will only
482
        have to type the first few characters of the username before the correct
483
        item in the list gets selected.
484
      </para>
485
486
      <para lang="en">
487
        The icons used by GDM can be installed globally by the sysadmin or can
488
        be located in the user's home directories.  If installed globally
489
        they should be in the <filename>&lt;share&gt;/pixmaps/faces/</filename>
490
        directory and the filename should be the name of the user.  Face image
491
        files should be a standard image that GTK+ can read, such as PNG or
492
        JPEG.  Face icons placed in the global face directory must be readable
493
        to the GDM user.
494
      </para>
495
496
<!--
497
<para>
498
        TODO - In the old GDM the ~/gnome2/gdm file is used, but the new code
499
               seems to use ~/.gnome/gdm.  Error?
500
</para>
501
-->
502
      <para lang="en">
503
        If there is no global icon for the user, GDM will look in the user's
504
        $HOME directory for the image file.  GDM will first look for the user's
505
        face image in <filename>~/.face</filename>.  If not found, it will try 
506
        <filename>~/.face.icon</filename>.  If still not found, it will use the
507
        value defined for "face/picture=" in the 
508
        <filename>~/.gnome2/gdm</filename> file.
509
      </para>
510
511
      <para lang="en">
512
        If a user has no defined face image, GDM will use the
513
        "stock_person" icon defined in the current GTK+ theme.  If no
514
        such image is defined, it will fallback to a generic face image.
515
      </para>
516
517
      <para lang="en">
518
        Please note that loading and scaling face icons located in remote user
519
        home directories can be a very time-consuming task.  Since it not
520
        practical to load images over NIS or NFS, GDM does not attempt to load
521
        face images from remote home directories.
522
      </para>
523
524
      <para lang="en">
525
        When the browser is turned on, valid usernames on the computer are
526
        exposed for everyone to see.  If XDMCP is enabled, then the usernames
527
        are exposed to remote users.  This, of course, limits security
528
        somewhat since a malicious user does not need to guess valid usernames.
529
        In some very restrictive environments the face browser may not be
530
        appropriate.
531
      </para>
532
533
    </sect2>
534
535
    <sect2 id="xdmcp">
536
      <title lang="en">XDMCP</title>
537
538
<!--
539
<para>
540
        TODO - What XDMCP features actually work?   I know that the
541
               chooser is missing.
542
</para>
543
-->
544
545
      <para lang="en">
546
        The GDM daemon can be configured to listen for and manage X Display
547
        Manage Protocol (XDMCP) requests from remote displays.  By default
548
        XDMCP support is turned off, but can be enabled if desired.  If GDM is
549
        built with TCP Wrapper support, then the daemon will only grant access
550
        to hosts specified in the GDM service section in the TCP Wrappers
551
        configuration file.
552
      </para>
553
554
      <para lang="en">
555
        GDM includes several measures making it more resistant to denial of
556
        service attacks on the XDMCP service.  A lot of the protocol
557
        parameters, handshaking timeouts, etc. can be fine tuned. The default
558
        configuration should work reasonably on most systems. 
559
      </para>
560
561
      <para lang="en">
562
        GDM by default listens for XDMCP requests on the normal UDP port used
563
        for XDMCP, port 177, and will respond to QUERY and BROADCAST_QUERY
564
        requests by sending a WILLING packet to the originator.
565
      </para>
566
567
      <para lang="en">
568
        GDM can also be configured to honor INDIRECT queries and present a
569
        host chooser to the remote display.  GDM will remember the user's
570
        choice and forward subsequent requests to the chosen manager.  GDM
571
        also supports an extension to the protocol which will make it forget
572
        the redirection once the user's connection succeeds.  This extension
573
        is only supported if both daemons are GDM.  It is transparent and
574
        will be ignored by XDM or other daemons that implement XDMCP.
575
      </para>
576
577
      <para lang="en">
578
        If XDMCP seems to not be working, make sure that all machines are
579
        specified in <filename>/etc/hosts</filename>.
580
      </para>
581
582
      <para lang="en">
583
        Refer to the "Security" section for information about
584
        security concerns when using XDMCP.
585
      </para>
586
    </sect2>
587
588
    <sect2 id="logging">
589
      <title lang="en">Logging</title>
590
591
      <para lang="en">
592
        GDM uses syslog to log errors and status.  It can also log debugging
593
        information, which can be useful for tracking down problems if GDM is
594
        not working properly.  Debug output can be enabled by setting the
595
        debug/Enable key to "true" in the
596
        <filename>&lt;etc&gt;/gdm/custom.conf</filename> file.
597
      </para>
598
599
      <para lang="en">
600
        Output from the various Xservers is stored in the GDM log directory,
601
        which is normally <filename>&lt;var&gt;/log/gdm/</filename>.  Any
602
        Xserver messages are saved to a file associated with the display value,
603
        <filename>&lt;display&gt;.log</filename>.  
604
      </para>
605
606
      <para lang="en">
607
        The session output is piped through the GDM daemon to the
1.4.55 by Jeremy Bicha
Import upstream version 3.8.1.1
608
        <filename>~/<replaceable>$XDG_CACHE_HOME</replaceable>/gdm/session.log</filename>
609
        file which usually expands to <filename>~/.cache/gdm/session.log</filename>.
610
        The file is overwritten on each login, so logging out and logging back
611
        into the same user via GDM will cause any messages from the previous
612
        session to be lost.
1.4.51 by Jeremy Bicha
Import upstream version 3.5.91
613
      </para>
614
615
      <para lang="en">
616
        Note that if GDM can not create this file for some reason, then a
1.4.55 by Jeremy Bicha
Import upstream version 3.8.1.1
617
        fallback file will be created named <filename>~/<replaceable>$XDG_CACHE_HOME</replaceable>/gdm/session.log.XXXXXXXX</filename>
1.4.51 by Jeremy Bicha
Import upstream version 3.5.91
618
        where the <filename>XXXXXXXX</filename> are some random characters.
619
      </para>
620
    </sect2>
621
622
    <sect2 id="fusa">
623
      <title lang="en">Fast User Switching</title>
624
625
      <para lang="en">
626
        GDM allows multiple users to be logged in at the same time.  After one
627
        user is logged in, additional users can log in via the User Switcher
628
        on the GNOME Panel, or from the "Switch User" button in Lock Screen dialog
629
        of GNOME Screensaver.  The active session can be changed back and forth using
630
        the same mechanism.  Note that some distributions may not add the User Switcher
631
        to the default panel configuration.  It can be added using the panel context
632
        menu.
633
      </para>
634
      <para lang="en">
635
        Note this feature is available on systems that support Virtual
636
        Terminals.  This feature will not function if Virtual Terminals is not
637
        available.
638
      </para>
639
    </sect2>
640
  </sect1>
641
642
  <!-- ============= Security ================================= -->
643
644
  <sect1 id="security">
645
    <title lang="en">Security</title>
646
647
    <sect2 id="gdmuser">
648
      <title lang="en">The GDM User And Group</title>
649
650
      <para lang="en">
651
        For security reasons a dedicated user and group id are recommended for
652
        proper operation.  This user and group are normally "gdm" on
653
        most systems, but can be configured to any user or group.  All GDM
654
        GUI programs are run as this user, so that the programs which interact
655
        with the user are run in a sandbox.  This user and group should have
656
        limited privilege.
657
      </para>
658
659
      <para lang="en">
660
        The only special privilege the "gdm" user requires is the
661
        ability to read and write Xauth files to the
662
        <filename>&lt;var&gt;/run/gdm</filename> directory.  The
663
        <filename>&lt;var&gt;/run/gdm</filename> directory should have
664
        root:gdm ownership and 1777 permissions.
665
      </para>
666
667
      <para lang="en">
668
        You should not, under any circumstances, configure the GDM user/group
669
        to a user which a user could easily gain access to, such as the user
670
        <filename>nobody</filename>.  Any user who gains access to an Xauth
671
        key can snoop on and control running GUI programs running in the
672
        associated session or perform a denial-of-service attack on it.  It
673
        is important to ensure that the system is configured properly so that
674
        only the "gdm" user has access to these files and that it
675
        is not easy to login to this account.  For example, the account should
676
        be setup to not have a password or allow non-root users to login to the
677
        account.
678
      </para>
679
680
      <para lang="en">
681
        The GDM greeter configuration is stored in GConf.  To allow the GDM
682
        user to be able to write configuration, it is necessary for the 
683
        "gdm" user to have a writable $HOME directory.  Users may
684
        configure the default GConf configuration as desired to avoid the 
685
        need to provide the "gdm" user with a writable $HOME
686
        directory.  However, some features of GDM may be disabled if it is
687
        unable to write state information to GConf configuration.
688
      </para>
689
    </sect2>
690
691
    <sect2 id="PAM">
692
      <title lang="en">PAM</title>
693
694
      <para lang="en">
695
        GDM uses PAM for login authentication.  PAM stands for Pluggable
696
        Authentication Module, and is used by most programs that request
697
        authentication on your computer.  It allows the administrator to
698
        configure specific authentication behavior for different login programs
699
        (such as ssh, login GUI, screensaver, etc.)
700
      </para>
701
702
      <para lang="en">
703
        PAM is complicated and highly configurable, and this documentation does
704
        not intend to explain this in detail.  Instead, it is intended to give
705
        an overview of how PAM configuration relates with GDM, how PAM is
706
        commonly configured with GDM, and known issues.  It is expected that
707
        a person needing to do PAM configuration would need to do further
708
        reading of PAM documentation to understand how to configure PAM and
709
        to understand terms used in this section.
710
      </para>
711
        
712
      <para lang="en">
713
        PAM configuration has different, but similar, interfaces on different
714
        Operating Systems, so check the
715
        <ulink type="help" url="man:pam.d">pam.d</ulink> or
716
        <ulink type="help" url="man:pam.conf">pam.conf</ulink> man page for
717
        details.  Be sure you read the PAM documentation and are comfortable
718
        with the security implications of any changes you intend to make to
719
        your configuration.
720
      </para>
721
722
      <para lang="en">
723
        Note that, by default, GDM uses the "gdm" PAM service name
724
        for normal login and the "gdm-autologin" PAM service name for
725
        automatic login.  These services may not be defined in your pam.d or
726
        pam.conf configured file.  If there is no entry, then GDM will use the
727
        default PAM behavior.  On most systems this should work fine.
728
        However, the automatic login feature may not work if the gdm-autologin
729
        service is not defined.
730
      </para>
731
732
      <para lang="en">
733
        The <filename>PostLogin</filename> script is run before
734
        pam_open_session is called, and the <filename>PreSession</filename>
735
        script is called after.  This allows the system administrator to add
736
        any scripting to the login process either before or after PAM 
737
        initializes the session.
738
      </para>
739
740
      <para lang="en">
741
        If you wish to make GDM work with other types of authentication
742
        mechanisms (such as a fingerprint or SmartCard reader), then you should
743
        implement this by using a PAM service module for the desired
744
        authentication type rather than by trying to modify the GDM code
745
        directly.  Refer to the PAM documentation on your system.  How to do
746
        this is frequently discussed on the 
747
        <address><email>gdm-list@gnome.org</email></address> mail list,
748
        so you can refer to the list archives for more information.
749
      </para>
750
751
      <para lang="en">
752
        PAM does have some limitations regarding being able to work with 
753
        multiple types of authentication at the same time, like supporting
754
        the ability to accept either SmartCard and the ability to type the
755
        username and password into the login program.  There are techniques
756
        that are used to make this work, and it is best to research how this
757
        problem is commonly solved when setting up such a configuration.
758
      </para>
759
760
      <para lang="en">
761
        If automatic login does not work on a system, check to see if the
762
        "gdm-autologin" PAM stack is defined in the PAM configuration.  For
763
        this to work, it is necessary to use a PAM module that simply does no
764
        authentication, or which simply returns PAM_SUCCESS from all of its
765
        public interfaces.  Assuming your system has a pam_allow.so PAM module
766
        which does this, a PAM configuration to enable "gdm-autologin" would
767
        look like this:
768
      </para>
769
770
<screen lang="en">
771
       gdm-autologin auth  required    pam_unix_cred.so.1
772
       gdm-autologin auth  sufficient  pam_allow.so.1
773
       gdm-autologin account  sufficient  pam_allow.so.1
774
       gdm-autologin session  sufficient  pam_allow.so.1
775
       gdm-autologin password  sufficient  pam_allow.so.1
776
</screen>
777
778
      <para lang="en">
779
        The above setup will cause no lastlog entry to be generated.  If a
780
        lastlog entry is desired, then use the following for the session:
781
      </para>
782
783
<screen lang="en">
784
       gdm-autologin session required pam_unix_session.so.1
785
</screen>
786
787
      <para lang="en">
788
        If the computer is used by several people, which makes automatic login
789
        unsuitable, you may want to allow some users to log in without entering
790
        their password. This feature can be enabled as a per-user option in
791
        the users-admin tool from the gnome-system-tools; it is achieved by
792
        checking that the user is member a Unix group called
793
        "nopasswdlogin" before asking for a password. For this to work,
794
        the PAM configuration file for the "gdm" service must include
795
        a line such as:
796
      </para>
797
798
<screen lang="en">
799
      gdm auth  sufficient  pam_succeed_if.so  user ingroup nopasswdlogin
800
</screen>
801
802
    </sect2>
803
804
    <sect2 id="utmpwtmp">
805
      <title lang="en">utmp and wtmp</title>
806
807
      <para lang="en">
808
        GDM generates utmp and wtmp User Accounting Database entries upon
809
        session login and logout.  The utmp database contains user access
810
        and accounting information that is accessed by commands such as
811
        <command>finger</command>, <command>last</command>,
812
        <command>login</command>, and <command>who</command>.  The wtmp
813
        database contains the history of user access and accounting 
814
        information for the utmp database.  Refer to the 
815
        <ulink type="help" url="man:utmp">utmp</ulink> and
816
        <ulink type="help" url="man:wtmp">wtmp</ulink>
817
        man pages on your system for more information.
818
      </para>
819
    </sect2>
820
821
    <sect2 id="xauth">
822
      <title lang="en">Xserver Authentication Scheme</title>
823
824
      <para lang="en">
825
        Xserver authorization files are stored in a newly created subdirectory
826
        of <filename>&lt;var&gt;/run/gdm</filename> at start up.  These files
827
        are used to store and share a "password" between X clients
828
        and the Xserver.  This "password" is unique for each session
829
        logged in, so users from one session can't snoop on users from another.
830
      </para>
831
832
      <para lang="en">
833
        GDM only supports the MIT-MAGIC-COOKIE-1 Xserver authentication
834
        scheme.  Normally little is gained from the other schemes, and no
835
        effort has been made to implement them so far.  Be especially
836
        careful about using XDMCP because the Xserver authentication cookie
837
        goes over the wire as clear text.  If snooping is possible, then an
838
        attacker could simply snoop your authentication password as you log in,
839
        regardless of the authentication scheme being used.  If snooping is
840
        possible and undesirable, then you should use ssh for tunneling an X
841
        connection rather then using XDMCP.  You could think of XDMCP as a sort
842
        of graphical telnet, having the same security issues.  In most cases,
843
        ssh -Y should be preferred over GDM's XDMCP features.
844
      </para>
845
846
    </sect2>
847
848
    <sect2 id="xdmcpsecurity">
849
      <title lang="en">XDMCP Security</title>
850
851
      <para lang="en">
852
        Even though your display is protected by cookies, XEvents and thus
853
        keystrokes typed when entering passwords will still go over the wire in
854
        clear text.  It is trivial to capture these.
855
      </para>
856
857
      <para lang="en">
858
        XDMCP is primarily useful for running thin clients such as in terminal
859
        labs.  Those thin clients will only ever need the network to access
860
        the server, and so it seems like the best security policy to have
861
        those thin clients on a separate network that cannot be accessed by
862
        the outside world, and can only connect to the server.  The only point
863
        from which you need to access outside is the server.  This type of set up
864
        should never use an unmanaged hub or other sniffable network.
865
      </para>
866
867
    </sect2>
868
869
    <sect2 id="xdmcpaccess">
870
      <title lang="en">XDMCP Access Control</title>
871
872
      <para lang="en">
873
        XDMCP access control is done using TCP wrappers.  It is possible to
874
        compile GDM without TCP wrapper support, so this feature may not be
875
        supported on some Operating Systems.
876
      </para>
877
878
      <para lang="en">
879
        You should use the daemon name <command>gdm</command> in the
880
        <filename>&lt;etc&gt;/hosts.allow</filename> and
881
        <filename>&lt;etc&gt;/hosts.deny</filename> files.  For example to 
882
        deny computers from <filename>.evil.domain</filename> from logging in,
883
        then add
884
      </para>
885
<screen lang="en">
886
gdm: .evil.domain
887
</screen>
888
      <para lang="en">
889
        to <filename>&lt;etc&gt;/hosts.deny</filename>.  You may also need
890
        to add
891
      </para>
892
<screen lang="en">
893
gdm: .your.domain
894
</screen>
895
      <para lang="en">
896
        to your <filename>&lt;etc&gt;/hosts.allow</filename> if you normally
897
        disallow all services from all hosts.  See the
898
        <ulink type="help" url="man:hosts.allow">hosts.allow(5)</ulink> man
899
        page for details.
900
      </para>
901
    </sect2>
902
903
    <sect2 id="firewall">
904
      <title lang="en">Firewall Security</title>
905
906
      <para lang="en">
907
        Even though GDM tries to outsmart potential attackers trying to take
908
        advantage of XDMCP, it is still advised that you block the XDMCP port
909
        (normally UDP port 177) on your firewall unless really needed.  GDM
910
        guards against denial of service attacks, but the X protocol is still
911
        inherently insecure and should only be used in controlled environments.
912
        Also each remote connection takes up lots of resources, so it is much
913
        easier to do a denial of service attack via XDMCP than attacking a
914
        webserver.
915
      </para>
916
917
      <para lang="en">
918
        It is also wise to block all of the Xserver ports.  These are TCP
919
        ports 6000+ (one for each display number) on your firewall.  Note that
920
        GDM will use display numbers 20 and higher for flexible on-demand
921
        servers.
922
      </para>
923
924
      <para lang="en">
925
         X is not a very safe protocol when using it over the Internet, and
926
         XDMCP is even less safe.
927
      </para>
928
    </sect2>
929
930
    <sect2 id="policykit">
931
      <title lang="en">PolicyKit</title>
932
933
<!--
934
<para>
935
        TODO - Should we say more?
936
</para>
937
-->
938
939
      <para lang="en">
940
        GDM may be configured to use PolicyKit to allow the system
941
        administrator to control whether the login screen should provide
942
        the shutdown and restart buttons on the greeter screen.
943
      </para>
944
945
      <para lang="en">
946
        These buttons are controlled by the
947
        <filename>org.freedesktop.consolekit.system.stop-multiple-users</filename>
948
        and
949
        <filename>org.freedesktop.consolekit.system.restart-multiple-users</filename>
950
        actions respectively.  Policy for these actions can be set up using the
951
        polkit-gnome-authorization tool, or the polkit-auth command line program.
952
      </para>
953
 
954
    </sect2>
955
956
    <sect2 id="rbac">
957
      <title lang="en">RBAC (Role Based Access Control)</title>
958
959
      <para lang="en">
960
        GDM may be configured to use RBAC instead of PolicyKit.  In this
961
        case the RBAC configuration is used to control whether the login screen
962
        should provide the shutdown and restart buttons on the greeter screen.
963
      </para>
964
965
      <para lang="en">
966
        For example, on Oracle Solaris, the "solaris.system.shutdown"
967
        authorization is used to control this.  Simply modify the 
968
        <filename>/etc/user_attr</filename> file so that the "gdm"
969
        user has this authorization.
970
      </para>
971
    </sect2>
972
973
  </sect1>
974
975
  <!-- ============= ConsoleKit ================================ -->
976
977
  <sect1 id="consolekit">
978
    <title lang="en">Support for ConsoleKit</title>
979
980
<!--
981
<para>
982
    TODO - Should we update these docs?  Probably should mention any 
983
           configuration that users may want to do for using it with GDM?
984
           If so, perhaps this section should be moved to a subsection of
985
           the "Configure" section?
986
</para>
987
-->
988
989
    <para lang="en">
990
      GDM includes support for publishing user login information with the user
991
      and login session accounting framework known as ConsoleKit.  ConsoleKit
992
      is able to keep track of all the users currently logged in.  In this
993
      respect, it can be used as a replacement for the utmp or utmpx files that
994
      are available on most Unix-like Operating Systems.
995
    </para>
996
997
    <para lang="en">
998
      When GDM is about to create a new login process for a user it will call
999
      a privileged method of ConsoleKit in order to open a new session for this
1000
      user.  At this time GDM also provides ConsoleKit with information about
1001
      this user session such as: the user ID, the X11 Display name that will be
1002
      associated with the session, the host-name from which the session
1003
      originates (useful in the case of an XDMCP session), whether or not this
1004
      session is attached, etc.  As the entity that initiates the user process,
1005
      GDM is in a unique position to know about the user session and to be 
1006
      trusted to provide these bits of information. The use of this privileged 
1007
      method is restricted by the use of the D-Bus system message bus security 
1008
      policy.
1009
    </para>
1010
1011
    <para lang="en">
1012
      In case a user with an existing session has authenticated
1013
      at GDM and requests to resume that existing session, GDM calls a
1014
      privileged method of ConsoleKit to unlock that session.  The exact
1015
      details of what happens when the session receives this unlock signal are
1016
      undefined and session-specific.  However, most sessions will unlock a
1017
      screensaver in response.
1018
    </para>
1019
1020
    <para lang="en">
1021
      When the user chooses to log out, or if GDM or the session quit
1022
      unexpectedly the user session will be unregistered from ConsoleKit.
1023
    </para>
1024
  </sect1>
1025
1026
  <!-- ============= Configuration ============================= -->
1027
1028
  <sect1 id="configuration">
1029
    <title lang="en">Configuration</title>
1030
1031
    <para lang="en">
1032
      GDM has a number of configuration interfaces.  These include scripting
1033
      integration points, daemon configuration, greeter configuration, 
1034
      general session settings, integration with gnome-settings-daemon
1035
      configuration, and session configuration.  These types of integration are
1036
      described in detail below.
1037
    </para>
1038
1039
    <sect2 id="scripting">
1040
      <title lang="en">Scripting Integration Points</title>
1041
      
1042
      <para lang="en">
1043
        The GDM script integration points can be found in the
1044
        <filename>&lt;etc&gt;/gdm/</filename> directory:
1045
      </para>
1046
1047
<screen lang="en">
1048
Xsession
1049
Init/
1050
PostLogin/
1051
PreSession/
1052
PostSession/
1053
</screen>
1054
1055
      <para lang="en">
1056
        The <filename>Init</filename>, <filename>PostLogin</filename>,
1057
        <filename>PreSession</filename>, and <filename>PostSession</filename>
1058
        scripts all work as described below.
1059
      </para>
1060
1061
      <para lang="en">
1062
        For each type of script, the default one which will be executed is
1063
        called "Default" and is stored in a directory associated with
1064
        the script type.  So the default <filename>Init</filename> script is 
1065
        <filename>&lt;etc&gt;/gdm/Init/Default</filename>.  A per-display
1066
        script can be provided, and if it exists it will be run instead of the 
1067
        default script.  Such scripts are stored in the same directory as the
1068
        default script and have the same name as the Xserver DISPLAY value for
1069
        that display.  For example, if the <filename>&lt;Init&gt;/:0</filename>
1070
        script exists, it will be run for DISPLAY ":0".
1071
     </para>
1072
1073
     <para lang="en">
1074
        All of these scripts are run with root privilege and return 0 if run
1075
        successfully, and a non-zero return code if there was any failure that
1076
        should cause the login session to be aborted.  Also note that GDM will
1077
        block until the scripts finish, so if any of these scripts hang, this
1078
        will cause the login process to also hang.
1079
      </para>
1080
1081
      <para lang="en">
1082
        When the Xserver for the login GUI has been successfully started, but
1083
        before the login GUI is actually displayed, GDM will run the
1084
        <filename>Init</filename> script.  This script is useful for starting
1085
        programs that should be run while the login screen is showing, or for
1086
        doing any special initialization if required.
1087
      </para>
1088
1089
      <para lang="en">
1090
        After the user has been successfully authenticated GDM will run the
1091
        <filename>PostLogin</filename> script.  This is done before any session
1092
        setup has been done, including before the pam_open_session call.  This
1093
        script is useful for doing any session initialization that needs to
1094
        happen before the session starts.  For example, you might setup the
1095
        user's $HOME directory if needed.
1096
      </para>
1097
1098
      <para lang="en">
1099
        After the user session has been initialized, GDM will run the
1100
        <filename>PreSession</filename> script.  This script is useful for
1101
        doing any session initialization that needs to happen after the 
1102
        session has been initialized.  It can be used for session management or
1103
        accounting, for example.
1104
      </para>
1105
1106
      <para lang="en"> 
1107
        When a user terminates their session, GDM will run the
1108
        <filename>PostSession</filename> script.  Note that the Xserver will
1109
        have been stopped by the time this script is run, so it should not be
1110
        accessed.  
1111
      </para>
1112
1113
      <para lang="en">
1114
        Note that the <filename>PostSession</filename> script will be run
1115
        even when the display fails to respond due to an I/O error or
1116
        similar. Thus, there is no guarantee that X applications will work
1117
        during script execution.
1118
      </para>
1119
1120
      <para lang="en">
1121
        All of the above scripts will set the
1122
        <filename>$RUNNING_UNDER_GDM</filename> environment variable to
1123
        <filename>yes</filename>.  If the scripts are also shared with other
1124
        display managers, this allows you to identify when GDM is calling these
1125
        scripts, so you can run specific code when GDM is used.
1126
      </para>
1127
    </sect2>
1128
1129
    <sect2 id="autostart">
1130
      <title lang="en">Autostart Configuration</title>
1131
      
1132
      <para lang="en">
1133
        The <filename>&lt;share&gt;/gdm/autostart/LoginWindow</filename>
1134
        directory contains files in the format specified by the
1135
        "FreeDesktop.org Desktop Application Autostart
1136
        Specification".  Standard features in the specification may be
1137
        used to specify programs that should auto-restart or only be launched
1138
        if a GConf configuration value is set, etc.
1139
      </para>
1140
1141
      <para lang="en">
1142
        Any <filename>.desktop</filename> files in this directory will cause
1143
        the associated program to automatically start with the login GUI
1144
        greeter.  By default, GDM is shipped with files which will autostart
1145
        the gdm-simple-greeter login GUI greeter itself, the
1146
        gnome-power-manager application, the gnome-settings-daemon, and the
1147
        metacity window manager.  These programs are needed for the greeter
1148
        program to work.  In addition, desktop files are provided for starting
1149
        various AT programs if the configuration values specified in the
1150
        Accessibility Configuration section below are set.
1151
      </para>
1152
    </sect2>
1153
1154
    <sect2 id="xsessionscript">
1155
      <title lang="en">Xsession Script</title>
1156
1157
      <para lang="en">
1158
        There is also an <filename>Xsession</filename> script located at
1159
        <filename>&lt;etc&gt;/gdm/Xsession</filename> which is called between
1160
        the <filename>PreSession</filename> and the
1161
        <filename>PostSession</filename> scripts.  This script does not
1162
        support per-display like the other scripts.  This script is used for
1163
        actually starting the user session.  This script is run as the user,
1164
        and it will run whatever session was specified by the Desktop session
1165
        file the user selected to start. 
1166
      </para>
1167
    </sect2>
1168
1169
    <sect2 id="daemonconfig">
1170
      <title lang="en">Daemon Configuration</title>
1171
1172
      <para lang="en">
1173
        The GDM daemon is configured using the
1174
        <filename>&lt;etc&gt;/gdm/custom.conf</filename> file.  Default
1175
        values are stored in GConf in the <filename>gdm.schemas</filename>
1176
        file.  It is recommended that end-users modify the
1177
        <filename>&lt;etc&gt;/gdm/custom.conf</filename> file because the
1178
        schemas file may be overwritten when the user updates their system to
1179
        have a newer version of GDM.
1180
      </para>
1181
1182
      <para lang="en">
1183
        Note that older versions of GDM supported additional configuration
1184
        options which are no longer supported in the latest versions of GDM.
1185
      </para>
1186
1187
      <para lang="en">
1188
        The <filename>&lt;etc&gt;/gdm/custom.conf</filename> file is in the
1189
        <filename>keyfile</filename> format.  Keywords in brackets
1190
        define group sections, strings before an equal sign (=) are keys and
1191
        the data after equal sign represents their value.  Empty lines or
1192
        lines starting with the hash mark (#) are ignored.  
1193
      </para>
1194
1195
      <para lang="en">
1196
        The file <filename>&lt;etc&gt;/gdm/custom.conf</filename> supports the
1197
        "[daemon]", "[security]", and "[xdmcp]"
1198
        group sections.  Within each group, there are particular key/value
1199
        pairs that can be specified to modify how GDM behaves.  For example,
1200
        to enable timed login and specify the timed login user to be a user
1201
        named "you", you would modify the file so it contains the
1202
        following lines:
1203
      </para>
1204
     
1205
<screen lang="en">
1206
[daemon]
1207
TimedLoginEnable=true
1208
TimedLogin=you
1209
</screen>
1210
1211
      <para lang="en">
1212
        A full list of supported configuration keys follow:
1213
      </para>
1214
1215
      <sect3 id="choosersection">
1216
        <title lang="en">[chooser]</title>
1217
        <variablelist>
1218
1219
          <varlistentry>
1220
            <term lang="en">Multicast</term>
1221
            <listitem>
1222
              <synopsis lang="en">Multicast=false</synopsis>
1223
              <para lang="en">
1224
                If true and IPv6 is enabled, the chooser will send a multicast
1225
                query to the local network and collect responses from the hosts
1226
                who have joined multicast group.
1227
              </para>
1228
            </listitem>
1229
          </varlistentry>
1230
         
1231
          <varlistentry>
1232
            <term lang="en">MulticastAddr</term>
1233
            <listitem>
1234
              <synopsis lang="en">MulticastAddr=ff02::1</synopsis>
1235
              <para lang="en">
1236
                This is the Link-local multicast address.
1237
              </para>
1238
            </listitem>
1239
          </varlistentry>
1240
        </variablelist>
1241
      </sect3>
1242
1243
      <sect3 id="daemonsection">
1244
        <title lang="en">[daemon]</title>
1245
        <variablelist>
1246
          <varlistentry>
1247
            <term lang="en">TimedLoginEnable</term>
1248
            <listitem>
1249
              <synopsis lang="en">TimedLoginEnable=false</synopsis>
1250
              <para lang="en">
1251
                 If the user given in <filename>TimedLogin</filename> should be
1252
                logged in after a number of seconds (set with
1253
                <filename>TimedLoginDelay</filename>) of inactivity on the
1254
                login screen.  This is useful for public access terminals or
1255
                perhaps even home use.  If the user uses the keyboard or
1256
                browses the menus, the timeout will be reset to 
1257
                <filename>TimedLoginDelay</filename> or 30 seconds, whichever 
1258
                is higher.   If the user does not enter a username but just
1259
                hits the ENTER key while the login program is requesting the
1260
                username, then GDM will assume the user wants to login
1261
                immediately as the timed user.  Note that no password will be
1262
                asked for this user so you should be careful, although if using
1263
                PAM it can be configured to require password entry before
1264
                allowing login.  Refer to the "Security-&gt;PAM"
1265
                section of the manual for more information, or for help if this
1266
                feature does not seem to work.
1267
              </para>
1268
            </listitem>
1269
          </varlistentry>
1270
1271
          <varlistentry>
1272
            <term lang="en">TimedLogin</term>
1273
            <listitem>
1274
              <synopsis lang="en">TimedLogin=</synopsis>
1275
              <para lang="en">
1276
                This is the user that should be logged in after a specified
1277
                number of seconds of inactivity.
1278
              </para>
1279
              <para lang="en">
1280
                If the value ends with a vertical bar | (the pipe symbol),
1281
                then GDM will execute the program specified and use whatever
1282
                value is returned on standard out from the program as the user.
1283
                The program is run with the DISPLAY environment variable set so
1284
                that it is possible to specify the user in a per-display
1285
                fashion.  For example if the value is "/usr/bin/getloginuser|",
1286
                then the program "/usr/bin/getloginuser" will be run to get the
1287
                user value.
1288
              </para>
1289
            </listitem>
1290
          </varlistentry>
1291
1292
          <varlistentry>
1293
            <term lang="en">TimedLoginDelay</term>
1294
            <listitem>
1295
              <synopsis lang="en">TimedLoginDelay=30</synopsis>
1296
              <para lang="en">
1297
                Delay in seconds before the <filename>TimedLogin</filename>
1298
                user will be logged in.
1299
              </para>
1300
            </listitem>
1301
          </varlistentry>
1302
1303
          <varlistentry>
1304
            <term lang="en">AutomaticLoginEnable</term>
1305
            <listitem>
1306
              <synopsis lang="en">AutomaticLoginEnable=false</synopsis>
1307
              <para lang="en">
1308
                If true, the user given in <filename>AutomaticLogin</filename>
1309
                should be logged in immediately. This feature is like timed
1310
                login with a delay of 0 seconds.
1311
              </para>
1312
            </listitem>
1313
          </varlistentry>
1314
1315
          <varlistentry>
1316
            <term lang="en">AutomaticLogin</term>
1317
            <listitem>
1318
              <synopsis lang="en">AutomaticLogin=</synopsis>
1319
              <para lang="en">
1320
                This is the user that should be logged in immediately if
1321
                <filename>AutomaticLoginEnable</filename> is true.
1322
              </para>
1323
              <para lang="en">
1324
                If the value ends with a vertical bar | (the pipe symbol),
1325
                then GDM will execute the program specified and use whatever
1326
                value is returned on standard out from the program as the user.
1327
                The program is run with the DISPLAY environment variable set so
1328
                that it is possible to specify the user in a per-display
1329
                fashion.  For example if the value is "/usr/bin/getloginuser|",
1330
                then the program "/usr/bin/getloginuser" will be run to get the
1331
                user value.
1332
              </para>
1333
            </listitem>
1334
          </varlistentry>
1335
1336
          <varlistentry>
1337
            <term lang="en">User</term>
1338
            <listitem>
1339
              <synopsis lang="en">User=gdm</synopsis>
1340
              <para lang="en">
1341
                The username under which the greeter and other GUI programs
1342
                are run.  Refer to the <filename>Group</filename>
1343
                configuration key and to the "Security-&gt;GDM User And
1344
                Group" section of this document for more information.
1345
              </para>
1346
            </listitem>
1347
          </varlistentry>
1348
1349
          <varlistentry>
1350
            <term lang="en">Group</term>
1351
            <listitem>
1352
              <synopsis lang="en">Group=gdm</synopsis>
1353
              <para lang="en">
1354
                The group name under which the greeter and other GUI programs
1355
                are run.  Refer to the <filename>User</filename>
1356
                configuration key and to the "Security-&gt;GDM User And
1357
                Group" section of this document for more information.
1358
              </para>
1359
            </listitem>
1360
          </varlistentry>
1361
        </variablelist>
1362
      </sect3>
1363
1364
      <sect3 id="debugsection">
1365
        <title lang="en">Debug Options</title>
1366
      
1367
        <variablelist>
1368
          <title lang="en">[debug]</title>
1369
          
1370
          <varlistentry>
1371
            <term lang="en">Enable</term>
1372
            <listitem>
1373
              <synopsis lang="en">Enable=false</synopsis>
1374
              <para lang="en">
1375
                To enable debugging, set the debug/Enable key to
1376
                "true" in the
1377
                <filename>&lt;etc&gt;/gdm/custom.conf</filename>
1378
                file and restart GDM.  Then debug output will be sent to the
1379
                system log file (<filename>&lt;var&gt;/log/messages</filename>
1380
                or <filename>&lt;var&gt;/adm/messages</filename> depending on
1381
                your Operating System).
1382
              </para>
1383
            </listitem>
1384
          </varlistentry>
1385
        </variablelist>
1386
      </sect3>
1387
1388
      <sect3 id="greetersection">
1389
        <title lang="en">Greeter Options</title>
1390
      
1391
        <variablelist>
1392
          <title lang="en">[greeter]</title>
1393
          
1394
          <varlistentry>
1395
            <term lang="en">IncludeAll</term>
1396
            <listitem>
1397
              <synopsis lang="en">IncludeAll=true</synopsis>
1398
              <para lang="en">
1399
                If true, then the face browser will show all users on the local
1400
                machine.  If false, the face browser will only show users who
1401
                have recently logged in.
1402
              </para>
1403
1404
              <para lang="en">
1405
                When this key is true, GDM will call fgetpwent() to get a list
1406
                of local users on the system.  Any users with a user id less
1407
                than 500 (or 100 if running on Oracle Solaris) are filtered
1408
                out.  The Face Browser also will display any users that have
1409
                previously logged in on the system  (for example NIS/LDAP
1410
                users).  It gets this list via calling the
1411
                <command>ck-history</command> ConsoleKit interface.  It will
1412
                also filter out any users which do not have a valid shell
1413
                (valid shells are any shell that getusershell() returns -
1414
                /sbin/nologin or /bin/false are considered invalid shells even
1415
                if getusershell() returns them).
1416
              </para>
1417
1418
              <para lang="en">
1419
                If false, then GDM more simply only displays users that have
1420
                previously logged in on the system (local or NIS/LDAP users) by
1421
                calling the <command>ck-history</command> ConsoleKit interface.
1422
              </para>
1423
            </listitem>
1424
          </varlistentry>
1425
1426
          <varlistentry>
1427
            <term lang="en">Include</term>
1428
            <listitem>
1429
              <synopsis lang="en">Include=</synopsis>
1430
              <para lang="en">
1431
                Set to a list of users to always include in the Face Browser.
1432
                This value is set to a list of users separated by commas.  By
1433
                default, the value is empty.
1434
              </para>
1435
            </listitem>
1436
          </varlistentry>
1437
1438
          <varlistentry>
1439
            <term lang="en">Exclude</term>
1440
            <listitem>
1441
              <synopsis lang="en">Exclude=bin,root,daemon,adm,lp,sync,shutdown,halt,mail,news,uucp,operator,nobody,nobody4,noaccess,postgres,pvm,rpm,nfsnobody,pcap</synopsis>
1442
              <para lang="en">
1443
                Set to a list of users to always exclude in the Face Browser.
1444
                This value is set to a list of users separated by commas.  Note
1445
                that the setting in the <filename>custom.conf</filename>
1446
                overrides the default value, so if you wish to add additional
1447
                users to the list, then you need to set the value to the
1448
                default value with additional users appended to the list.
1449
              </para>
1450
            </listitem>
1451
          </varlistentry>
1452
        </variablelist>
1453
      </sect3>
1454
1455
      <sect3 id="securitysection">
1456
        <title lang="en">Security Options</title>
1457
      
1458
        <variablelist>
1459
          <title lang="en">[security]</title>
1460
          
1461
          <varlistentry>
1462
            <term lang="en">DisallowTCP</term>
1463
            <listitem>
1464
              <synopsis lang="en">DisallowTCP=true</synopsis>
1465
              <para lang="en">
1466
                If true, then always append <filename>-nolisten tcp</filename>
1467
                to the command line when starting attached Xservers, thus
1468
                disallowing TCP connection.  This is a more secure
1469
                configuration if you are not using remote connections.
1470
              </para>
1471
            </listitem>
1472
          </varlistentry>
1473
        </variablelist>
1474
      </sect3>
1475
1476
      <sect3 id="xdmcpsection">
1477
        <title lang="en">XDCMP Support</title>
1478
1479
        <variablelist>
1480
          <title lang="en">[xdmcp]</title>
1481
          
1482
          <varlistentry>
1483
            <term lang="en">DisplaysPerHost</term>
1484
            <listitem>
1485
              <synopsis lang="en">DisplaysPerHost=1</synopsis>
1486
              <para lang="en">
1487
                To prevent attackers from filling up the pending queue, GDM
1488
                will only allow one connection for each remote computer.  If
1489
                you want to provide display services to computers with more
1490
                than one screen, you should increase this value.
1491
              </para>
1492
1493
              <para lang="en">
1494
                Note that the number of attached DISPLAYS allowed is not 
1495
                limited.  Only remote connections via XDMCP are limited by
1496
                this configuration option.
1497
              </para>
1498
            </listitem>
1499
          </varlistentry>
1500
1501
          <varlistentry>
1502
            <term lang="en">Enable</term>
1503
            <listitem>
1504
              <synopsis lang="en">Enable=false</synopsis>
1505
              <para lang="en">
1506
                Setting this to true enables XDMCP support allowing remote
1507
                displays/X terminals to be managed by GDM.
1508
              </para>
1509
            
1510
              <para lang="en">
1511
                <filename>gdm</filename> listens for requests on UDP port 177.
1512
                See the Port option for more information.
1513
              </para>
1514
              
1515
              <para lang="en">
1516
                If GDM is compiled to support it, access from remote displays
1517
                can be controlled using the TCP Wrappers library. The service
1518
                name is <filename>gdm</filename>
1519
              </para>
1520
            
1521
              <para lang="en">
1522
                You should add 
1523
<screen lang="en">
1524
gdm:.my.domain
1525
</screen>
1526
                to your <filename>&lt;etc&gt;/hosts.allow</filename>, depending
1527
                on your TCP Wrappers configuration.  See the
1528
                <ulink type="help" url="man:hosts.allow">hosts.allow</ulink>
1529
                man page for details.
1530
              </para>
1531
              
1532
              <para lang="en">
1533
                Please note that XDMCP is not a particularly secure protocol
1534
                and that it is a good idea to block UDP port 177 on your
1535
                firewall unless you really need it.
1536
              </para>
1537
            </listitem>
1538
          </varlistentry>
1539
          
1540
          <varlistentry>
1541
            <term lang="en">HonorIndirect</term>
1542
            <listitem>
1543
              <synopsis lang="en">HonorIndirect=true</synopsis>
1544
              <para lang="en">
1545
                Enables XDMCP INDIRECT choosing (i.e. remote execution of
1546
                <filename>gdmchooser</filename>) for X-terminals which do not
1547
                supply their own display browser.
1548
              </para>
1549
            </listitem>
1550
          </varlistentry>
1551
        
1552
          <varlistentry>
1553
            <term lang="en">MaxPending</term>
1554
            <listitem>
1555
              <synopsis lang="en">MaxPending=4</synopsis>
1556
              <para lang="en">
1557
                To avoid denial of service attacks, GDM has fixed size queue
1558
                of pending connections. Only MaxPending displays can start at
1559
                the same time.
1560
              </para>
1561
            
1562
              <para lang="en">
1563
                Please note that this parameter does not limit the number of
1564
                remote displays which can be managed. It only limits the number
1565
                of displays initiating a connection simultaneously.
1566
              </para>
1567
            </listitem>
1568
          </varlistentry>
1569
          
1570
          <varlistentry>
1571
            <term lang="en">MaxSessions</term>
1572
            <listitem>
1573
              <synopsis lang="en">MaxSessions=16</synopsis>
1574
              <para lang="en">
1575
                Determines the maximum number of remote display connections
1576
                which will be managed simultaneously. I.e. the total number of
1577
                remote displays that can use your host.
1578
              </para>
1579
            </listitem>
1580
          </varlistentry>
1581
        
1582
          <varlistentry>
1583
            <term lang="en">MaxWait</term>
1584
            <listitem>
1585
              <synopsis lang="en">MaxWait=30</synopsis>
1586
              <para lang="en">
1587
                When GDM is ready to manage a display an ACCEPT packet is sent
1588
                to it containing a unique session id which will be used in
1589
                future XDMCP conversations.
1590
              </para>
1591
            
1592
              <para lang="en">
1593
                GDM will then place the session id in the pending queue
1594
                waiting for the display to respond with a MANAGE request.
1595
              </para>
1596
            
1597
              <para lang="en">
1598
                If no response is received within MaxWait seconds, GDM will
1599
                declare the display dead and erase it from the pending queue
1600
                freeing up the slot for other displays.
1601
              </para>
1602
            </listitem>
1603
          </varlistentry>
1604
          
1605
          <varlistentry>
1606
            <term lang="en">MaxWaitIndirect</term>
1607
            <listitem>
1608
              <synopsis lang="en">MaxWaitIndirect=30</synopsis>
1609
              <para lang="en">
1610
                The MaxWaitIndirect parameter determines the maximum number of
1611
                seconds between the time where a user chooses a host and the
1612
                subsequent indirect query where the user is connected to the
1613
                host.  When the timeout is exceeded, the information about the
1614
                chosen host is forgotten and the indirect slot freed up for
1615
                other displays.  The information may be forgotten earlier if
1616
                there are more hosts trying to send indirect queries then
1617
                <filename>MaxPendingIndirect</filename>.
1618
              </para>
1619
            </listitem>
1620
          </varlistentry>
1621
        
1622
          <varlistentry>
1623
            <term lang="en">PingIntervalSeconds</term>
1624
            <listitem>
1625
              <synopsis lang="en">PingIntervalSeconds=60</synopsis>
1626
              <para lang="en">
1627
                If the Xserver does not respond in the specified number of
1628
                seconds, then the connection is stopped and the session ended.
1629
                When this happens the slave daemon dies with an ALARM signal.
1630
                Note that GDM 2.20 and earlier multiplied this setting by 2,
1631
                so it may be necessary to increase the timeout if upgrading
1632
                from GDM 2.20 and earlier to a newer version.
1633
              </para>
1634
1635
              <para lang="en">
1636
                Note that GDM in the past used to have a
1637
                <filename>PingInterval</filename> configuration key which was
1638
                also in minutes.  For most purposes you'd want this setting
1639
                to be lower than one minute. However since in most cases where
1640
                XDMCP would be used (such as terminal labs), a lag of more
1641
                than 15 or so seconds would really mean that the terminal was
1642
                turned off or restarted and you would want to end the session.
1643
              </para>
1644
            </listitem>
1645
          </varlistentry>
1646
1647
          <varlistentry>
1648
            <term lang="en">Port</term>
1649
            <listitem>
1650
              <synopsis lang="en">Port=177</synopsis>
1651
              <para lang="en">
1652
                The UDP port number <filename>gdm</filename> should listen to
1653
                for XDMCP requests. Do not change this unless you know what
1654
                you are doing.
1655
              </para>
1656
            </listitem>
1657
          </varlistentry>
1658
1659
          <varlistentry>
1660
            <term lang="en">Willing</term>
1661
            <listitem>
1662
              <synopsis lang="en">Willing=&lt;etc&gt;/gdm/Xwilling</synopsis>
1663
              <para lang="en">
1664
                When the machine sends a WILLING packet back after a QUERY it
1665
                sends a string that gives the current status of this server.
1666
                The default message is the system ID, but it is possible to
1667
                create a script that displays customized message.  If this
1668
                script does not exist or this key is empty the default message
1669
                is sent.  If this script succeeds and produces some output,
1670
                the first line of it's output is sent (and only the first
1671
                line).  It runs at most once every 3 seconds to prevent
1672
                possible denial of service by flooding the machine with QUERY
1673
                packets.
1674
              </para>
1675
            </listitem>
1676
          </varlistentry>
1677
        </variablelist>
1678
      </sect3>
1679
    </sect2>
1680
1681
    <sect2 id="greeterconfiguration">
1682
        <title lang="en">Simple Greeter Configuration</title>
1683
1684
        <para lang="en">
1685
          The GDM default greeter is called the simple Greeter and is
1686
          configured via GConf.  Default values are stored in GConf in the
1687
          <filename>gdm-simple-greeter.schemas</filename> file.  These defaults
1688
          can be overridden if the "gdm" user has a writable $HOME
1689
          directory to store GConf settings.  These values can be edited using
1690
          the <command>gconftool-2</command> or <command>gconf-editor</command>
1691
          programs.  The following configuration options are supported:
1692
        </para>
1693
1694
        <variablelist>
1695
          <title lang="en">Greeter Configuration Keys</title>
1696
1697
          <varlistentry>
1698
            <term lang="en">/apps/gdm/simple-greeter/banner_message_enable</term>
1699
            <listitem>
1700
              <synopsis lang="en">false (boolean)</synopsis>
1701
              <para lang="en">
1702
                Controls whether the banner message text is displayed.
1703
              </para>
1704
            </listitem>
1705
          </varlistentry>
1706
1707
          <varlistentry>
1708
            <term lang="en">/apps/gdm/simple-greeter/banner_message_text</term>
1709
            <listitem>
1710
              <synopsis lang="en">NULL (string)</synopsis>
1711
              <para lang="en">
1712
                Specifies the text banner message to show on the greeter
1713
                window.
1714
              </para>
1715
            </listitem>
1716
          </varlistentry>
1717
1718
          <varlistentry>
1719
            <term lang="en">/apps/gdm/simple-greeter/disable_restart_buttons</term>
1720
            <listitem>
1721
              <synopsis lang="en">false (boolean)</synopsis>
1722
              <para lang="en">
1723
                Controls whether to show the restart buttons in the login
1724
                window.
1725
              </para>
1726
            </listitem>
1727
          </varlistentry>
1728
1729
          <varlistentry>
1730
            <term lang="en">/apps/gdm/simple-greeter/disable_user_list</term>
1731
            <listitem>
1732
              <synopsis lang="en">false (boolean)</synopsis>
1733
              <para lang="en">
1734
                If true, then the face browser with known users is not shown
1735
                in the login window.
1736
              </para>
1737
            </listitem>
1738
          </varlistentry>
1739
1740
          <varlistentry>
1741
            <term lang="en">/apps/gdm/simple-greeter/logo_icon_name</term>
1742
            <listitem>
1743
              <synopsis lang="en">computer (string)</synopsis>
1744
              <para lang="en">
1745
                Set to the themed icon name to use for the greeter logo.
1746
              </para>
1747
            </listitem>
1748
          </varlistentry>
1749
1750
          <varlistentry>
1751
            <term lang="en">/apps/gdm/simple-greeter/recent-languages</term>
1752
            <listitem>
1753
              <synopsis lang="en">[] (string list)</synopsis>
1754
              <para lang="en">
1755
                Set to a list of languages to be shown by default in the login
1756
                window.  Default value is "[]".  With the default setting only
1757
                the system default language is shown and the option "Other..."
1758
                which pops-up a dialog box showing a full list of available
1759
                languages which the user can select.
1760
              </para>
1761
1762
              <para lang="en">
1763
                Users are not intended to change this setting by hand.  Instead
1764
                GDM keeps track of any languages selected in this configuration
1765
                key, and will show them in the language combo box along with
1766
                the "Other..." choice.  This way, commonly selected languages
1767
                are easier to select.
1768
              </para>
1769
            </listitem>
1770
          </varlistentry>
1771
1772
          <varlistentry>
1773
            <term lang="en">/apps/gdm/simple-greeter/recent-layouts</term>
1774
            <listitem>
1775
              <synopsis lang="en">[] (string list)</synopsis>
1776
              <para lang="en">
1777
                Set to a list of keyboard layouts to be shown by default in the
1778
                login panel.  Default value is "[]".  With the default setting
1779
                only the system default keyboard layout is shown and the option
1780
                "Other..." which pops-up a dialog box showing a full list of
1781
                available keyboard layouts which the user can select.
1782
              </para>
1783
1784
              <para lang="en">
1785
                Users are not intended to change this setting by hand.  Instead
1786
                GDM keeps track of any keyboard layouts selected in this
1787
                configuration key, and will show them in the keyboard layout
1788
                combo box along with the "Other..." choice.  This way, commonly
1789
                selected keyboard layouts are easier to select.
1790
              </para>
1791
            </listitem>
1792
          </varlistentry>
1793
1794
          <varlistentry>
1795
            <term lang="en">/apps/gdm/simple-greeter/wm_use_compiz</term>
1796
            <listitem>
1797
              <synopsis lang="en">false (boolean)</synopsis>
1798
              <para lang="en">
1799
                Controls whether compiz is used as the window manager instead
1800
                of metacity.
1801
              </para>
1802
            </listitem>
1803
          </varlistentry>
1804
        </variablelist>
1805
    </sect2>
1806
1807
    <sect2 id="accessibilityconfiguration">
1808
     <title lang="en">Accessibility Configuration</title>
1809
1810
      <para lang="en">
1811
       This section describes the accessibility configuration options available
1812
       in GDM.
1813
      </para>
1814
1815
      <sect3 id="accessibilitydialog">
1816
        <title lang="en">GDM Accessibility Dialog And GConf Keys</title>
1817
1818
        <para lang="en">
1819
         The GDM greeter panel at the login screen displays an accessibility
1820
         icon.  Clicking on that icon opens the GDM Accessibility Dialog.  In
1821
         the GDM Accessibility Dialog, there is a list of checkboxes, so the
1822
         user can enable or disable the associated assistive tools.
1823
        </para>
1824
1825
        <para lang="en">
1826
         The checkboxes that correspond to the on-screen keyboard, screen
1827
         magnifier and screen reader assistive tools act on the three GConf
1828
         keys that are described in the next section of this document. By
1829
         enabling or disabling these checkboxes, the associated GConf key is
1830
         set to "true" or "false".  When the GConf key is set to true, the 
1831
         assistive tools linked to this GConf key are launched.  When the 
1832
         GConf key is set to "false", any running assistive tool linked to
1833
         this GConf key are terminated.  These GConf keys are not automatically
1834
         reset to a default state after the user has logged in.  Consequently,
1835
         the assistive tools that were running during the last GDM login
1836
         session will automatically be launched at the next GDM login session.
1837
        </para>
1838
1839
        <para lang="en">
1840
         The other checkboxes in the GDM Accessibility Dialog do not have
1841
         corresponding GConf keys because no additional program is launched to
1842
         provide the accessibility features that they offer.  These other
1843
         options correspond to accessibility features that are provided by the
1844
         Xserver, which is always running during the GDM session.
1845
        </para>
1846
      </sect3>
1847
1848
      <sect3 id="accessibilitygconfconfiguration">
1849
        <title lang="en">Accessibility GConf Keys</title>
1850
1851
        <para lang="en">
1852
         GDM offers the following GConf keys to control its accessibility
1853
         features:
1854
        </para>
1855
1856
        <variablelist>
1857
          <title lang="en">GDM Configuration Keys</title>
1858
1859
          <varlistentry>
1860
            <term lang="en">/desktop/gnome/interface/accessibility</term>
1861
            <listitem>
1862
              <synopsis lang="en">false (boolean)</synopsis>
1863
              <para lang="en">
1864
                Controls whether the Accessibility infrastructure will be
1865
                started with the GDM GUI.  This is needed for many
1866
                accessibility technology programs to work.
1867
              </para>
1868
            </listitem>
1869
          </varlistentry>
1870
          <varlistentry>
1871
            <term lang="en">/desktop/gnome/applications/at/screen_magnifier_enabled</term>
1872
            <listitem>
1873
              <synopsis lang="en">false (boolean)</synopsis>
1874
              <para lang="en">
1875
                If set, then the assistive tools linked to this GConf key will
1876
                be started with the GDM GUI program.  By default this is a
1877
                screen magnifier application.
1878
              </para>
1879
            </listitem>
1880
          </varlistentry>
1881
          <varlistentry>
1882
            <term lang="en">/desktop/gnome/applications/at/screen_keyboard_enabled</term>
1883
            <listitem>
1884
              <synopsis lang="en">false (boolean)</synopsis>
1885
              <para lang="en">
1886
                If set, then the assistive tools linked to this GConf key will
1887
                be started with the GDM GUI program.  By default this is an
1888
                on-screen keyboard application.
1889
              </para>
1890
            </listitem>
1891
          </varlistentry>
1892
          <varlistentry>
1893
            <term lang="en">/desktop/gnome/applications/at/screen_reader_enabled</term>
1894
            <listitem>
1895
              <synopsis lang="en">false (boolean)</synopsis>
1896
              <para lang="en">
1897
                If set, then the assistive tools linked to this GConf key will
1898
                be started with the GDM GUI program.  By default this is a
1899
                screen reader application.
1900
              </para>
1901
            </listitem>
1902
          </varlistentry>
1903
        </variablelist>
1904
      </sect3>
1905
1906
      <sect3 id="accessibilitytoolsconfiguration">
1907
        <title lang="en">Linking GConf Keys to Accessbility Tools</title>
1908
1909
        <para lang="en">
1910
         For the screen_magnifier_enabled, the screen_keyboard_enabled, and the
1911
         screen_reader_enabled GConf keys, the assistive tool which gets
1912
         launched depends on the desktop files located in the GDM autostart
1913
         directory as described in the "Autostart Configuration" section of
1914
         this manual.  Any desktop file in the GDM autostart directory can be
1915
         linked to these GConf key via specifying that GConf key in the
1916
         AutostartCondition value in the desktop file.  So the exact
1917
         AutostartCondition line in the desktop file could be one of the
1918
         following:
1919
        </para>
1920
1921
<screen lang="en">
1922
AutostartCondition=GNOME /desktop/gnome/applications/at/screen_keyboard_enabled
1923
AutostartCondition=GNOME /desktop/gnome/applications/at/screen_magnifier_enabled
1924
AutostartCondition=GNOME /desktop/gnome/applications/at/screen_reader_enabled
1925
</screen>
1926
1927
        <para lang="en">
1928
         When an accessibility key is true, then any program which is linked to
1929
         that key in a GDM autostart desktop file will be launched (unless the
1930
         Hidden key is set to true in that desktop file).  A single GConf key
1931
         can even start multiple assistive tools if there are multiple desktop
1932
         files with this AutostartCondition in the GDM autostart directory.
1933
        </para>
1934
      </sect3>
1935
1936
      <sect3 id="accessibilitytoolexample">
1937
        <title lang="en">Example Of Modifying Accessibility Tool Configuration</title>
1938
1939
        <para lang="en">
1940
         For example, if GNOME is distributed with GOK as the default on-screen
1941
         keyboard, then this could be replaced with a different program if
1942
         desired.  To replace GOK with the on-screen keyboard application
1943
         "onboard" and additionally activate the assistive tool "mousetweaks"
1944
         for dwelling support, then the following configuration is needed.
1945
        </para>
1946
1947
        <para lang="en">
1948
         Create a desktop file for onboard and a second one for mousetweaks;
1949
         for example, onboard.desktop and mousetweaks.desktop. These files
1950
         must be placed in the GDM autostart directory and be in the format
1951
         as explained in the "Autostart Configuration" section of this
1952
         document.
1953
        </para>
1954
1955
        <para lang="en">
1956
         The following is an example <filename>onboard.desktop</filename> file:
1957
        </para>
1958
1959
<screen lang="en">
1960
[Desktop Entry]
1961
Encoding=UTF-8
1962
Name=Onboard Onscreen Keyboard
1963
Comment=Use an on-screen keyboard
1964
TryExec=onboard
1965
Exec=onboard --size 500x180 -x 20 -y 10
1966
Terminal=false
1967
Type=Application
1968
StartupNotify=true
1969
Categories=GNOME;GTK;Accessibility;
1970
AutostartCondition=GNOME /desktop/gnome/applications/at/screen_keyboard_enabled
1971
</screen>
1972
1973
        <para lang="en">
1974
         The following is an example <filename>mousetweaks.desktop</filename>
1975
         file:
1976
        </para>
1977
1978
<screen lang="en">
1979
[Desktop Entry]
1980
Encoding=UTF-8
1981
Name=Software Mouse-Clicks
1982
Comment=Perform clicks by dwelling with the pointer
1983
TryExec=mousetweaks
1984
Exec=mousetweaks --enable-dwell -m window -c -x 20 -y 240 
1985
Terminal=false
1986
Type=Application
1987
StartupNotify=true
1988
Categories=GNOME;GTK;Accessibility;
1989
AutostartCondition=GNOME /desktop/gnome/applications/at/screen_keyboard_enabled
1990
</screen>
1991
1992
        <para lang="en">
1993
         Note the line with the AutostartCondition that links both desktop
1994
         files to the GConf key for the on-screen keyboard.
1995
        </para>
1996
1997
        <para lang="en">
1998
         To disable GOK from starting, the desktop file for the GOK on-screen
1999
         keyboard must be removed or deactivated.  Otherwise onboard and GOK
2000
         would simultaneously be started.  This can be done by removing the
2001
         gok.desktop file from the GDM autostart directory, or by adding the
2002
         "Hidden=true" key setting to the gok.desktop file.
2003
        </para>
2004
2005
        <para lang="en">
2006
         After making these changes, GOK will no longer be started when the
2007
         user activates the on-screen keyboard in the GDM session; but onboard
2008
         and mousetweaks will instead be launched.
2009
        </para>
2010
      </sect3>
2011
    </sect2>
2012
2013
    <sect2 id="generalsessionconfig">
2014
      <title lang="en">General Session Settings</title>
2015
<!--
2016
<para>
2017
          TODO - I think this section should be expanded upon.  What specific
2018
                 keys are of interest, or would some users be likely to want
2019
                 to configure?  Also, would be good to be more specific about
2020
                 how lock down management is handled.
2021
</para>
2022
-->
2023
        <para lang="en">
2024
          The GDM Greeter uses some of the same framework that your desktop
2025
          session will use. And so, it is influenced by a number of the same
2026
          GConf settings. For each of these settings the Greeter will use the
2027
          default value unless it is specifically overridden by a) GDM's
2028
          installed mandatory policy b) system mandatory policy. GDM installs
2029
          its own mandatory policy to lock down some settings for security.
2030
        </para>
2031
    </sect2>
2032
2033
    <sect2 id="gnomesettingsdaemon">
2034
      <title lang="en">GNOME Settings Daemon</title>
2035
<!--
2036
<para>
2037
          TODO - I think this section should be expanded upon.  What specific
2038
                 keys are of interest, or would some users be likely to want
2039
                 to configure?  Also, would be good to give a more complete
2040
                 list of plugins that users might want to consider disabling.
2041
                 Also, shouldn't we list the sound/active key in the Greeter
2042
                 configuration setting?  Oddly I do not find this key used
2043
                 in anything but the chooser in SVN.
2044
</para>
2045
-->
2046
2047
        <para lang="en">
2048
          GDM enables the following gnome-settings-daemon plugins:
2049
          a11y-keyboard, background, sound, xsettings.
2050
        </para>
2051
2052
        <para lang="en">
2053
          These are responsible for things like the background image, font and
2054
          theme settings, sound events, etc.
2055
        </para>
2056
2057
        <para lang="en">
2058
          Plugins can also be disabled using GConf. For example, if you want to
2059
          disable the sound plugin then unset the following key:
2060
          <filename>/apps/gdm/simple-greeter/settings-manager-plugins/sound/active</filename>.
2061
        </para>
2062
    </sect2>
2063
2064
    <sect2 id="sessionconfig">
2065
      <title lang="en">GDM Session Configuration</title>
2066
2067
      <para lang="en">
2068
        GDM sessions are specified using the FreeDesktop.org Desktop Entry
2069
        Specification, which can be referenced at the following URL:
2070
        <ulink url="http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec">
2071
        http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec</ulink>.
2072
      </para>
2073
2074
      <para lang="en">
2075
        By default, GDM will install desktop files in the
2076
        <filename>&lt;share&gt;/xsessions</filename> directory.  GDM will
2077
        search the following directories in this order to find desktop files:
2078
        <filename>&lt;etc&gt;/X11/sessions/</filename>,
2079
        <filename>&lt;dmconfdir&gt;/Sessions</filename>, 
2080
        <filename>&lt;share&gt;/xsessions</filename>, and
2081
        <filename>&lt;share&gt;/gdm/BuiltInSessions</filename>.  By default the
2082
        <filename>&lt;dmconfdir&gt;</filename> is set to
2083
        <filename>&lt;etc&gt;/dm/</filename> unless GDM is configured to use
2084
        a different directory via the "--with-dmconfdir" option.
2085
      </para>
2086
2087
      <para lang="en">
2088
        A session can be disabled by editing the desktop file and adding a line
2089
        as follows: <filename>Hidden=true</filename>.
2090
      </para>
2091
2092
      <para lang="en">
2093
        GDM desktop files support a GDM-specific extension, a key named
2094
        "X-GDM-BypassXsession".  If the key is not specified in a
2095
        desktop file, the value defaults to "false".  If this key is
2096
        specified to be "true" in a desktop file, then GDM will
2097
        launch the program specified by the desktop file "Exec" key
2098
        directly when starting the user session.  It will not run the program
2099
        via the <filename>&lt;etc&gt;/gdm/Xsession</filename> script, which is
2100
        the normal behavior.  Since bypassing the
2101
        <filename>&lt;etc&gt;/gdm/Xsession</filename> script avoids setting up
2102
        the user session with the normal system and user settings, sessions
2103
        started this way can be useful for debugging problems in the system or
2104
        user scripts that might be preventing a user from being able to start
2105
        a session.
2106
      </para>
2107
2108
    </sect2>
2109
2110
    <sect2 id="userconfig">
2111
      <title lang="en">GDM User Session and Language Configuration</title>
2112
      <para lang="en">
2113
        The user's default session and language choices are stored in the
2114
        <filename>~/.dmrc</filename> file.  When a user logs in for the first
2115
        time, this file is created with the user's initial choices.  The user
2116
        can change these default values by simply changing to a different value
2117
        when logging in.  GDM will remember this change for subsequent logins.
2118
      </para>
2119
2120
      <para lang="en">
2121
        The <filename>~/.dmrc</filename> file is in the standard
2122
        <filename>INI</filename> format.  It has one section called
2123
        <filename>[Desktop]</filename> which has two keys:
2124
        <filename>Session</filename> and <filename>Language</filename>.
2125
      </para>
2126
2127
      <para lang="en">
2128
        The <filename>Session</filename> key specifies the basename of the
2129
        session <filename>.desktop</filename> file that the user wishes to
2130
        normally use without the <filename>.desktop</filename> extension.
2131
        The <filename>Language</filename> key specifies the language that the
2132
        user wishes to use by default.  If either of these keys is missing, the
2133
        system default is used.  The file would normally look as follows:
2134
      </para>
2135
2136
<screen lang="en">
2137
[Desktop]
2138
Session=gnome
2139
Language=cs_CZ.UTF-8
2140
</screen>
2141
    </sect2>
2142
2143
  </sect1>
2144
2145
  <!-- ============= GDM Commands ============================= -->
2146
2147
  <sect1 id="binaries">
2148
    <title lang="en">GDM Commands</title>
2149
2150
    <sect2 id="sbindir_binaries">
2151
      <title lang="en">GDM Root User Commands</title>
2152
2153
      <para lang="en">
2154
        The GDM package provides the following commands in
2155
        <filename>sbindir</filename> intended to be run by the root user:
2156
      </para>
2157
2158
      <sect3 id="gdmcommandline">
1.4.55 by Jeremy Bicha
Import upstream version 3.8.1.1
2159
        <title lang="en"><command>gdm</command> Command Line Options</title>
1.4.51 by Jeremy Bicha
Import upstream version 3.5.91
2160
2161
        <para lang="en">
1.4.55 by Jeremy Bicha
Import upstream version 3.8.1.1
2162
          <command>gdm</command> is the main daemon which sets up
2163
          graphical login environment and starts necesary helpers.
2164
       </para>
1.4.51 by Jeremy Bicha
Import upstream version 3.5.91
2165
2166
        <variablelist>
1.4.55 by Jeremy Bicha
Import upstream version 3.8.1.1
2167
          <title lang="en"><command>gdm</command> Command Line Options</title>
1.4.51 by Jeremy Bicha
Import upstream version 3.5.91
2168
2169
          <varlistentry>
2170
            <term lang="en">-?, --help</term>
2171
            <listitem>
2172
              <para lang="en">
2173
                Gives a brief overview of the command line options.
2174
              </para>
2175
            </listitem>
2176
          </varlistentry>
2177
2178
          <varlistentry>
2179
            <term lang="en">--fatal-warnings</term>
2180
            <listitem>
2181
              <para lang="en">
2182
                Make all warnings cause GDM to exit.
2183
              </para>
2184
            </listitem>
2185
          </varlistentry>
2186
2187
          <varlistentry>
2188
            <term lang="en">--timed-exit</term>
2189
            <listitem>
2190
              <para lang="en">
2191
                Exit after 30 seconds.  Useful for debugging.
2192
              </para>
2193
            </listitem>
2194
          </varlistentry>
2195
2196
          <varlistentry>
2197
            <term lang="en">--version</term>
2198
            <listitem>
2199
              <para lang="en">
2200
                Print the version of the GDM daemon.
2201
              </para>
2202
            </listitem>
2203
          </varlistentry>
2204
        </variablelist>
2205
      </sect3>
2206
2207
      <sect3 id="gdmrestartcommandline">
2208
        <title lang="en"><command>gdm-restart</command> Command Line Options</title>
2209
2210
        <para lang="en">
2211
          <command>gdm-restart</command> stops and restarts GDM by sending
2212
          the GDM daemon a HUP signal.  This command will immediately terminate
2213
          all sessions and log out users currently logged in with GDM.
2214
        </para>
2215
      </sect3>
2216
2217
      <sect3 id="gdmsaferestartcommandline">
2218
        <title lang="en"><command>gdm-safe-restart</command> Command Line Options</title>
2219
  
2220
        <para lang="en">
2221
          <command>gdm-safe-restart</command> stops and restarts GDM by
2222
          sending the GDM daemon a USR1 signal.  GDM will be restarted as soon
2223
          as all users log out.
2224
        </para>
2225
      </sect3>
2226
2227
      <sect3 id="gdmstopcommandline">
2228
        <title lang="en"><command>gdm-stop</command> Command Line Options</title>
2229
2230
        <para lang="en">
2231
          <command>gdm-stop</command> stops GDM by sending the GDM daemon
2232
          a TERM signal. 
2233
        </para>
2234
      </sect3>
2235
    </sect2>
2236
  </sect1>
2237
2238
  <!-- ============= Troubleshooting =========================== -->
2239
2240
  <sect1 id="troubleshooting">
2241
    <title lang="en">Troubleshooting</title>
2242
<!--
2243
<para>
2244
      TODO - any other tips we should add?  Might be useful to highlight any
2245
             common D-Bus configuration issues?
2246
</para>
2247
-->
2248
2249
    <para lang="en">
2250
      This section discusses helpful tips for getting GDM working.  In general,
2251
      if you have a problem using GDM, you can submit a bug or send an email
2252
      to the gdm-list mailing list.  Information about how to do this is in
2253
      the Introduction section of the document.
2254
    </para>
2255
2256
    <para lang="en">
2257
      If GDM is failing to work properly, it is always a good idea to include
2258
      debug information.  To enable debugging, set the debug/Enable key to
2259
      "true" in the <filename>&lt;etc&gt;/gdm/custom.conf</filename>
2260
      file and restart GDM.  Then use GDM to the point where it fails, and
2261
      debug output will be sent to the system log file
2262
      (<filename>&lt;var&gt;/log/messages</filename> or
2263
      <filename>&lt;var&gt;/adm/messages</filename> depending on your Operating
2264
      System).  If you share this output with the GDM community via a bug
2265
      report or email, please only include the GDM related debug information
2266
      and not the entire file since it can be large.  If you do not see any
2267
      GDM syslog output, you may need to configure syslog (refer to the
2268
      <ulink type="help" url="man:syslog">syslog</ulink> man page).
2269
    </para>
2270
2271
    <sect2 id="wontstart">
2272
      <title lang="en">GDM Will Not Start</title>
2273
2274
      <para lang="en">
2275
         There are a many problems that can cause GDM to fail to start, but
2276
         this section will discuss a few common problems and how to approach
2277
         tracking down a problem with GDM starting.   Some problems will 
2278
         cause GDM to respond with an error message or dialog when it tries
2279
         to start, but it can be difficult to track down problems when GDM
2280
         fails silently.
2281
      </para>
2282
2283
      <para lang="en">
2284
         First make sure that the Xserver is configured properly.  The 
2285
         GDM configuration file contains a command in the [server-Standard]
2286
         section that is used for starting the Xserver.  Verify that this
2287
         command works on your system.  Running this command from the 
2288
         console should start the Xserver.  If it fails, then the problem
2289
         is likely with your Xserver configuration.  Refer to your Xserver
2290
         error log for an idea of what the problem may be.  The problem may
2291
         also be that your Xserver requires different command-line options.
2292
         If so, then modify the Xserver command in the GDM configuration file
2293
         so that it is correct for your system.
2294
      </para>
2295
2296
      <para lang="en">
2297
         Also make sure that the <filename>/tmp</filename> directory has
2298
         reasonable ownership and permissions, and that the machine's file
2299
         system is not full.  These problems will cause GDM to fail to start.
2300
      </para>
2301
    </sect2>
2302
  </sect1>
2303
2304
  <!-- ============= Application License ============================= -->
2305
2306
  <sect1 id="license">
2307
    <title lang="en">License</title>
2308
    <para lang="en">
2309
      This program is free software; you can redistribute it and/or
2310
      modify it under the terms of the  <ulink type="help" url="gnome-help:gpl">
2311
      <citetitle>GNU General Public License</citetitle></ulink> as
2312
      published by the Free Software Foundation; 
2313
      either version 2 of the License, or (at your option) any later
2314
      version.
2315
    </para>
2316
    <para lang="en">
2317
      This program is distributed in the hope that it will be useful, but
2318
      WITHOUT ANY WARRANTY; without even the implied warranty of
2319
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2320
      <citetitle>GNU General Public License</citetitle> for more details.
2321
    </para>
2322
    <para lang="en">
2323
      A copy of the <citetitle>GNU General Public License</citetitle> is
2324
      included as an appendix to the <citetitle>GNOME Users
2325
      Guide</citetitle>.  You may also obtain a copy of the
2326
      <citetitle>GNU General Public License</citetitle> from the Free
2327
      Software Foundation by visiting
2328
      <ulink type="http" url="http://www.fsf.org">their Web site</ulink> or by
2329
      writing to
2330
      <address lang="en">
2331
      Free Software Foundation, Inc.
2332
      <street>51 Franklin Street, Fifth Floor</street>
2333
      <city>Boston</city>, <state>MA</state> <postcode>02110-1301</postcode>
2334
      <country>USA</country>
2335
      </address>
2336
    </para>
2337
  </sect1>
2338
</article>
2339
<!-- Keep this comment at the end of the file
2340
Local variables:
2341
mode: sgml
2342
sgml-omittag:t
2343
sgml-shorttag:t
2344
sgml-minimize-attributes:nil
2345
sgml-always-quote-attributes:t
2346
sgml-indent-step:2
2347
sgml-indent-data:t
2348
sgml-parent-document:nil
2349
sgml-exposed-tags:nil
2350
sgml-local-catalogs:nil
2351
sgml-local-ecat-files:nil
2352
End:
2353
-->