1 <!DOCTYPE REFENTRY PUBLIC "-//Sun Microsystems//DTD DocBook V3.0-Based SolBook Subset V2.0//EN" [ 2 <!--ArborText, Inc., 1988-1999, v.4002--> 3 <!--ARC : LSARC 2005/417 GDM2 as default Solaris Display Manager--> 4 <!ENTITY cmd "gdm"> 5 <!ENTITY % commonents SYSTEM "smancommon.ent"> 6 %commonents; 7 <!ENTITY % booktitles SYSTEM "booktitles.ent"> 8 %booktitles; 9 <!ENTITY suncopy "Copyright (c) 2004,2006 Sun Microsystems, Inc. All Rights Reserved."> 10 ]> 11 <?Pub UDT _bookmark _target> 12 <?Pub EntList brvbar bull cross dash diam diams frac12 frac13 frac14 hellip 13 laquo lArr loz mdash nabla ndash para pound rArr raquo sect yen gt lt> 14 <?Pub Inc> 15 <refentry id="gdm-1m"> 16 <!-- %Z%%M% %I% %E% SMI; --> 17 <refmeta><refentrytitle>gdm</refentrytitle><manvolnum>1m</manvolnum> 18 <refmiscinfo class="date">2 Sep 2004</refmiscinfo> 19 <refmiscinfo class="sectdesc">&man1;</refmiscinfo> 20 <refmiscinfo class="software">&release;</refmiscinfo> 21 <refmiscinfo class="arch">generic</refmiscinfo> 22 <refmiscinfo class="copyright">&suncopy;</refmiscinfo> 23 </refmeta> 24 <indexterm><primary>gdm</primary></indexterm><indexterm><primary>GNOME Display 25 Manager</primary></indexterm> 26 <refnamediv id="gdm-1m-name"><refname>gdm</refname><refname>gdm-binary</refname> 27 <refname>gdmchooser</refname><refname>gdmgreeter</refname><refname>gdmlogin 28 </refname><refpurpose>GNOME Display Manager</refpurpose></refnamediv> 29 30 <refsynopsisdiv id="gdm-1m-synp"><title>&synp-tt;</title> 31 <cmdsynopsis><command>&cmd; | gdm-binary</command><arg choice="opt"><option>-config=<replaceable>file</replaceable></option></arg><arg choice="opt"><option>-monte-carlo-sqrt2</option></arg><arg choice="opt"><option>-no-console</option></arg><arg choice="opt"><option>nodaemon</option></arg><arg choice="opt"><option>-preserve-ld-vars</option></arg><arg choice="opt"><option>-version</option></arg><arg choice="opt"><option>-wait-for-go</option></arg> 32 </cmdsynopsis> 33 34 <cmdsynopsis><command>gdmlogin | gdmgreeter</command><arg choice="opt"><option role="nodash"><replaceable>gnome-std-options</replaceable></option></arg> 35 </cmdsynopsis> 36 37 <cmdsynopsis><command>gdmchooser</command><arg choice="opt"><option>clientaddress=<replaceable>address</replaceable></option></arg><arg choice="opt"><option>connectionType=<replaceable>type</replaceable></option></arg><arg choice="opt"><option>xdmaddress=<replaceable>socket</replaceable></option></arg><arg choice="opt"><option role="nodash"><replaceable> gnome-std-options</replaceable></option></arg> 38 </cmdsynopsis></refsynopsisdiv> 39 40 <refsect1 id="gdm-1m-desc"><title>&desc-tt;</title> 41 <para>GDM is the GNOME Display Manager, a program used for login session management. 42 When no user is logged in on the console, GDM displays a graphical user interface 43 that enables the user to enter their username and password. GDM supports 44 XDMCP and supports flexible or on-demand servers via the 45 <citerefentry><refentrytitle>gdmflexiserver</refentrytitle><manvolnum>1</manvolnum></citerefentry> 46 command.</para> 47 <para><command>&cmd;</command> is a wrapper script that launches 48 <command>gdm-binary</command> and passes along any options. Before launching 49 <command>gdm-binary</command> the <command>&cmd;</command> wrapper script sources the 50 <citerefentry><refentrytitle>profile</refentrytitle><manvolnum>4</manvolnum></citerefentry> 51 file to set the standard system environment variables. To support internationalization, 52 <command>&cmd;</command> also sets the LC_MESSAGES environment variable to LANG if 53 neither LC_MESSAGES nor LC_ALL is set.</para> 54 <para>On startup, the GDM daemon parses its config file 55 <filename>/usr/share/gdm/defaults.conf</filename> where system defaults are 56 stored. It also reads <filename>/etc/X11/gdm/custom.conf</filename> and 57 any user settings defined there override the default settings. Per-display 58 configuration settings can be set in 59 <filename>/etc/X11/gdm/custom.conf<replaceable>display</replaceable></filename> 60 where <replaceable>display</replaceable> is the display number, such as ":0". 61 Only the "security/PamStack" setting and the settings in the [gui] and 62 [greeter] sections of the configuration file may be specified in the 63 per-display configuration file, any others are ignored. When GDM displays 64 a GUI on the display, these per-display values override the values in the other 65 configuration files.</para> 66 <para> 67 For each local display, <command>gdm-binary</command> forks an Xserver and a slave 68 process. The main <command>gdm-binary</command> process then listens to XDMCP 69 requests from remote displays, if so configured, and monitors the local display 70 sessions. The main daemon process also allows new local Xservers to start on demand 71 using the 72 <citerefentry><refentrytitle>gdmflexiserver</refentrytitle><manvolnum>1</manvolnum></citerefentry> 73 command.</para> 74 <para>The GDM slave process opens the display and starts either the Themed 75 Greeter or the Plain Greeter. This choice is set by the "daemon/Greeter" parameter 76 in the configuration file for console login and the "daemon/RemoteGreeter" 77 parameter for XDMCP logins. The parameter should be set to "gdmgreeter" to 78 use the Themed Greeter or "gdmlogin" to use the Plain Greeter. The 79 Plain Greeter is lower-bandwidth, which tends to be more appropriate for 80 remote logins. The GDM daemon communicates asynchronously with the slave process 81 through a pipe.</para> 82 <para>From either the Themed Greeter or the Plain Greeter, it is possible 83 to launch the Chooser program <command>gdmchooser</command> to start remote 84 XDMCP login sessions.</para> 85 <para>Although disabled by default, it is also possible to launch the Setup 86 program 87 <citerefentry><refentrytitle>gdmsetup</refentrytitle><manvolnum>1m</manvolnum></citerefentry> 88 to edit the configuration choices in the 89 <filename>/etc/X11/gdm/custom.conf</filename> file. The root password must be 90 entered to launch the Setup program. The ability to launch the Setup program 91 is disabled by default as 92 <citerefentry><refentrytitle>gdmsetup</refentrytitle><manvolnum>1m</manvolnum></citerefentry> 93 runs with root permissions and changing GDM configuration can affect security.</para> 94 <para>GDM relies on 95 <citerefentry><refentrytitle>PAM</refentrytitle><manvolnum>3PAM</manvolnum></citerefentry> 96 (Pluggable Authentication Modules) for password authentication, 97 but supports regular crypt() and shadow passwords on legacy systems. On Solaris, 98 GDM uses 99 <citerefentry><refentrytitle>logindevperm</refentrytitle><manvolnum>4</manvolnum></citerefentry> 100 to set proper device permissions for the user on login.</para> 101 <para>All operations on user files are done with the effective user id of 102 the user. If the sanity check fails on the user's <filename>.Xauthority</filename> 103 file, a fallback cookie is created in <filename>/tmp</filename>.</para> 104 </refsect1> 105 <refsect1 id="gdm-1m-opts"><title>&opts-tt;</title> 106 <para>The following options are supported by <command>&cmd;</command> and 107 <command>gdm-binary</command>:</para> 108 <variablelist termlength="medium"> 109 <varlistentry><term><option>-config=<replaceable>file</replaceable></option></term> 110 <listitem><para>Specify alternate default configuration file.</para> 111 </listitem></varlistentry> 112 <varlistentry><term><option>-monte-carlo-sqrt2</option></term><listitem></listitem> 113 </varlistentry> 114 <varlistentry><term><option>-no-console</option></term><listitem><para>Tell 115 the daemon that it should not run anything on the console. This means that 116 none of the local servers from the [servers] section of the GDM configuration 117 are run, and the console is not used to communicate errors to the user. 118 An empty [servers] section automatically implies this option.</para> 119 </listitem></varlistentry> 120 <varlistentry><term><option>nodaemon</option></term><listitem><para>If this 121 option is specified, GDM does not fork into the background when run. You can 122 use a single dash with this option to preserve compatibility with XDM.</para> 123 </listitem></varlistentry> 124 <varlistentry><term><option>-preserve-ld-vars</option></term><listitem><para> 125 When clearing the environment internally, preserve all variables starting 126 with LD_. This is mostly for debugging purposes.</para> 127 </listitem></varlistentry> 128 <varlistentry><term><option>-version</option></term><listitem><para>Print 129 the version of the GDM daemon.</para> 130 </listitem></varlistentry> 131 <varlistentry><term><option>-wait-for-go</option></term><listitem> 132 <para> 133 If started with this option, GDM initiates, but only starts the first local display 134 and then waits for a GO message in the fifo protocol. No greeter is shown 135 until the GO message is sent. Also, flexiserver requests are denied and XDMCP 136 is not started until GO is given. This is useful for initialization scripts 137 that wish to start X early, but where you do not yet want the user to start 138 logging in: the script sends the GO to the fifo when ready and GDM then continues. 139 </para> 140 </listitem></varlistentry> 141 </variablelist> 142 <para>The following options are supported by <command>gdmlogin</command> and 143 <command>gdmgreeter</command>:</para> 144 <variablelist termlength="medium"> 145 <varlistentry><term><option role="nodash"><replaceable>gnome-std-options</replaceable></option></term> 146 <listitem><para>Standard options available for use with most GNOME applications. 147 See <citerefentry><refentrytitle>gnome-std-options</refentrytitle><manvolnum> 148 5</manvolnum></citerefentry> for more information.</para> 149 </listitem></varlistentry> 150 </variablelist><para>The following options are supported by <command>gdmchooser</command>:</para> 151 <variablelist termlength="medium"> 152 <varlistentry><term><option>clientaddress=<replaceable>address</replaceable></option></term> 153 <listitem><para>Client address to return in response to xdm. This option is 154 for running <command>gdmchooser</command> with xdm, and is not used within 155 GDM.</para> 156 </listitem></varlistentry> 157 <varlistentry><term><option>connectionType=<replaceable>type</replaceable></option></term> 158 <listitem><para>Connection type to return in response to xdm. This option 159 is for running <command>gdmchooser</command> with xdm, and is not used within 160 GDM.</para> 161 </listitem></varlistentry> 162 <varlistentry><term><option>xdmaddress=<replaceable>socket</replaceable></option></term> 163 <listitem><para>Socket for XDM communication.</para> 164 </listitem></varlistentry> 165 <varlistentry><term><option role="nodash"><replaceable>gnome-std-options</replaceable></option></term> 166 <listitem><para>Standard options available for use with most GNOME applications. 167 See <citerefentry><refentrytitle>gnome-std-options</refentrytitle><manvolnum> 168 5</manvolnum></citerefentry> for more information.</para> 169 </listitem></varlistentry> 170 </variablelist></refsect1> 171 <refsect1 id="gdm-1m-exde"><title>&exde-tt;</title> 172 <refsect2 id="gdm-1m-exde-standard"> 173 <title>Plain Greeter</title> 174 <para>The Plain Greeter is the default graphical user interface that is 175 presented to the user. The greeter contains a menu at the top, an optional 176 face browser, an optional logo, and a text entry field. The Plain Greeter 177 corresponds to the executable <command>gdmlogin</command>.</para> 178 <para>The text entry field is used to enter logins, passwords, passphrases, 179 and so on. The field is controlled by the underlying daemon and is basically 180 stateless. The daemon controls the greeter through a simple protocol where 181 the daemon can ask the greeter for a text string with echo turned on or off. 182 Similarly, the daemon can change the label above the text entry field to correspond 183 to the value that the authentication system wants the user to enter.</para> 184 <para>The menu bar in the top of the greeter enables the user to select the 185 requested session type or desktop environment, change the GTK+ theme (if enabled), 186 select an appropriate locale or language, and optionally shutdown, reboot, 187 or suspend the machine, configure GDM (if the user knows the root password), 188 or start an XDMCP chooser.</para> 189 <para>Optionally, the greeter can provide a face browser that contains icons 190 for all of the users on a system. The icons can be installed globally by the 191 system administrator, or in the user home directories. If installed globally, 192 the icons should be in the <filename><replaceable>share</replaceable>/faces 193 </filename> directory (though this can be configured with the GlobalFaceDir 194 configuration option) and the filename should be the name of the user, optionally 195 with “.png” appended.</para> 196 <para>Users can place their icons in a file called <filename>~/.face</filename>, 197 and can use 198 <citerefentry><refentrytitle>gdmphotosetup</refentrytitle><manvolnum>1</manvolnum></citerefentry> 199 to graphically configure this. 200 Face icons placed in the global face directory must be readable to the GDM 201 user. However, the daemon proxies user pictures to the greeter. Therefore, 202 those do not have to be readable by the GDM user, but must be readable by 203 the root user.</para> 204 <para>Note that loading and scaling face icons located in user home directories 205 can be a very time-consuming task, especially on large systems or systems 206 running NIS. The browser feature is only intended for systems with relatively 207 few users. Also, if home directories are on an on-demand mounted file system 208 such as AFS, GDM might mount all of the home directories just to check for 209 pictures if the face browser is on. However, GDM will try to give up after 210 5 seconds of activity, and only display the users whose pictures have been 211 received so far.</para> 212 <para>To filter out unwanted user names in the browser, the "greeter/Exclude" parameter 213 in the GDM configuration can be set with a list of usernames separated 214 by commas. The greeter automatically ignores the usernames listed, and excludes 215 users whose UIDs are lower than the "greeter/MinimalUID" parameter, which is 100 by 216 default.</para> 217 <para>When the browser is turned on, valid usernames on the machine are exposed 218 to a potential intruder. This might be a bad idea if you do not know who has 219 access to a login screen. This is especially true if you run XDMCP. Note that 220 you should never run XDMCP on an open network. </para> 221 <para>The greeter can optionally display a logo in the login window. The image 222 must be in a format readable to the <filename>gdk-pixbuf</filename> library 223 (GIF, JPG, PNG, TIFF, XPM), and must be readable by the GDM user.</para> 224 </refsect2> 225 <refsect2 id="gdm-1m-exde-graphical"> 226 <title>Themed Greeter</title> 227 <para>The Themed Greeter is a greeter interface that is displayed on the 228 whole screen and is themable. The Themed Greeter corresponds to the executable 229 <command>gdmgreeter</command> 230 .</para> 231 <para>Themes can be selected and new themes can be installed by running 232 <citerefentry><refentrytitle>gdmsetup</refentrytitle><manvolnum>1m</manvolnum></citerefentry>, 233 or by setting the "greeter/GraphicalTheme" parameter in the GDM configuration. 234 The location of themes is specified by the "greeter/GraphicalThemeDir" parameter.</para> 235 <para>The look and feel of this greeter is controlled by the theme, so the 236 user interface elements that are present might differ. The only item that 237 must always be present is the text entry field, as described in the Plain 238 Greeter section above. You can display a menu of available actions by pressing 239 the F10 key. This can be useful if the theme does not provide certain buttons 240 when you wish to perform a particular action. </para> 241 </refsect2> 242 <refsect2 id="gdm-1m-exde-chooser"> 243 <title>Chooser</title> 244 <para>The Chooser displays a list of local machines that accept XDMCP connections. 245 The user can also specify a machine by entering its name directly. Once a 246 machine is selected, a remote XDMCP session can be started. The Chooser can 247 be launched on the console directly from the Plain or Themed Greeter. 248 The chooser corresponds to the executable <command>gdmchooser</command>. 249 </para> 250 </refsect2> 251 <refsect2 id="gdm-1m-exde-xdmcp"> 252 <title>XDMCP</title> 253 <para>GDM can be configured to enable XDMCP so that users can log in remotely 254 and launch a graphical chooser that allows a remote login session to be started. 255 See the [xdmcp] section of the default GDM configuration file.</para> 256 <para>GDM grants access to the hosts specified in the GDM service section 257 of your TCP Wrappers configuration file. GDM does not support remote display 258 access control on systems without TCP Wrappers.</para> 259 <para>GDM includes several measures that make GDM more resistant to denial-of-service 260 attacks on the XDMCP service. Several protocol parameters, handshaking timeouts, 261 and so on can be fine-tuned. The default values should work for most systems, 262 however. Do not change these values unless you know what you are doing.</para> 263 <para>By default, GDM listens to UDP port 177, although this can be configured. 264 GDM responds to QUERY and BROADCAST_QUERY requests by sending a WILLING packet 265 to the originator.</para> 266 <para>GDM can also be configured to honor INDIRECT queries and present a host 267 chooser to the remote display. GDM remembers the user's choice and forwards 268 subsequent requests to the chosen manager. GDM also supports an extension 269 to the protocol which makes GDM forget the redirection once the user's connection 270 succeeds. This extension is only supported if both daemons are GDM. This extension 271 is transparent and is ignored by XDM or other daemons that implement XDMCP. 272 </para> 273 <para>GDM only supports the MIT-MAGIC-COOKIE-1 authentication system. Because 274 of this, the cookies are transmitted as clear text. Therefore, you should 275 be careful about the network where you use this. That is, be careful about 276 where your XDMCP connection is going. Note that if snooping is possible, an 277 attacker could snoop your password as you log in, so a better XDMCP authentication 278 would not help you much anyway. If snooping is possible and undesirable, you 279 should use <filename>ssh</filename> for tunneling an X connection, rather 280 then using GDM's XDMCP. Think of XDMCP as a sort of graphical telnet, with 281 the same security issues.</para> 282 </refsect2> 283 <refsect2 id="gdm-1m-exde-control"> 284 <title>Controlling GDM</title> 285 <para>You can control GDM behavior during runtime in several different ways. 286 You can run certain commands, or you can talk to GDM using either a UNIX socket 287 protocol, or a FIFO protocol.</para> 288 <para>You can control GDM behavior as follows:</para> 289 <itemizedlist> 290 <listitem><para>To stop GDM, you can either send the TERM signal to the main 291 daemon, or run the 292 <citerefentry><refentrytitle>gdm-stop</refentrytitle><manvolnum>1m</manvolnum></citerefentry> 293 command.</para></listitem> 294 <listitem><para>To restart GDM, you can either send the HUP signal to the 295 main daemon, or run the 296 <citerefentry><refentrytitle>gdm-restart</refentrytitle><manvolnum>1m</manvolnum></citerefentry> 297 command.</para></listitem> 298 <listitem><para>To restart GDM but only after all users have logged out, you 299 can either send the USR1 signal to the main daemon, or run the 300 <citerefentry><refentrytitle>gdm-safe-restart</refentrytitle><manvolnum>1m</manvolnum></citerefentry> 301 command.</para></listitem> 302 </itemizedlist> 303 <para>The 304 <citerefentry><refentrytitle>gdm-stop</refentrytitle><manvolnum>1m</manvolnum></citerefentry>, 305 <citerefentry><refentrytitle>gdm-restart</refentrytitle><manvolnum>1m</manvolnum></citerefentry>, and 306 <citerefentry><refentrytitle>gdm-safe-restart</refentrytitle><manvolnum>1m</manvolnum></citerefentry> 307 commands are in the <filename>/sbin</filename> directory.</para> 308 <para>The 309 <citerefentry><refentrytitle>gdmflexiserver</refentrytitle><manvolnum>1</manvolnum></citerefentry> 310 command can be used to communicate with the GDM daemon and to start new flexible 311 (on demand) servers.</para> 312 </refsect2> 313 <refsect2 id="gdm-1m-exde-config"> 314 <title>Configuration</title> 315 <para>The GDM configuration files contain comments that explain each 316 configuration parameter.</para> 317 </refsect2> 318 <refsect2 id="gdm-1m-exde-security"> 319 <title>Security</title> 320 <para>GDM is best used with a dedicated user id and group id that GDM uses 321 for graphical interfaces such as <command>gdmgreeter</command>, <command> 322 gdmlogin</command>, and <command>gdmchooser</command>. You can specify the 323 name of this user and group in the [daemon] section of the GDM configuration 324 file.</para> 325 <para>The GDM user and group, which are normally just "gdm", should not be a 326 user or group of any particular privilege. The reason for using the GDM user 327 and group is to have the user interface run as a user without privileges, 328 so that in the unlikely case that someone finds a weakness in the GUI, they 329 cannot access root on the machine.</para> 330 <para>Note that the GDM user and group have some privileges that make them 331 somewhat dangerous. This user and group has access to the server authorization directory 332 (specified by the "daemon/ServAuthDir" parameter in the GDM configuration 333 file) which contains all of the X server authorization files and other private information. 334 This means that someone who gains the GDM user/group privileges can then connect 335 to any session. Do not, under any circumstances, make the GDM user/group a 336 user/group that might be easy to get access to, such as the user <literal> 337 "nobody"</literal>.</para> 338 <para>The server authorization directory (daemon/ServAuthDir) is used for a host 339 of random internal data, in addition to the X server authorization files, 340 and the naming is really a relic of history. The GDM daemon forces this directory 341 to be owned by root:gdm with permissions of 1770. This means that only the 342 root user and the GDM group have write access to this directory, but the GDM 343 group cannot remove the root-owned files from this directory, such as the 344 X server authorization files.</para> 345 <para>By default, GDM does not trust the server authorization directory and 346 treats it in the same way as a temporary directory with respect to creating 347 files. This means that someone breaking the GDM user cannot mount attacks 348 by creating links in this directory. Similarly, the X server log directory 349 is treated safely, but that directory should really be owned and writable 350 only by the root user.</para> 351 </refsect2> 352 <refsect2 id="gdm-1m-exde-accessibility"> 353 <title>Accessibility</title> 354 <para>GDM supports "Accessible Login" to allow users to log in to their desktop 355 session even if they cannot easily use the screen, mouse, or keyboard in the 356 usual way. This feature enables the user to launch assistive technologies 357 at login time by means of special "gestures" from the standard keyboard and 358 from a keyboard, pointing device, or switch device attached to the USB or 359 PS/2 mouse port. This also enables the user to change the visual appearance 360 of the login UI before logging in, for example to use a higher-contrast color 361 scheme for better visibility. GDM only supports accessibility with the Plain 362 Greeter, so the "daemon/Greeter" parameter in the GDM configuration must 363 be set to the Plain Greeter "gdmlogin".</para> 364 <para>To enable Accessible Login, the system administrator must modify the 365 default login configuration by manually modifying the standard GDM configuration 366 files, and the <filename>AccessKeyMouseEvents</filename>, and 367 <filename>AccessDwellMouseEvents</filename> module configuration files. 368 </para> 369 <para>To allow users to change the color and contrast scheme of the login 370 dialog, set the "gui/AllowGtkThemeChange" parameter in the GDM configuration 371 to "true".</para> 372 <para>To restrict user changes of the visual appearance to a subset of available 373 themes, the "gui/GtkThemesToAllow" parameter in the GDM configuration 374 can be set to a list of acceptable themes separated by commas. For example: <screen><userinput> 375 GtkThemesToAllow=blueprint,HighContrast,HighContrastInverse</userinput></screen></para> 376 <para>To enable the use of assistive technologies such as the On-screen Keyboard, 377 Screen Reader, or Magnifier, the "daemon/AddGtkModules" parameter in the 378 GDM configuration must be uncommented and set to "true". Also, the "daemon/GtkModulesList" 379 parameter must be uncommented and set to "gail:atk-bridge:/usr/lib/gtk-2.0/modules/libdwellmouselistener:/usr/lib/gtk-2.0/modules/libkeymouselistener". 380 </para> 381 <para>System administrators might wish to load only the minimum subset of 382 these modules that is required to support their user base. Depending on the 383 end-user needs, it might not be necessary to load all of the GtkModules:</para> 384 <itemizedlist> 385 <listitem><para>If a user needs the integrated Screen Reader and Magnifier, 386 you must include "gail" and "atk-bridge".</para></listitem> 387 <listitem><para>If a user needs a pointing device without buttons or switches, 388 include "dwellmouselistener".</para></listitem> 389 <listitem><para>If a user needs a pointing device with switches, alternative 390 physical keyboard, or switch/button device, include "keymouselistener".</para> 391 </listitem> 392 </itemizedlist> 393 <para>Including all four modules is suitable for most system configurations. 394 The Onscreen Keyboard can operate without gail and atk-bridge, but with a 395 reduced feature set. For optimum accessibility, we recommend including gail 396 and atk-bridge.</para> 397 <para>When "keymouselistener" or "dwellmouselistener" have been added to the 398 GtkModules loaded by GDM, you can assign user actions to the launching of 399 specific assistive technologies. These gesture associations are contained 400 in the files AccessKeyMouseEvents and AccessDwellMouseEvents, respectively. 401 The gesture format is described in the two files.</para> 402 <para>The AccessKeyMouseEvents file controls the keymouselistener Gesture 403 Listener and is used to define key-press, mouse button, or XInput device sequences 404 that can be used to launch programs needed for accessibility. To reduce the 405 likelihood of unintentional launch, these 'gestures' may be associated with 406 multiple switch presses and/or minimum durations.</para> 407 <para>The DwellKeyMouseEvents file controls the dwellmouselistener and supports 408 gestures that involve only motion of a pointing device such as the system 409 mouse. Motion of an alternative pointing device such as a head pointer or 410 trackball can also be defined. All gestures are specified by the same syntax, 411 there is no distinction between a 'core mouse' gesture and motion from an 412 alternate input device.</para> 413 <para>Motion gestures are defined as "crossing events" into and out of the 414 login dialog window. If the 'dwellmouselistener' GtkModule is loaded, alternative 415 pointing devices are temporarily "latched" to the core pointer, such that 416 motion from alternative devices results in movement of the onscreen pointer. 417 </para> 418 <para>To use text-to-speech services at login time (for instance, when using 419 the Screen Reader in speech mode) on some operating systems, the gdm user 420 must be a member of the "audio" group.</para> 421 </refsect2> 422 <refsect2 id="gdm-1m-exde-logging"> 423 <title>Logging</title> 424 <para>GDM uses syslog to log errors or status. GDM can also log debugging 425 information, if enabled in the GDM configuration.</para> 426 <para>Output from the various X servers is stored in the GDM log directory, 427 which is configurable but is usually <filename><replaceable>var</replaceable>/log/gdm 428 </filename>. The output from the session can be found in a file called <filename><replaceable> 429 display</replaceable>.log</filename>. Four older versions of this file are 430 also stored, by appending 1 through 4 to the filename. These files are rotated, 431 as new sessions on that display are started. You can use these logs to view 432 what the X server said when it started up.</para> 433 <para>The output from the user session is redirected to <filename>~/.xsession-errors 434 </filename> before even the PreSession script is started, so it is not necessary 435 to redirect this again in the session setup script. If the user session lasted 436 less then 10 seconds, GDM assumes that the session crashed and allows the 437 user to view this file in a dialog before returning to the login screen. This 438 enables the user to view the session errors from the last session and correct 439 the problem.</para> 440 <para>You can suppress the 10–second warning by returning code 66 from 441 the Xsessionscript or from your session binary (the default Xsession script 442 propagates those codes back). This is useful if you have special logins for 443 which it is not an error to return less than 10 seconds later, or if you already 444 set up the session to display an error message and the GDM message would be 445 confusing and redundant.</para> 446 <para>The session output is piped through the GDM daemon, so the <filename> 447 ~/.xsession-errors</filename> file is capped by GDM at about 200 kilobytes, 448 to prevent a possible denial-of-service attack on the session. An application 449 could, on reading some wrong data, print out warnings or errors on stderr 450 or stdout. This could fill up the user's home directory, the user would then 451 have to log out and log back in to clear this. This could be especially nasty 452 if quotas are set. GDM also correctly traps the XFSZ signal and stops writing 453 the file, which would lead to killed sessions if the file was redirected in 454 the old-fashioned way from the script.</para> 455 <para>Note that some distributors seem to override the <filename>~/.xsession-errors 456 </filename> redirection and redirect in their own Xsession script (set by 457 the BaseXsession configuration key), which means that GDM cannot trap the 458 output and cap this file. You also lose output from the PreSession script 459 which can make debugging more difficult, as perhaps useful output of what 460 is wrong is not printed out. See the description of the BaseXsession configuration 461 key for more information, especially on how to handle multiple display managers 462 using the same script.</para> 463 <para>Note that if the session is a failsafe session, or if GDM cannot open 464 this file for some reason, a fallback file is created named <filename>/tmp/xses-<replaceable> 465 user</replaceable>.XXXXXX</filename>, where XXXXXX are random characters. 466 </para> 467 <para>If you run a system with quotas set, use the PostSession script to delete 468 the <filename>~/.xsession-errors</filename> file, so that this log file is 469 not stored unnecessarily.</para> 470 </refsect2> 471 </refsect1> 472 <refsect1 id="gdm-1m-exit"><title>&exit-tt;</title> 473 <para>The following exit values are returned:</para> 474 <variablelist termlength="xtranarrow"> 475 <varlistentry><term><returnvalue>0</returnvalue></term><listitem><para>Application 476 exited successfully</para> 477 </listitem></varlistentry> 478 <varlistentry><term><returnvalue>>0</returnvalue></term><listitem><para>Application 479 exited with failure</para> 480 </listitem></varlistentry> 481 </variablelist></refsect1> 482 <refsect1 id="gdm-1m-file"><title>&file-tt;</title> 483 <para>The following files are used by this application:</para> 484 <variablelist termlength="medium"> 485 <varlistentry><term><filename>/usr/sbin/&cmd;</filename></term><listitem><para> 486 Wrapper script that launches GNOME Display Manager</para> 487 </listitem></varlistentry> 488 <varlistentry><term><filename>/usr/sbin/gdm-binary</filename></term><listitem> 489 <para>Executable for GNOME Display Manager</para> 490 </listitem></varlistentry> 491 <varlistentry><term><filename>/usr/lib/gdmchooser</filename></term><listitem> 492 <para>Executable for GDM Chooser</para> 493 </listitem></varlistentry> 494 <varlistentry><term><filename>/usr/lib/gdmgreeter</filename></term><listitem> 495 <para>Executable for GDM Themed Greeter</para> 496 </listitem></varlistentry> 497 <varlistentry><term><filename>/usr/lib/gdmlogin</filename></term><listitem> 498 <para>Executable for GDM Plain Greeter</para> 499 </listitem></varlistentry> 500 </variablelist><para>The system administrator can specify, in the GDM 501 configuration file, the maximum file size that GDM should accept. If 502 the face browser is enabled, a tunable maximum icon size is also enforced. 503 On large systems, the face browser should be turned off for performance reasons. 504 Looking up icons in home directories, scaling, and rendering face icons can 505 take quite a long time.</para> 506 <para>In general, GDM is very reluctant to read or write user files. For instance, 507 GDM refuses to touch anything but regular files. Links, sockets, and devices 508 are ignored. The value of the "security/RelaxPermissions" parameter in the 509 GDM configuration determines whether GDM accepts files that are writable 510 by the user's group or others. These are ignored by default.</para> 511 <para>Note that normally it is assumed that the home directory is only readable 512 by the user. However, NFS traffic can be snooped. For setups with NFS directories, 513 set the "daemon/UserAuthDir" parameter in the GDM configuration 514 to a local directory such as <filename>/tmp</filename>. GDM tries to open 515 the normal authorization file for reading as root. If this fails, GDM concludes 516 that it is on an NFS mount and automatically uses "daemon/UserAuthFBDir" (usually <filename> 517 /tmp</filename>), as defined in the GDM configuration. This 518 can be changed by setting the "security/NeverPlaceCookiesOnNFS" parameter 519 to “false”. 520 </para> 521 <refsect2 id="gdm-1m-file-login"> 522 <title>GDM Login Scripts and Session Files</title> 523 <para>The following GDM login scripts are discussed below:</para> 524 <itemizedlist> 525 <listitem><para><filename>/etc/X11/gdm/Init/<replaceable>hostname</replaceable></filename></para> 526 </listitem> 527 <listitem><para><filename>/etc/X11/gdm/Init/XDMCP</filename></para></listitem> 528 <listitem><para><filename>/etc/X11/gdm/Init/Default</filename></para></listitem> 529 <listitem><para><filename>/etc/X11/gdm/PostLogin/<replaceable>hostname</replaceable></filename></para> 530 </listitem> 531 <listitem><para><filename>/etc/X11/gdm/PostLogin/XDMCP</filename></para></listitem> 532 <listitem><para><filename>/etc/X11/gdm/PostLogin/Default</filename></para> 533 </listitem> 534 <listitem><para><filename>/etc/X11/gdm/PreSession/<replaceable>hostname</replaceable></filename></para> 535 </listitem> 536 <listitem><para><filename>/etc/X11/gdm/PreSession/XDMCP</filename></para> 537 </listitem> 538 <listitem><para><filename>/etc/X11/gdm/PreSession/Default</filename></para> 539 </listitem> 540 <listitem><para><filename>/etc/X11/gdm/Xsession</filename></para></listitem> 541 <listitem><para><filename>/etc/X11/gdm/PostSession/<replaceable>hostname</replaceable></filename></para> 542 </listitem> 543 <listitem><para><filename>/etc/X11/gdm/PostSession/XDMCP</filename></para> 544 </listitem> 545 <listitem><para><filename>/etc/X11/gdm/PostSession/Default</filename></para> 546 </listitem> 547 </itemizedlist> 548 <para>The following session files are discussed below:</para> 549 <itemizedlist> 550 <listitem><para><filename>/usr/share/xsessions/*.desktop</filename></para> 551 </listitem> 552 <listitem><para><filename>~/.dmrc</filename> (default user session)</para> 553 </listitem> 554 </itemizedlist> 555 <para>When the X server has been successfully started, GDM tries to run the 556 Init/<replaceable>displayname</replaceable> script. For example, <filename> 557 Init/:0</filename> for the first local display. If this file is not found, 558 GDM attempts to run Init/<replaceable>hostname</replaceable>. For example, <filename> 559 Init/somehost</filename>. If this file is also not found, GDM tries <filename> 560 Init/XDMCP</filename> for all XDMCP logins or <filename>Init/Flexi</filename> 561 for all on-demand flexible servers. If none of the above are found, GDM runs <filename> 562 Init/Default</filename>. The script runs with root privileges and GDM blocks 563 until the script terminates. Use the <filename>Init/*</filename> script for 564 programs that are supposed to run alongside the GDM login window, for example <filename> 565 xconsole</filename>. Commands to set the background and so on should go in 566 this file too.</para> 567 <para>The system administrator decides whether clients started by the <filename> 568 Init</filename> script should be killed before starting the user session. 569 This is controlled by the "daemon/KillInitClients" parameter in the GDM 570 configuration.</para> 571 <para>When the user has been successfully authenticated, GDM tries the scripts 572 in the <filename>PostLogin</filename> directory in the same manner as for 573 the <filename>Init</filename> directory. This is done before any session setup 574 is done, so this is the script where you might set up the home directory if 575 you need to (though you should use the pam_mount module for this, if you can). 576 You have the USER and DISPLAY environment variables set for this script, and 577 again it is run with root privileges. The script should return 0 on success 578 as otherwise the user is not logged in. This is not true for failsafe session 579 however.</para> 580 <para>After the user session has been set up from the GDM perspective, GDM 581 runs the scripts in the <filename>PreSession</filename> directory, again in 582 the same manner as the <filename>Init</filename> directory. Use this script 583 for local session management or accounting. The USER environment variable 584 contains the login of the authenticated user and DISPLAY is set to the current 585 display. The script should return 0 on success. Any other value causes GDM 586 to terminate the current login process. This is not true for failsafe sessions 587 however. Also, the X_SERVERS environment variable is set and this points to 588 a fake generated X servers file for use with the 589 <citerefentry><refentrytitle>sessreg</refentrytitle><manvolnum>1</manvolnum></citerefentry> 590 accounting program.</para> 591 <para>After this, the user's session is started. The available session executables 592 are taken from the Exec= line in the <filename>.desktop</filename> files in 593 the path specified by SessionDesktopDir. The user chooses from these sessions 594 at login time and GDM reads the file <filename>~/.dmrc</filename> for the 595 user's default. The default GNOME session uses the Xsession script. The script 596 is run as the user, and this is the user session. This script should load 597 the user's profile and generally do all that is needed to launch a session. 598 As many systems reset the language selections done by GDM, GDM also sets the 599 GDM_LANG variable to the selected language. You can use this to reset the 600 language environment variables after you run the user's profile. If the user 601 elected to use the system language, then GDM_LANG is not set.</para> 602 <para>When the user terminates the session, the <filename>PostSession</filename> 603 scripts are run, similar to <filename>Init</filename>, <filename>PostLogin 604 </filename>, and <filename>PreSession</filename>. Again, the script is run 605 with root privileges, the slave daemon blocks, the USER environment variable 606 contains the name of the user who just logged out, and DISPLAY is set to the 607 display the user used. Note, however, that the X server for this display might 608 already be dead so you should not try to access it. Also, the X_SERVERS environment 609 variable is set and points to a fake generated X servers file for use with the 610 <citerefentry><refentrytitle>sessreg</refentrytitle><manvolnum>1</manvolnum></citerefentry> 611 accounting program.</para> 612 <para>Note that the <filename>PostSession</filename> script runs even when 613 the display fails to respond due to an I/O error or similar. Thus, there is 614 no guarantee that X applications will work during script execution.</para> 615 <para>Except for the <filename>Xsession</filename> script, all of these scripts 616 also have the environment variable RUNNING_UNDER_GDM set to yes, so that you 617 can use similar scripts for different display managers. The <filename>Xsession 618 </filename> always has GDMSESSION set to the basename of the session that 619 the user chose to run, without the <filename>.desktop</filename> extension. 620 In addition, DESKTOP_SESSION is also set to the same value.</para> 621 <para>None of the <filename>Init</filename>, <filename>PostLogin</filename>, <filename> 622 PreSession</filename>, or <filename>PostSession</filename> scripts are necessary 623 and they can be omitted. However, the <filename>Xsession</filename> script 624 is required, as is at least one session <filename>.desktop</filename> file. 625 </para> 626 </refsect2> 627 <refsect2 id="gdm-1m-file-config"> 628 <title>Configuration Files</title> 629 <variablelist termlength="wholeline"> 630 <varlistentry><term><filename>/usr/share/gdm/defaults.conf</filename></term><listitem> 631 <para>Contains GDM default configuration and documentation.</para> 632 </listitem></varlistentry> 633 <varlistentry><term><filename>/etc/X11/gdm/custom.conf</filename></term><listitem> 634 <para>Contains user-specific GDM configuration and documentation.</para> 635 </listitem></varlistentry> 636 <varlistentry><term><filename>/etc/X11/gdm/custom.conf<replaceable>display</replaceable></filename></term><listitem> 637 <para>Contains per-display GDM configuration and documentation.</para> 638 </listitem></varlistentry> 639 </variablelist></refsect2> 640 <refsect2 id="gdm-1m-file-themes"> 641 <title>Themes</title> 642 <variablelist termlength="wholeline"> 643 <varlistentry><term><filename>/usr/share/gdm/themes</filename></term><listitem> 644 <para>Can be configured using the "greeter/GraphicalThemeDir" configuration parameter</filename>.</para> 645 </listitem></varlistentry> 646 </variablelist></refsect2> 647 <refsect2 id="gdm-1m-file-face"> 648 <title>Face Browser</title> 649 <variablelist termlength="wholeline"> 650 <varlistentry><term><filename>/usr/share/pixmaps/faces</filename></term><listitem><para>Global 651 directory for face images.</para> 652 </listitem></varlistentry> 653 <varlistentry><term><filename>~/.face</filename></term><listitem><para>User-defined 654 icon to be used by GDM face browser.</para> 655 </listitem></varlistentry> 656 </variablelist></refsect2> 657 <refsect2 id="gdm-1m-file-gesture"> 658 <title>Gesture Listener Configuration Files</title> 659 <variablelist termlength="wholeline"> 660 <varlistentry><term><filename>/etc/X11/gdm/modules/AccessDwellMouseEvents 661 </filename></term><listitem><para>Configuration for the dwellmouselistener. 662 </para> 663 </listitem></varlistentry> 664 <varlistentry><term><filename>/etc/X11/gdm/modules/AccessKeyMouseEvents</filename></term> 665 <listitem><para>Configuration for the keymouselistener.</para> 666 </listitem></varlistentry> 667 </variablelist></refsect2> 668 669 <refsect2 id="gdm-1m-system-files"> 670 <title>System files</title> 671 <variablelist termlength="wholeline"> 672 <varlistentry><term><filename>/etc/profile</filename></term><listitem><para>System environment</para> 673 </listitem></varlistentry> 674 </variablelist></refsect2> 675 676 <refsect2 id="gdm-1m-file-logging"> 677 <title>Logging</title> 678 <variablelist termlength="wholeline"> 679 <varlistentry><term><filename>/var/log/gdm/<replaceable>display</replaceable>.log 680 </filename></term><listitem><para>Output from Xserver for each session. This 681 can be configured using the "daemon/LogDir" parameter in the GDM configuration. 682 </para> 683 </listitem></varlistentry> 684 <varlistentry><term><filename>~/.xsession-errors</filename></term><listitem> 685 <para>Output from user's session.</para> 686 </listitem></varlistentry> 687 <varlistentry><term><filename>/tmp/xsess-<replaceable>user</replaceable>.XXXXXX 688 </filename></term><listitem><para>Output from session in failsafe mode or 689 if <filename>~/.xsession-errors</filename> cannot be written.</para> 690 </listitem></varlistentry> 691 </variablelist></refsect2> 692 <refsect2 id="gdm-1m-file-sockets"> 693 <title>Sockets</title> 694 <variablelist termlength="wholeline"> 695 <varlistentry><term><filename>/tmp/.gdm_socket</filename></term><listitem> 696 <para>Temporary file used for GDM socket communications.</para> 697 </listitem></varlistentry> 698 </variablelist></refsect2> 699 <refsect2 id="gdm-1m-file-pid"> 700 <title>Process Id</title> 701 <variablelist termlength="wholeline"> 702 <varlistentry><term><filename>/var/run/gdm.pid</filename></term><listitem> 703 <para>Stores the ProcessID for the running GDM daemon. This can be configured 704 using the "daemon/PidFile" parameter in the GDM configuration.</para> 705 </listitem></varlistentry> 706 </variablelist></refsect2> 707 <refsect2 id="gdm-1m-file-xserver"> 708 <title>Xserver Authentication Directory</title> 709 <variablelist termlength="wholeline"> 710 <varlistentry><term><filename>/var/lib/gdm</filename></term><listitem><para> 711 Stores Xserver authentication files. This can be configured using the 712 "daemon/ServAuthDir" parameter in the GDM configuration.</para> 713 </listitem></varlistentry> 714 </variablelist></refsect2> 715 </refsect1> 716 <refsect1 id="gdm-1m-attr"><title>&attr-tt;</title> 717 <para>See <olink targetdocent="REFMAN5" localinfo="attributes-5"><citerefentry> 718 <refentrytitle>attributes</refentrytitle><manvolnum>5</manvolnum></citerefentry></olink> 719 for descriptions of the following attributes:</para> 720 <informaltable frame="all"> 721 <tgroup cols="2" colsep="1" rowsep="1"><colspec colname="COLSPEC0" colwidth="1*"> 722 <colspec colname="COLSPEC1" colwidth="1*"> 723 <thead> 724 <row><entry align="center" valign="middle">ATTRIBUTE TYPE</entry><entry align="center" 725 valign="middle">ATTRIBUTE VALUE</entry></row> 726 </thead> 727 <tbody> 728 <row><entry><para>Availability</para></entry><entry><para>SUNWgnome-display-mgr 729 </para></entry></row> 730 <row><entry colname="COLSPEC0"><para>Interface stability</para></entry><entry 731 colname="COLSPEC1"><para>Volatile</para></entry></row> 732 <row><entry colname="COLSPEC0"><para>/usr/share/gdm/defaults.conf</para></entry><entry 733 colname="COLSPEC1"><para>Volatile</para></entry></row> 734 <row><entry colname="COLSPEC0"><para>/etc/X11/gdm/custom.conf</para></entry><entry 735 colname="COLSPEC1"><para>Volatile</para></entry></row> 736 </tbody> 737 </tgroup> 738 </informaltable> 739 </refsect1> 740 <refsect1 id="gdm-1m-also"><title>&also-tt;</title> 741 <!--Reference to another man page--> 742 <!--Reference to a Help manual--> 743 <!--Reference to a book.--> 744 <para>Latest version of the <citetitle>GNOME Desktop User Guide</citetitle> 745 for your platform.</para> 746 <para> 747 <citerefentry><refentrytitle>gdmXnestchooser</refentrytitle><manvolnum>1</manvolnum></citerefentry>, 748 <citerefentry><refentrytitle>gdmdynamic</refentrytitle><manvolnum>1</manvolnum></citerefentry>, 749 <citerefentry><refentrytitle>gdmflexiserver</refentrytitle><manvolnum>1</manvolnum></citerefentry>, 750 <citerefentry><refentrytitle>gdmphotosetup</refentrytitle><manvolnum>1</manvolnum></citerefentry>, 751 <citerefentry><refentrytitle>gdmthemetester</refentrytitle><manvolnum>1</manvolnum></citerefentry>, 752 <citerefentry><refentrytitle>Xserver</refentrytitle><manvolnum>1</manvolnum></citerefentry>, 753 <citerefentry><refentrytitle>gdm-restart</refentrytitle><manvolnum>1m</manvolnum></citerefentry>, 754 <citerefentry><refentrytitle>gdmsetup</refentrytitle><manvolnum>1m</manvolnum></citerefentry>, 755 <citerefentry><refentrytitle>profile</refentrytitle><manvolnum>4</manvolnum></citerefentry>, 756 <citerefentry><refentrytitle>gnome-std-options</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 757 <citerefentry><refentrytitle>pam</refentrytitle><manvolnum>3pam</manvolnum></citerefentry>, 758 <citerefentry><refentrytitle>logindevperm</refentrytitle><manvolnum>4</manvolnum></citerefentry>, 759 <citerefentry><refentrytitle>attributes</refentrytitle><manvolnum>5</manvolnum></citerefentry> 760 </para> 761 </refsect1> 762 <refsect1 id="gdm-1-note"><title>¬e-tt;</title> 763 <para>Original man page written by Martin K. Petersen <mkp (a] mkp.net>, George 764 Lebl <jirka (a] 5z.com>. Copyright (c) 1998, 1999 by Martin K. Petersen. Copyright 765 (c) 2001, 2003, 2004 by George Lebl. Copyright (c) 2003 by Red Hat, Inc.</para> 766 <para>Updated by Brian Cameron, Sun Microsystems Inc., 2004, 2006.</para> 767 </refsect1> 768 </refentry> 769