README.install
QUICK NOTES ON INSTALLATION/USE: General ======= If you didn't compile Gnome yourself, make sure you have the appropriate -devel packages installed. If building from CVS, there is a script gdm-build.sh in the root of the tree that you can use to build gdm and then install it with "make install". The setup is like Red Hat. WARNING: gdm is a *daemon* -- not a common user application. It requires extensive knowledge about your system setup to install and configure. gdm isn't - and never will be - Plug and Play (i.e. ./configure ; make install). Security ======== For security reasons a dedicated user and group id are required for proper operation! This userid is used to run the GDM GUI programs required for login. All functionality that requires root authority is done by the GDM daemon process. This design ensures that if the GUI programs are somehow exploited, only the dedicated user privileges are available. By default GDM assumes the user and the group are called `gdm'. These are configured via the User and Group configuration options in the gdm.conf file. The user and group should be created before running "make install". Distributions and system administrators using GDM are expected to setup the dedicated user properly. It is recommended that this userid be configured to disallow login and to not have a default shell. Distributions and system administrators should set up the filesystem to ensure that the GDM user does not have read or write access to sensitive files. The necessity for a gdm userid/group is because the GDM user does require certain special permissions. It must be able to read and write Xauth keys to /var/lib/gdm. This directory should have root:gdm ownership and 1770 permissions. Running "make install" will set this directory to these values. You will need to modify the configure/Makefile if you want to use a different group than gdm. The GDM daemon process will reset this directory to proper ownership/permissions if it is somehow not set properly. The need to be able to write Xauth files is why user "nobody" is not appropriate for gdm. If the gdm user is set up properly and gdm user access is somehow exploited, this means that the GDM user should only be able to maliciously modify the Xauth keys causing potential Denial-Of-Service attacks. If a person gains the ability to run programs as the user gdm, it would be possible to snoop on running GDM processes, including usernames and passwords as they are being typed in. Therefore it is important to ensure that the gdm user is disallowed login and has no default shell. When reporting bugs you should first turn on debugging in gdm.conf. Your syslog daemon might not log debug information per default so you should make sure daemon.debug events are logged to a file. Include the resulting log in your bug report. It is known that debugging can sometimes cause unrelated problems due to the interaction with the syslog daemon, so it is not advisable that you run with the debug option all the time. (Not to mention it generates a LOT of spew) XDMCP is disabled by default since XDMCP can be exploited to create Denial-Of-Service attacks if a malicious user sends a flood of XDMCP requests to your computer. It may be enabled by setting "enable=true" in the "[xdmcp]" section of the gdm.conf file. The face browser reveals usernames on your system and should not be used unless the system is physically secure. In other words, it is a feature most appropriate for home use and is not recommended on systems that are for public use. Read the GDM documentation for more information about security: http://www.gnome.org/projects/gdm/ Configure Options ================= Configuration is done by editing the gdm.conf file (located in <prefix>/etc/gdm/gdm.conf). If no config file exists, make install will create one for you. The default HaltCommand and RebootCommand gdm.conf options may not be appropriate for your distribution. Distribution vendors who ship GDM are advised to modify these to the supported Halt/Reboot commands for their system. The correct HaltCommand for FreeBSD is "/sbin/halt -p" so the disks are synced on shutdown, and on other systems "/sbin/init 0" or /sbin/init 5" may be most appropriate. The correct RebootCommand for some systems may be "/sbin/init 6". Patches to improve the GDM configure script and how it sets these values by default would be accepted. On some systems "/sbin/init 0", "/sbin/init 5", or "/sbin/halt -p" may be If you want to add distribution-specific directories to the end of DefaultPath and RootDefaultPath, then use the --with-post-path configure option. Argument value should be a list of directories separated by ":" characters (no spaces). Make sure the --with-pam-prefix points to the prefix where the pam.conf file is located (default is sysconfdir - /etc). If you want accessibility to work and have AT programs like gok and gnopernicus installed to a different directory than EXPANDED_BINDIR, then use the --with-at-bindir configure option. If you want IPv6 enabled, use --enable-ipv6=yes option to configure. To assign a default face to a user for the face browser, place a (jpg, gif, png, xpm) image to the user's $HOME/.iface directory. The gdm.conf DefaultFace configuration option allows the system administrator to set up a default face image. For best a11y support on Linux, it is recommended use the --with-xevie configuration option so that the user's Xserver session is always started with the Xserver XEVIE extension. GOK works best when XEVIE is enabled. Read the GDM documentation for more information about configuring GDM: http://www.gnome.org/projects/gdm/ Distribution ============ Red Hat ------- If you want to install OVER RedHat or Ximian packages use, following configure options: --prefix=/usr --sysconfdir=/etc/X11 --localstatedir=/var --enable-console-helper --with-pam-prefix=/etc However, there is now a spec file so you can build an rpm by just doing rpm -ta gdm-<version>.tar.gz This should work on RedHat 6.x, 7.x, 8.x, 9 and perhaps later, and if you're very lucky then on your favorite other distribution, but no promises. GDM is not a trivial package so it's more likely it won't work in other places out of the box. Solaris ------- Configuring GDM with the "--with-post-path=/usr/openwin/bin" on Solaris is recommended. GDM includes code to integrate with /etc/logindevperm and Solaris audit API's. These interfaces are only supported on Solaris 10 and higher. GDM should not be used on Solaris 9 and earlier if auditing is needed. If using Solaris 9 or earlier, device permissions will not be set correctly on login since GDM only processes /etc/logindevperm on Solaris 10 and higher. The most annoying problem is that the user will likely not have access to audio input/output. This can be worked around by adding chown/chmod commands to each /dev device specified in /etc/logindevperm to the GDM PreSession and PostSession script to set the ownership and read/write permissions to the user on user login and back to root:root 0600 on logout. If someone wants to provide a patch to GDM to make it support processing /etc/logindevperm on Solaris 9 and lower to avoid the above workaround, then that would be great. Automatic Login On Solaris -------------------------- Automatic Login, if enabled on Solaris will still popup a GUI asking the user for a password. To set up automatic login so it doesn't require password, use the following /etc/pam.conf settings: gdm-autologin auth required pam_unix_cred.so.1 gdm-autologin auth sufficient pam_allow.so.1 gdm-autologin account sufficient pam_allow.so.1 gdm-autologin session sufficient pam_allow.so.1 gdm-autologin password sufficient pam_allow.so.1 The above setup will cause no lastlog entry to be generated. If a lastlog entry is desired, then use the following for session: gdm-autologin session required pam_unix_session.so.1 If using Solaris 10 or lower, then you also need to compile the pam_allow.c code and install it to /usr/lib/security (or anywhere and provide the full path in /etc/pam.conf) and ensure it is owned by uid 0 and not group or world writable.