Re: [gdm-list] Help with GDM 2.20.2: gdm ignoring custom server config



Hi.

On Fri, Jan 04, 2008 at 01:16:16PM -0600, Brian Cameron wrote: 
> 
> Martin:
> 
> >I tried your patch, the ChangeLog did not patch smoothly but no
> >matter, the source itself did.
> 
> It's not a problem if the ChangeLog part of the patch didn't apply.
> As long as the other sections applied okay.

Right.

> >However, the patch gdm dies with a seg fault in parsing the config in
> >gdm-daemon-config.c at line 1211 in load_xservers_group().  I compiled
> >with debug to see if there was something obvious to me.  Does this
> >help?  I don't think this is on my end (e.g. in the patching).  The
> >loop looks like:
> 
> I don't see any crashing problems here, but sometimes crashing problems
> can be OS-speicifc.
> 
> You don't specify which line in the loop is line 1211.  In my copy of
> the file it is the gdm_config_entry_free line, but I suspect it is a
> different line in your file (since that would be an odd line for it
> to crash on just by looking at the code).

Yes it really is in gdm_config_entry_free().  I'm attaching three
files:
	script.out	a "script" capture of the gdb session
	/etc/gdm.conf
	/usr/share/gdm/defaults.conf

The latter two from the results of:

gdmflexiserver --command=GET_CONFIG_FILE
gdmflexiserver --command=GET_CUSTOM_CONFIG_FILE

from the unpatched version.

> Also, could you try running gdm in the debugger and see if it gives any
> further info about what is causing the crash?  Since the crash is
> happening early it is probably a situation where you can actually run
> GDM in a debugger and get some useful information.  This isn't always
> the case, since GDM forks into slave daemons - so it is harder to use
> the debugger to find issues after such forks happen.
> 
> So, what I'd recommend doing is:
> 
> 1) Run gdm-binary (not the gdm script) in the debugger like this:
>    gdb /usr/sbin/gdm-binary
>    run --nodaemon
> 
>    The --nodaemon argument tells gdm-binary not to fork immediately
>    which is what you want when debugging.
> 
> 2) Then it should crash and tell you that the SEGV happened and drop
>    you into a prompt.  Try printing out various values like run
>    "print srv_entry" and see if the group variable is NULL or something
>    causing a crash when we try to access srv_entry->group.
> 
> >			for (j = 0; j < G_N_ELEMENTS 
> >			(gdm_daemon_server_config_entries); j++) {
> >				GdmConfigEntry *srv_entry;
> >				if (gdm_daemon_server_config_entries[j].key 
> >				== NULL) {
> >					continue;
> >				}
> >				srv_entry = gdm_config_entry_copy 
> >				(&gdm_daemon_server_config_entries[j]);
> >				g_free (srv_entry->group);
> >				srv_entry->group = xserver_group;
> >				gdm_config_process_entry (config, srv_entry, 
> >				NULL);
> >				gdm_config_entry_free (srv_entry);
> >			}
> >
> >
> >BTW, the [servers] section in my gdm.conf is default, that is to say,
> >empty.
> 
> It would be helpful if you could run these commands:
> 
> gdmflexiserver --command=GET_CONFIG_FILE
> gdmflexiserver --command=GET_CUSTOM_CONFIG_FILE
> 
> And send me these two files as attachments.  Perhaps the crash is
> triggered by how your [servers] and [server-foo] sections are set up.
> If you can send me your files, I can see if I can trigger the crash
> on my system using your style of configuration.
> 
> Brian
magpie:/home/weinberg# gdb ~weinberg/gdm-2.20.2/daemon/gdm-binary 
GNU gdb 6.6.90.20070912-debian
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) b gdm-daemon-config.c:1202
Breakpoint 1 at 0x805b097: file gdm-daemon-config.c, line 1202.
(gdb) run --nodaemon
Starting program: /home/weinberg/gdm-2.20.2/daemon/gdm-binary --nodaemon
[Thread debugging using libthread_db enabled]
[New Thread 0xb74796b0 (LWP 31566)]
[Switching to Thread 0xb74796b0 (LWP 31566)]

Breakpoint 1, load_xservers_group (config=0x80c9838)
    at gdm-daemon-config.c:1202
1202				for (j = 0; j < G_N_ELEMENTS (gdm_daemon_server_config_entries); j++) {
(gdb) n
1204					if (gdm_daemon_server_config_entries[j].key == NULL) {
(gdb) n
1207					srv_entry = gdm_config_entry_copy (&gdm_daemon_server_config_entries[j]);
(gdb) n
1208					g_free (srv_entry->group);
(gdb) n
1209					srv_entry->group = xserver_group;
(gdb) n
1210					gdm_config_process_entry (config, srv_entry, NULL);
(gdb) n
1211					gdm_config_entry_free (srv_entry);
(gdb) p *srv_entry
$3 = {group = 0x80e76b8 "server-Standard", key = 0x80e7508 "name", 
  type = GDM_CONFIG_VALUE_STRING, default_value = 0x80e7a00 "Standard server", 
  id = 57}
(gdb) n
1202				for (j = 0; j < G_N_ELEMENTS (gdm_daemon_server_config_entries); j++) {
(gdb) n
1204					if (gdm_daemon_server_config_entries[j].key == NULL) {
(gdb) n
1207					srv_entry = gdm_config_entry_copy (&gdm_daemon_server_config_entries[j]);
(gdb) n
1208					g_free (srv_entry->group);
(gdb) n
1209					srv_entry->group = xserver_group;
(gdb) n
1210					gdm_config_process_entry (config, srv_entry, NULL);
(gdb) p *srv_entry
$4 = {group = 0x80e76b8 "\030y\016\ber-Standard", key = 0x80e7508 "command", 
  type = GDM_CONFIG_VALUE_STRING, default_value = 0x80e7660 "/usr/bin/X", 
  id = 58}
(gdb) n
1211					gdm_config_entry_free (srv_entry);
(gdb) n
*** glibc detected *** /home/weinberg/gdm-2.20.2/daemon/gdm-binary: double free or corruption (fasttop): 0x080e76b8 ***
======= Backtrace: =========
/lib/libc.so.6[0xb7672ac5]
/lib/libc.so.6(cfree+0x90)[0xb7676570]
/usr/lib/libglib-2.0.so.0(g_free+0x31)[0xb778f9a1]
/home/weinberg/gdm-2.20.2/daemon/gdm-binary[0x8088409]
/home/weinberg/gdm-2.20.2/daemon/gdm-binary[0x805b10e]
/home/weinberg/gdm-2.20.2/daemon/gdm-binary[0x805b188]
/home/weinberg/gdm-2.20.2/daemon/gdm-binary[0x805ce35]
/home/weinberg/gdm-2.20.2/daemon/gdm-binary[0x8052698]
/lib/libc.so.6(__libc_start_main+0xe0)[0xb761d450]
/home/weinberg/gdm-2.20.2/daemon/gdm-binary[0x804fce1]
======= Memory map: ========
08048000-080c0000 r-xp 00000000 03:05 132133     /home/weinberg/gdm-2.20.2/daemon/gdm-binary
080c0000-080c2000 rw-p 00077000 03:05 132133     /home/weinberg/gdm-2.20.2/daemon/gdm-binary
080c2000-08103000 rw-p 080c2000 00:00 0          [heap]
b7100000-b7121000 rw-p b7100000 00:00 0 
b7121000-b7200000 ---p b7121000 00:00 0 
b7283000-b728d000 r-xp 00000000 03:01 33465      /lib/libgcc_s.so.1
b728d000-b728e000 rw-p 00009000 03:01 33465      /lib/libgcc_s.so.1
b72a6000-b72ad000 r--s 00000000 03:01 485632     /usr/lib/gconv/gconv-modules.cache
b72ad000-b72c8000 r--p 00000000 03:05 3469820    /home/system/share/locale/en_GB/LC_MESSAGES/gdm.mo
b72c8000-b7479000 r--p 00000000 03:01 500125     /usr/lib/locale/locale-archive
b7479000-b747b000 rw-p b7479000 00:00 0 
b747b000-b748e000 r-xp 00000000 03:01 32872      /lib/libpthread-2.7.so
b748e000-b7490000 rw-p 00013000 03:01 32872      /lib/libpthread-2.7.so
b7490000-b7493000 rw-p b7490000 00:00 0 
b7493000-b74b8000 r-xp 00000000 03:01 485766     /usr/lib/libpcre.so.3.12.1
b74b8000-b74b9000 rw-p 00025000 03:01 485766     /usr/lib/libpcre.so.3.12.1
b74b9000-b74db000 r-xp 00000000 03:01 491326     /usr/lib/libpng12.so.0.15.0
b74db000-b74dc000 rw-p 00021000 03:01 491326     /usr/lib/libpng12.so.0.15.0
b74dc000-b74fa000 r-xp 00000000 03:01 483914     /usr/lib/libexpat.so.1.0.0
b74fa000-b74fc000 rw-p 0001d000 03:01 483914     /usr/lib/libexpat.so.1.0.0
b74fc000-b7510000 r-xp 00000000 03:01 493063     /usr/lib/libz.so.1.2.3.3
b7510000-b7511000 rw-p 00013000 03:01 493063     /usr/lib/libz.so.1.2.3.3
b7511000-b7512000 rw-p b7511000 00:00 0 
b7512000-b757d000 r-xp 00000000 03:01 493722     /usr/lib/libfreetype.so.6.3.16
b757d000-b7581000 rw-p 0006a000 03:01 493722     /usr/lib/libfreetype.so.6.3.16
b7581000-b75ad000 r-xp 00000000 03:01 487889     /usr/lib/libpangoft2-1.0.so.0.1800.3
b75ad000-b75ae000 rw-p 0002c000 03:01 487889     /usr/lib/libpangoft2-1.0.so.0.1800.3
b75ae000-b75e4000 r-xp 00000000 03:01 32399      /lib/libsepol.so.1
b75e4000-b75e5000 rw-p 00035000 03:01 32399      /lib/libsepol.so.1
b75e5000-b75ef000 rw-p b75e5000 00:00 0 
b75ef000-b7603000 r-xp 00000000 03:01 32864      /lib/libnsl-2.7.so
b7603000-b7605000 rw-p 00013000 03:01 32864      /lib/libnsl-2.7.so
b7605000-b7607000 rw-p b7605000 00:00 0 
b7607000-b774e000 r-xp 00000000 03:01 32361      /lib/libc-2.7.so
b774e000-b774f000 r--p 00147000 03:01 32361      /lib/libc-2.7.so
b774f000-b7751000 rw-p 00148000 03:01 32361      /lib/libc-2.7.so
b7751000-b7755000 rw-p b7751000 00:00 0 
b7755000-b7757000 r-xp 00000000 03:01 32878      /lib/libutil-2.7.so
b7757000-b7759000 rw-p 00001000 03:01 32878      /lib/libutil-2.7.so
b7759000-b77f8000 r-xp 00000000 03:01 488342     /usr/lib/libglib-2.0.so.0.1400.3
b77f8000-b77f9000 rw-p 0009e000 03:01 488342     /usr/lib/libglib-2.0.so.0.1400.3
b77f9000-b7834000 r-xp 00000000 03:01 485223     /usr/lib/libgobject-2.0.so.0.1400.3
b7834000-b7835000 rw-p 0003a000 03:01 485223     /usr/lib/libgobject-2.0.so.0.1400.3
b7835000-b7869000 r-xp 00000000 03:01 487120     /usr/lib/libdbus-1.so.3.4.0
b7869000-b786a000 rw-p 00033000 03:01 487120     /usr/lib/libdbus-1.so.3.4.0
b786a000-b7884000 r-xp 00000000 03:01 485960     /usr/lib/libdbus-glib-1.so.2.1.0
b7884000-b7885000 rw-p 0001a000 03:01 485960     /usr/lib/libdbus-glib-1.so.2.1.0
b7885000-b7892000 r-xp 00000000 03:01 484239   
Program received signal SIGABRT, Aborted.
0xb7631ea6 in raise () from /lib/libc.so.6
(gdb) quit
The program is running.  Exit anyway? (y or n) y
# GDM System Defaults Configuration file.
#
# This file should not be updated by hand.  Since GDM 2.13.0.4, configuration
# choices in the GDM System Configuration file (/etc/gdm/gdm.conf) will
# override the default values specified in this file.
#
# If you were using an older version of GDM, your system may have the the older
# gdm.conf configuration file on the system.  If so, then this file is used
# instead of the GDM Custom Configuration file for backwards support.  If you
# make changes to the GDM Custom Configuration file and they seem to not be
# taking effect, this is likely the problem.  Consider migrating your
# configuration to the new configuration file and removing the gdm.conf file.
#
# You can use the gdmsetup program to graphically edit the gdm.conf-custom
# file.  Note that gdmsetup does not support every option in this file, just
# the most common ones that users want to change.  If you feel that gdmsetup
# should support additional configuration options, please file a bug report at
# http://bugzilla.gnome.org/.
#
# If you hand-edit the GDM configuration, you should run the following command
# to get the GDM daemon to recognize the change.  Any running GDM GUI programs
# will also be notified to update with the new configuration.
#
# gdmflexiserver --command="UPDATE_CONFIG <configuration key>"
#
# e.g, the "Enable" key in the "[debug]" section would be "debug/Enable".
#
# You can also run invoke-rc.d gdm reload or invoke-rc.d gdm restart
# to cause GDM to restart and re-read the new configuration settings. 
# You can also restart GDM by sending a HUP or USR1 signal to the
# daemon.  HUP behaves like restart and causes any user session
# started by GDM to exit immediately while USR1 behaves like
# reload and will wait until all users log out before
# restarting GDM.
#
# For full reference documentation see the GNOME help browser under
# GNOME|System category.  You can also find the docs in HTML form on
# http://www.gnome.org/projects/gdm/
#
# NOTE: Some values are commented out, but show their default values.  Lines
# that begin with "#" are considered comments.
#
# Have fun!

[daemon]
# Automatic login, if true the first local screen will automatically logged in
# as user as set with AutomaticLogin key.
AutomaticLoginEnable=false
AutomaticLogin=

# Timed login, useful for kiosks.  Log in a certain user after a certain amount
# of time.
TimedLoginEnable=false
TimedLogin=
TimedLoginDelay=30

# The GDM configuration program that is run from the login screen, you should
# probably leave this alone.
#Configurator=/usr/sbin/gdmsetup --disable-sound --disable-crash-dialog

# The chooser program.  Must output the chosen host on stdout, probably you
# should leave this alone.
#Chooser=/usr/lib/gdm/gdmchooser

# The greeter for local (non-xdmcp) logins.  Change gdmlogin to gdmgreeter to
# get the new graphical greeter.
Greeter=/usr/lib/gdm/gdmgreeter

# The greeter for xdmcp logins, usually you want a less graphically intensive
# greeter here so it's better to leave this with gdmlogin
#RemoteGreeter=/usr/lib/gdm/gdmlogin

# Launch the greeter with an additional list of colon separated GTK+ modules.
# This is useful for enabling additional feature support e.g. GNOME
# accessibility framework. Only "trusted" modules should be allowed to minimize
# security holes
#AddGtkModules=false
# By default, these are the accessibility modules.
#GtkModulesList=gail:atk-bridge:/usr/lib/gtk-2.0/modules/libdwellmouselistener:/usr/lib/gtk-2.0/modules/libkeymouselistener

# Default path to set.  The profile scripts will likely override this value.
DefaultPath=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
# Default path for root.  The profile scripts will likely override this value.
RootPath=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11:/usr/games

# If you are having trouble with using a single server for a long time and want
# GDM to kill/restart the server, turn this on.  On Solaris, this value is
# always true and this configuration setting is ignored.
#AlwaysRestartServer=false

# User and group used for running GDM GUI applications.  By default this is set
# to user "gdm" and group "gdm".  This user/group should have very limited
# permissions and access to only the gdm directories and files.
User=gdm
Group=gdm

# To try to kill all clients started at greeter time or in the Init script.
# does not always work, only if those clients have a window of their own.
#KillInitClients=true
LogDir=/var/log/gdm
# You should probably never change this value unless you have a weird setup.
PidFile=/var/run/gdm.pid

# Note that a post login script is run before a PreSession script.  It is run
# after the login is successful and before any setup is run on behalf of the
# user.
PostLoginScriptDir=/etc/gdm/PostLogin/
PreSessionScriptDir=/etc/gdm/PreSession/
PostSessionScriptDir=/etc/gdm/PostSession/
DisplayInitDir=/etc/gdm/Init
# Distributions:  If you have some script that runs an X server in say VGA
# mode, allowing a login, could you please send it to me?
#FailsafeXServer=
# if X keeps crashing on us we run this script.  The default one does a bunch
# of cool stuff to figure out what to tell the user and such and can run an X
# configuration program.
XKeepsCrashing=/etc/gdm/XKeepsCrashing
# Reboot, Halt and suspend commands, you can add different commands separated
# by a semicolon.  GDM will use the first one it can find.
RebootCommand=/sbin/shutdown -r now "Rebooted via gdm."
HaltCommand=/sbin/shutdown -h now "Shut Down via gdm."
SuspendCommand=/usr/sbin/hibernate
# Probably should not touch the below this is the standard setup.
ServAuthDir=/var/lib/gdm
# This is our standard startup script.  A bit different from a normal X
# session, but it shares a lot of stuff with that.  See the provided default
# for more information.
BaseXsession=/etc/gdm/Xsession
# This is a directory where .desktop files describing the sessions live.  It is
# really a PATH style variable since 2.4.4.2 to allow actual interoperability
# with KDM.
SessionDesktopDir=/usr/share/gdm/BuiltInSessions/:/usr/share/xsessions/:/var/lib/menu-xdg/xsessions/:/etc/dm/Sessions/
# This is the default .desktop session.  One of the ones in SessionDesktopDir
DefaultSession=default.desktop
# Better leave this blank and HOME will be used.  You can use syntax ~/ below
# to indicate home directory of the user.  You can also set this to something
# like /tmp if you don't want the authorizations to be in home directories.
# This is useful if you have NFS mounted home directories.  Note that if this
# is the home directory the UserAuthFBDir will still be used in case the home
# directory is NFS, see security/NeverPlaceCookiesOnNFS to override this
# behavior.
UserAuthDir=
# Fallback directory for writing authorization file if user's home directory
# is not writable.
UserAuthFBDir=/tmp
UserAuthFile=.Xauthority
# The X server to use if we can't figure out what else to run.
StandardXServer=/usr/bin/X
# The maximum number of flexible X servers to run.
#FlexibleXServers=5
# And after how many minutes should we reap the flexible server if there is no
# activity and no one logged on.  Set to 0 to turn off the reaping.  Does not
# affect Xnest flexiservers.
#FlexiReapDelayMinutes=5

# The X nest command.
# Examples of valid commands (assuming installed to /usr/X11/bin:
# Xorg Xnest: /usr/X11/bin/Xnest -audit 0 -name Xnest
# Xsun Xnest: /usr/openwin/bin/Xnest -audit 0 -name Xnest -pn
# Xephyr:     /usr/X11/bin/Xephyr -audit 0
Xnest=/usr/share/gdm/gdmXnestWrapper -audit 0
# Xsun Xnest does not support font paths (passed into Xnest -fp argument)
# that include the ":unscaled" suffix after a path name.  Setting this to
# false will strip any ":unscaled" suffix from the font path.  If not 
# using this Xnest, the value should be true.
XnestUnscaledFontPath=true

# Automatic VT allocation.  Right now only works on Linux.  This way we force
# X to use specific vts.  Turn VTAllocation to false if this is causing
# problems.
FirstVT=7
VTAllocation=true
# Should double login be treated with a warning (and possibility to change VT's
# on Linux and FreeBSD systems for console logins)
#DoubleLoginWarning=true
# Should a second login always resume the current session and switch VT's on
# Linux and FreeBSD systems for console logins
#AlwaysLoginCurrentSession=true

# If true then the last login information is printed to the user before being
# prompted for password.  While this gives away some info on what users are on
# a system, it on the other hand should give the user an idea of when they
# logged in and if it doesn't seem kosher to them, they can just abort the
# login and contact the sysadmin (avoids running malicious startup scripts).
#DisplayLastLogin=false

# Program used to play sounds.  Should not require any 'daemon' or anything
# like that as it will be run when no one is logged in yet.
#SoundProgram=/usr/bin/play

# These are the languages that the console cannot handle because of font
# issues.  Here we mean the text console, not X.  This is only used when there
# are errors to report and we cannot start X.
# This is the default:
#ConsoleCannotHandle=am,ar,az,bn,el,fa,gu,hi,ja,ko,ml,mr,pa,ta,zh

# This determines whether GDM will honor requests DYNAMIC requests from the
# gdmdynamic command.
#DynamicXServers=false

# This determines whether GDM will send notifications to the console.
#ConsoleNotify=true

# How long gdm should wait before it assumes a started Xserver is defunct and
# kills it.  10 seconds should be long enough for X, but Xgl may need 20 or 25. 
GdmXserverTimeout=10

[security]
# Allow root to login.  It makes sense to turn this off for kiosk use, when
# you want to minimize the possibility of break in.
AllowRoot=false
# Allow login as root via XDMCP.  This value will be overridden and set to
# false if the /etc/default/login file exists and contains
# "CONSOLE=/dev/login", and set to true if the /etc/default/login file exists
# and contains any other value or no value for CONSOLE.
AllowRemoteRoot=false
# This will allow remote timed login.
AllowRemoteAutoLogin=false
# 0 is the most restrictive, 1 allows group write permissions, 2 allows all
# write permissions.
RelaxPermissions=1
# Check if directories are owned by logon user.  Set to false, if you have, for
# example, home directories owned by some other user.
CheckDirOwner=true
# If your HOME is managed by automounter, set to true
SupportAutomount=false
# Number of seconds to wait after a failed login
#RetryDelay=1
# Maximum size of a file we wish to read.  This makes it hard for a user to DoS
# us by using a large file.
#UserMaxFile=65536
# If true this will basically append -nolisten tcp to every X command line, a
# good default to have (why is this a "negative" setting? because if it is
# false, you could still not allow it by setting command line of any particular
# server).  It's probably better to ship with this on since most users will not
# need this and it's more of a security risk then anything else.
# Note: Anytime we find a -query or -indirect on the command line we do not add
# a "-nolisten tcp", as then the query just wouldn't work, so this setting only
# affects truly local sessions.
DisallowTCP=true
# By default never place cookies if we "detect" NFS.  We detect NFS by
# detecting "root-squashing".  It seems bad practice to place cookies on things
# that go over the network by default and thus we do not do it by default.
# Sometimes you can however use safe remote filesystems where this is OK and
# you may want to have the cookie in your home directory.
#NeverPlaceCookiesOnNFS=true
# Will cause PAM_DISALLOW_NULL_AUTHTOK to be passed as a flag to
# pam_authenticate and pam_acct_mgmt, disallowing NULL password.  This setting
# will only take effect if PAM is being used by GDM.  This value will be
# overridden with the value from /etc/default/login if it contains
# "PASSREQ=[YES|NO]"
#PasswordRequired=false
# Specifies the PAM Stack to use, "gdm" by default.
PamStack=gdm

# XDMCP is the protocol that allows remote login.  If you want to log into GDM
# remotely (I'd never turn this on on open network, use ssh for such remote
# usage).  You can then run X with -query <thishost> to log in, or
# -indirect <thishost> to run a chooser.  Look for the 'Terminal' server type
# at the bottom of this config file.
[xdmcp]
# Distributions: Ship with this off.  It is never a safe thing to leave out on
# the net.  Setting up /etc/hosts.allow and /etc/hosts.deny to only allow local
# access is another alternative but not the safest.  Firewalling port 177 is
# the safest if you wish to have xdmcp on.  Read the manual for more notes on
# the security of XDMCP.
Enable=false
# Honor indirect queries, we run a chooser for these, and then redirect the
# user to the chosen host.  Otherwise we just log the user in locally.
#HonorIndirect=true
# Maximum pending requests.
#MaxPending=4
#MaxPendingIndirect=4
# Maximum open XDMCP sessions at any point in time.
#MaxSessions=16
# Maximum wait times.
#MaxWait=15
#MaxWaitIndirect=15
# How many times can a person log in from a single host.  Usually better to
# keep low to fend off DoS attacks by running many logins from a single host.
# This is now set at 2 since if the server crashes then GDM doesn't know for
# some time and wouldn't allow another session.
#DisplaysPerHost=2
# The number of seconds after which a non-responsive session is logged off.
# Better keep this low.
#PingIntervalSeconds=15
# The port.  177 is the standard port so better keep it that way.
#Port=177
# Willing script, none is shipped and by default we'll send hostname system id.
# But if you supply something here, the output of this script will be sent as
# status of this host so that the chooser can display it.  You could for
# example send load, or mail details for some user, or some such.
#Willing=/etc/gdm/Xwilling

[gui]
# The specific gtkrc file we use.  It should be the full path to the gtkrc that
# we need.  Unless you need a specific gtkrc that doesn't correspond to a
# specific theme, then just use the GtkTheme key.
#GtkRC=/usr/share/themes/Default/gtk-2.0/gtkrc

# The GTK+ theme to use for the GUI.
GtkTheme=Clearlooks
# If to allow changing the GTK+ (widget) theme from the greeter.  Currently
# this only affects the standard greeter as the graphical greeter does not yet
# have this ability.
#AllowGtkThemeChange=true
# Comma separated list of themes to allow.  These must be the names of the
# themes installed in the standard locations for gtk themes.  You can also
# specify 'all' to allow all installed themes.  These should be just the
# basenames of the themes such as 'Thinice' or 'LowContrast'.
#GtkThemesToAllow=all

# Maximum size of an icon, larger icons are scaled down.
#MaxIconWidth=128
#MaxIconHeight=128

[greeter]
# The following options for setting titlebar and setting window position are
# only useful for the standard login (gdmlogin) and are not used by the
# themed login (gdmgreeter).
#
# The standard login has a title bar that the user can move.
#TitleBar=true
# Don't allow user to move the standard login window.  Only makes sense if
# TitleBar is on.
#LockPosition=false
# Set a position for the standard login window rather then just centering the
# window.  If you enter negative values for the position it is taken as an
# offset from the right or bottom edge.
#SetPosition=false
#PositionX=0
#PositionY=0

# Enable the Face browser.  Note that the Browser key is only used by the
# standard login (gdmlogin) program.  The Face Browser is enabled in 
# the Graphical greeter by selecting a theme that includes the Face
# Browser, such as happygnome-list.  The other configuration values that
# affect the Face Browser (MinimalUID, DefaultFace, Include, Exclude,
# IncludeAll, GlobalFaceDir) are used by both the Standard and Themed
# greeter.
Browser=false
# The default picture in the browser.
#DefaultFace=/usr/share/pixmaps/nobody.png
# User ID's less than the MinimalUID value will not be included in the face
# browser or in the gdmselection list for Automatic/Timed login.  They will not
# be displayed regardless of the settings for Include and Exclude.
MinimalUID=1000
# Users listed in Include will be included in the face browser and in the
# gdmsetup selection list for Automatic/Timed login.  Users should be separated
# by commas.
#Include=
# Users listed in Exclude are excluded from the face browser and from the
# gdmsetup selection list for Automatic/Timed login.  Excluded users will still
# be able to log in, but will have to type their username.  Users should be
# separated by commas.  
Exclude=nobody
# By default, an empty include list means display no users.  By setting
# IncludeAll to true, the password file will be scanned and all users will be
# displayed except users excluded via the Exclude setting and user ID's less
# than MinimalUID.  Scanning the password file can be slow on systems with
# large numbers of users and this feature should not be used in such
# environments.  The setting of IncludeAll does nothing if Include is set to a
# non-empty value.
IncludeAll=true
# If user or user.png exists in this dir it will be used as his picture.
#GlobalFaceDir=/usr/share/pixmaps/faces/

# File which contains the locale we show to the user.  Likely you want to use
# the one shipped with GDM and edit it.  It is not a standard locale.alias
# file, although GDM will be able to read a standard locale.alias file as well.
LocaleFile=/etc/gdm/locale.conf
# Logo shown in the standard greeter.
Logo=/usr/share/pixmaps/gdmDebianLogo.xpm
# Logo shown on file chooser button in gdmsetup (do not modify this value).
#ChooserButtonLogo=/usr/share/pixmaps/gdm-foot-logo.png
# The standard greeter should shake if a user entered the wrong username or
# password.  Kind of cool looking
#Quiver=true

# The Actions menu (formerly system menu) is shown in the greeter, this is the
# menu that contains reboot, shutdown, suspend, config and chooser.  None of
# these is available if this is off.  They can be turned off individually
# however.
#SystemMenu=true
# Configuration is available from the system menu of the greeter.
#ConfigAvailable=true
# Should the chooser button be shown.  If this is shown, GDM can drop into
# chooser mode which will run the xdmcp chooser locally and allow the user to
# connect to some remote host.  Local XDMCP does not need to be enabled,
# however.
#ChooserButton=true

# Welcome is for all console logins and RemoteWelcome is for remote logins
# (through XDMCP).
# DefaultWelcome and DefaultRemoteWelcome set the string for Welcome to
# "Welcome" and for DefaultWelcome to "Welcome to %n", and properly translate
# the message to the appropriate language.  Note that %n gets translated to the
# hostname of the machine.  These default values can be overridden by setting
# DefaultWelcome and/or DefaultRemoteWelcome to false, and setting the Welcome
# and DefaultWelcome values as desired.  Just make sure the strings are in
# utf-8 Note to distributors, if you wish to have a different Welcome string
# and wish to have this translated you can have entries such as
# "Welcome[cs]=Vitejte na %n".
DefaultWelcome=true
DefaultRemoteWelcome=true
#Welcome=Welcome
#RemoteWelcome=Welcome to %n

# Xinerama screen we use to display the greeter on.  Not for true multihead,
# currently only works for Xinerama.
#XineramaScreen=0
# Background settings for the standard greeter:
# Type can be 0=None, 1=Image & Color, 2=Color, 3=Image
#BackgroundType=2
#BackgroundImage=
#BackgroundScaleToFit=true
# The Standard greeter (gdmlogin) uses BackgroundColor as the background
# color, while the themed greeter (gdmgreeter) uses GraphicalThemedColor
# as the background color.
BackgroundColor=#76848F
GraphicalThemedColor=#76848F
# XDMCP session should only get a color, this is the sanest setting since you
# don't want to take up too much bandwidth
#BackgroundRemoteOnlyColor=true

# Program to run to draw the background in the standard greeter.  Perhaps
# something like an xscreensaver hack or some such.
#BackgroundProgram=
# If this is true then the background program is run always, otherwise it is
# only run when the BackgroundType is 0 (None).
#RunBackgroundProgramAlways=false
# Delay before starting background program
#BackgroundProgramInitialDelay=30
# Should the background program be restarted if it is exited.
#RestartBackgroundProgram=true
# Delay before restarting background program
#BackgroundProgramRestartDelay=30

# Show the Failsafe sessions.  These are much MUCH nicer (focus for xterm for
# example) and more failsafe then those supplied by scripts so distros should
# use this rather then just running an xterm from a script.
#ShowGnomeFailsafeSession=true
#ShowXtermFailsafeSession=true
# Normally there is a session type called 'Last' that is shown which refers to
# the last session the user used.  If off, we will be in 'switchdesk' mode
# where the session saving stuff is disabled in GDM
#ShowLastSession=true
# Always use 24 hour clock no matter what the locale.
#Use24Clock=auto
# Use circles in the password field.  Looks kind of cool actually, but only
# works with certain fonts.
#UseCirclesInEntry=false
# Do not show any visible feedback in the password field. This is standard for
# instance in console, xdm and ssh.
#UseInvisibleInEntry=false

# These two keys are for the themed greeter (gdmgreeter).  Circles is the
# standard shipped theme.  If you want GDM to select a random theme from a
# list then provide a list that is delimited by /: to the GraphicalThemes
# key and set GraphicalThemeRand to true.  Otherwise use GraphicalTheme
# and specify just one theme.
GraphicalTheme=debian-moreblue
#GraphicalThemes=debian-moreblue:/bijou/:blueswirl/:circles/:debblue-list/:debblue/:ayo/:debian-dawn/:debian-greeter/:debian/:glassfoot/:hantzley/:happygnome/:industrial/:crystal/:linsta
GraphicalThemeDir=/usr/share/gdm/themes/
GraphicalThemeRand=false

# If InfoMsgFile points to a file, the greeter will display the contents of the
# file in a modal dialog box before the user is allowed to log in.
#InfoMsgFile=
# If InfoMsgFile is present then InfoMsgFont can be used to specify the font to
# be used when displaying the contents of the file.
#InfoMsgFont=Sans 24

# If SoundOnLogin is true, then the greeter will beep when login is ready for
# user input.  If SoundOnLogin is a file and the greeter finds the 'play'
# executable (see daemon/SoundProgram) it will play that file instead of just
# beeping.
#SoundOnLogin=true
#SoundOnLoginFile=
# If SoundOnLoginSuccess, then the greeter will play a sound (as above) when a
# user successfully logs in.
#SoundOnLoginSuccess=false
#SoundOnLoginSuccessFile=
# If SoundOnLoginFailure, then the greeter will play a sound (as above) when a
# user fails to log in.
#SoundOnLoginFailure=false
#SoundOnLoginFailureFile=

# Specifies a program to be called by the greeter/login program when the
# initial screen is displayed.  The purpose is to provide a hook where files
# used after login can be preloaded to speed performance for the user. The
# program will only be called once only, the first time a greeter is displayed.
# The gdmprefetch command may be used.  This utility will load any libraries
# passed in on the command line, or if the argument starts with a "@"
# character, it will process the file assuming it is an ASCII file containing a
# list of libraries, one per line, and load each library in the file.
PreFetchProgram=/usr/lib/gdmprefetch @/etc/gdm/gdmprefetchlist

# The chooser is what's displayed when a user wants an indirect XDMCP session,
# or selects Run XDMCP chooser from the system menu
[chooser]
# Default image for hosts.
#DefaultHostImg=/usr/share/pixmaps/nohost.png
# Directory with host images, they are named by the hosts: host or host.png.
HostImageDir=/usr/share/hosts/
# Time we scan for hosts (well only the time we tell the user we are scanning
# actually, we continue to listen even after this has expired).
#ScanTime=4
# A comma separated lists of hosts to automatically add (if they answer to a
# query of course).  You can use this to reach hosts that broadcast cannot
# reach.
Hosts=
# Broadcast a query to get all hosts on the current network that answer.
Broadcast=true
# Set it to true if you want to send a multicast query to hosts.
Multicast=false
# It is an IPv6 multicast address.It is hardcoded here and will be replaced
# when officially registered xdmcp multicast address of TBD will be available.
#Multicast_Addr=ff02::1
# Allow adding random hosts to the list by typing in their names.
#AllowAdd=true

[debug]
# This will cause GDM to send debugging information to the system log, which 
# will create a LOT of output.  It is not recommended to turn this on for
# normal use, but it can be useful to determine the cause when GDM is not
# working properly.
Enable=false
# This will enable debug messages for accessibilty gesture listeners into the
# syslog.  This includes output about key events, mouse button events, and
# pointer motion events.  This is useful for figuring out the cause of why the
# gesture listeners may not be working, but is too verbose for general debug.
Gestures=false

[servers]
# These are the standard servers.  You can add as many you want here and they
# will always be started.  Each line must start with a unique number and that
# will be the display number of that server.  Usually just the 0 server is
# used.
0=Standard
#1=Standard
# Note the VTAllocation and FirstVT keys on Linux and FreeBSD.  Don't add any
# vt<number> arguments if VTAllocation is on, and set FirstVT to be the first
# vt available that your gettys don't grab (gettys are usually dumb and grab
# even a vt that has already been taken).  Using 7 will work pretty much for
# all Linux distributions.  VTAllocation is not currently implemented on
# anything but Linux and FreeBSD.  Feel free to send patches.  X servers will
# just not get any extra arguments then.
#
# If you want to run an X terminal you could add an X server such as this:
#0=Terminal -query serverhostname
# or for a chooser (optionally serverhostname could be localhost):
#0=Terminal -indirect serverhostname
#
# If you wish to run the XDMCP chooser on the local display use the following
# line
#0=Chooser

## Note:
# is your X server not listening to TCP requests?  Perhaps you should look at
# the security/DisallowTCP setting!

# Definition of the standard X server.
[server-Standard]
name=Standard server
command=/usr/bin/X -audit 0 
flexible=true
# Indicates that the X server should be started at a different process
# priority.  Values can be any integer value accepted by the setpriority C
# library function (normally between -20 and 20) with 0 being the default. For
# highly interactive applications, -5 yields good responsiveness. The default
# value is 0 and the setpriority function is not called if the value is 0.

#priority=0

# To use this server type you should add -query host or -indirect host to the
# command line.
[server-Terminal]
name=Terminal server
# Add -terminate to make things behave more nicely
command=/usr/bin/X -audit 0 -terminate
# Make this not appear in the flexible servers (we need extra params anyway,
# and terminate would be bad for xdmcp choosing).  You can make a terminal
# server flexible, but not with an indirect query.  If you need flexible
# indirect query server, then you must get rid of the -terminate and the only
# way to kill the flexible server will then be by Ctrl-Alt-Backspace.
flexible=false
# Not local, we do not handle the logins for this X server.
handled=false

# To use this server type you should add -query host or -indirect host to the
# command line.
[server-Chooser]
name=Chooser server
command=/usr/bin/X -audit 0
# Make this not appear in the flexible servers for now, but if you wish to
# allow a chooser server then make this true.  This is the only way to make a
# flexible chooser server that behaves nicely.
flexible=false
# Run the chooser instead of the greeter.  When the user chooses a machine they
# will get this same server but run with "-terminate -query hostname".
chooser=true

[customcommand]
# This section allows you specify up to 10 custom commands. Each of the
# commands can be defined by the seven parameters listed below. In each of the
# descriptions of the parameters N can take on any values between 0 and 9,
# i.e. CustomCommand0=,CustomCommand1=,...,CustomCommand9=.  The  numbers
# can have gaps as long as they fit within predefined set of 10, and their
# placement order within this section and with respect to each other is
# not important.
#
# CustomCommandN, CustomCommandTextN, CustomCommandLabelN, 
# CustomCommandLRLabelN, CustomCommandTooltipN, CustomCommandIsPersistentN
# and CustomCommandNoRestartN should all be defined for a given integer N, 
# where N can be a number from 0-9 (if not the default values will be 
# assigned except CustomCommandN for which no default exists).

# Custom command to run.  Multiple commands may be specified separated by 
# semicolons.  GDM will use the first valid command.  Examples:
# /sbin/bootwindoze;/usr/bin/bootwindoze, or
# /sbin/runupdate;/usr/local/sbin/runupdate
#
#CustomCommandN=

# Custom command dialog message that will appear on all warning dialogs.
# This will vary depending on what you want to do. Examples:
# Are you sure you want to restart system into Windoze?, or
# Are you sure you want do do this?
#CustomCommandTextN=

# Custom command label that will appear as stock label on buttons/menu items.
# This option can't contain any semicolon characters (i.e. ";").
# Examples:
# _Windoze, or
# _Update Me
#CustomCommandLabelN=

# Custom command label that will appear as stock label on radio buttons/list
# items.  The underscore indicates the mnemonic used with this item.  Examples:
#   Restart into _Windoze
#   Perform system _Update
#CustomCommandLRLabelN=

# Custom command tooltip. Examples
# Restarts the computer into Windoze
# Updates the computer software to the most recent version(s)
#CustomCommandTooltipN=

# Custom command persistence option. Setting it to true will allow this
# command to appear outside the login manager, e.g. on the desktop through 
# Log Out/Shut Down dialogs. The default value is false.
#CustomCommandIsPersistentN=

# Custom command gdm/system restart option. Setting it to true will not
# restart gdm after command execution.  The default commands (reboot, shut
# down) all reboot the system by default which is why the default setting
# is true.
# In addition when corresponding CustomCommandIsPersistentN option is set to
# true, setting CustomCommandNoRestartN to false will place CustomCommandN
# in the Shut Down dialog set of actions, setting it to true will place
# CustomCommandN in the Log Out dialog set of actions.
#CustomCommandNoRestartN=
#
# Example layout for more than one command:
#CustomCommand0=
#CustomCommandText0=
#CustomCommandLabel0=
#CustomCommandLRLabel0=
#CustomCommandTooltip0=
#CustomCommandIsPersistent0=
#CustomCommandNoRestart0=
#
#CustomCommand1=
#CustomCommandText1=
#CustomCommandLabel1=
#CustomCommandLRLabel1=
#CustomCommandTooltip1=
#CustomCommandIsPersistent1=
#CustomCommandNoRestart1=
#
# and so on
# GDM Custom Configuration file.
#
# This file is the appropriate place for specifying your customizations to the
# GDM configuration.   If you run gdmsetup, it will automatically edit this
# file for you and will cause the daemon and any running GDM GUI programs to
# automatically update with the new configuration.  Not all configuration
# options are supported by gdmsetup, so to modify some values it may be
# necessary to modify this file directly by hand.
#
# This file overrides the default configuration settings.  These settings 
# are stored in the GDM System Defaults configuration file, which is found
# at the following location.
#
# /usr/share/gdm/defaults.conf.  
#
# This file contains comments about the meaning of each configuration option,
# so is also a useful reference.  Also refer to the documentation links at
# the end of this comment for further information.  In short, to hand-edit
# this file, simply add or modify the key=value combination in the
# appropriate section in the template below this comment section.
#
# For example, if you want to specify a different value for the Enable key
# in the "[debug]" section of your GDM System Defaults configuration file,
# then add "Enable=true" in the "[debug]" section of this file.  If the
# key already exists in this file, then simply modify it.
#
# Older versions of GDM used the "gdm.conf" file for configuration.  If your
# system has an old gdm.conf file on the system, it will be used instead of
# this file - so changes made to this file will not take effect.  Consider
# migrating your configuration to this file and removing the gdm.conf file.
#
# If you hand edit a GDM configuration file, you can run the following
# command and the GDM daemon will immediately reflect the change.  Any
# running GDM GUI programs will also be notified to update with the new
# configuration.
#
# gdmflexiserver --command="UPDATE_CONFIG <configuration key>"
#
# e.g, the "Enable" key in the "[debug]" section would be "debug/Enable".
#
# You can also run gdm-restart or gdm-safe-restart to cause GDM to restart and
# re-read the new configuration settings.  You can also restart GDM by sending
# a HUP or USR1 signal to the daemon.  HUP behaves like gdm-restart and causes
# any user session started by GDM to exit immediately while USR1 behaves like
# gdm-safe-restart and will wait until all users log out before restarting GDM.
#
# For full reference documentation see the gnome help browser under
# GNOME|System category.  You can also find the docs in HTML form on
# http://www.gnome.org/projects/gdm/
#
# NOTE: Lines that begin with "#" are considered comments.
#
# Have fun!

[daemon]



AlwaysLoginCurrentSession=false





[security]

[xdmcp]

[gui]

[greeter]


GlobalFaceDir=/usr/share/




[chooser]

[debug]


# Note that to disable servers defined in the GDM System Defaults
# configuration file (such as 0=Standard, you must put a line in this file
# that says 0=inactive, as described in the Configuration section of the GDM
# documentation.
#
[servers]

# 1=Dual device=/dev/console

# Also note, that if you redefine a [server-foo] section, then GDM will
# use the definition in this file, not the GDM System Defaults configuration
# file.  It is currently not possible to disable a [server-foo] section
# defined in the GDM System Defaults configuration file.
#

[server-Standard]
name=Standard server
command=/usr/bin/X -br -audit 0 -layout Single
flexible=true

[server-Dual]
name=Dual Head
command=/usr/bin/X -br -audit 0 -layout Dual
flexible=true

[server-Xinerama]
name=Xinerama
command=/usr/bin/X -br -audit 0 -layout Xinerama
flexible=true



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]