diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | acconfig.h | 2 | ||||
-rw-r--r-- | configure.in | 13 | ||||
-rw-r--r-- | daemon/verify.c | 5 | ||||
-rw-r--r-- | docs/C/gdm.sgml | 263 | ||||
-rw-r--r-- | docs/Makefile.am | 2 |
6 files changed, 284 insertions, 7 deletions
@@ -1,3 +1,9 @@ +1999-08-16 <mkp@mkp.net> + + * docs/C/gdm.sgml: SGML-ified manual. Only bare bones so far. + + * configure.in: Check whether crypt.h exists. Gnome bug #1925. + 1999-08-15 <mkp@mkp.net> * docs/gdm-manual.txt: Updated for v2 config file syntax. @@ -9,4 +9,4 @@ #undef HAVE_PAM #undef HAVE_TCPWRAPPERS #undef HAVE_SHADOW - +#undef HAVE_CRYPT diff --git a/configure.in b/configure.in index 11b94cdd..f4e04a67 100644 --- a/configure.in +++ b/configure.in @@ -32,11 +32,15 @@ AC_CHECK_HEADERS(security/pam_appl.h, [ if test $have_pam = no; then -# Check if -lcrypt is necessary -AC_CHECK_LIB(crypt, crypt, [ - LIBS="$LIBS -lcrypt"]) + # Check if -lcrypt is necessary + AC_CHECK_LIB(crypt, crypt, [ + LIBS="$LIBS -lcrypt"]) -# Check for shadow passwords (hack) + # Check if crypt lives in a separate header file + AC_CHECK_HEADERS(crypt.h, [ + AC_DEFINE(HAVE_CRYPT)]) + + # Check for shadow passwords (hack) AC_MSG_CHECKING("for /etc/shadow") if test -e /etc/shadow; then @@ -48,7 +52,6 @@ AC_CHECK_LIB(crypt, crypt, [ fi - # TCP Wrappers for XDMCP access control AC_MSG_CHECKING("whether to use TCP wrappers") LIBWRAP_PATH="" diff --git a/daemon/verify.c b/daemon/verify.c index b00d1922..d10144f0 100644 --- a/daemon/verify.c +++ b/daemon/verify.c @@ -23,7 +23,6 @@ #include <syslog.h> #include <pwd.h> #include <glib.h> -#include <crypt.h> #include <config.h> #include <gnome.h> @@ -31,6 +30,10 @@ #include <security/pam_appl.h> #endif /* HAVE_PAM */ +#ifdef HAVE_CRYPT + #include <crypt.h> +#endif /* HAVE_CRYPT */ + #ifdef HAVE_SHADOW #include <shadow.h> #endif /* HAVE_SHADOW */ diff --git a/docs/C/gdm.sgml b/docs/C/gdm.sgml new file mode 100644 index 00000000..acb41bb9 --- /dev/null +++ b/docs/C/gdm.sgml @@ -0,0 +1,263 @@ +<!DOCTYPE book PUBLIC "-//Davenport//DTD DocBook V3.0//EN" []> + +<book id="gdm"> + <bookinfo> + <title>Gnome Display Manager Reference Manual</title> + <authorgroup> + <author> + <firstname>Martin Kasper</firstname> <surname>Petersen</surname> + <affiliation> + <address> + <email>mkp@mkp.net</email> + </address> + </affiliation> + </author> + </authorgroup> + <copyright> + <year>1998, 1999</year> <holder>Martin K. Petersen</holder> + </copyright> + + <legalnotice> + <para> + This documentation is free software; you can redistribute it + and/or modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later + version. + </para> + + <para> + This program is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the GNU General Public License for more details. + </para> + + <para> + You should have received a copy of the GNU General Public + License along with this program; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, + MA 02111-1307 USA + </para> + + <para> + For more details see the file COPYING in the source + distribution of GDM. + </para> + </legalnotice> + </bookinfo> + + <toc></toc> + + <chapter id="intro"> + <title>Introduction</title> + + <para> + GDM is a replacement for XDM, the X Display Manager. Unlike its + competitors (X3DM, KDM, WDM) GDM was written from scratch and + does not contain any original XDM / X Consortium code. + </para> + + <sect1 id="overview"> + <title>Theory of Operation</title> + + <para> + GDM was written with simplicity and security in mind. The + overall design concept is this: + </para> + + <para> + Upon startup the <filename /gdm/ daemon parses its config file + <filename /gdm.conf/. For each of the local displays GDM + forks an Xserver and a slave process. The main GDM process + will then listen to XDMCP requests from remote displays and + monitor the local display sessions. + </para> + + <para> + The GDM slave process opens the display and starts <filename + /gdmlogin/, the graphical login program. <filename /gdmlogin/ + runs as a dedicated user and communicates asynchronously with + the slave process through a pipe. + </para> + + <para> + GDM relies heavily on the presence of PAM, Pluggable + Authentication Modules, but supports regular <code /crypt()/ + and shadow passwords. + </para> + + </sect1> + </chapter> + + <chapter id="Configuration"> + <title>The Configuration Directory</title> + + <para> + The configuration files for gdm are located in the /etc/gdm/ + directory. + </para> + + <para> + This is a listing of the config directory contents: + </para> + + <literallayout> + Init/ + PostSession/ + PreSession/ + Sessions/ + gdm.conf + </literallayout> + + <para> + gdm.conf is the main gdm configuration file. The options will be + described later in this chapter. + </para> + + <para> + The remaining configuration is done by dropping scripts in the + subdirectories of the /etc/gdm folder. This approach makes it + easy for package management systems to install window managers + and different session types without requiring the sysadmin/user + to edit files. + </para> + + <sect1> + <title>The Script Directories</title> + + <para> + In this section we will explain the Init, PreRoot and PostRoot + directories as they are very similar. + </para> + + <para> + When the X server has been successfully started, gdm will try + to run the script called Init/<displayname>. I.e. Init/:0 for + the first local display. If this file is not found, gdm will + attempt to to run Init/Default. The script will be run as root + and gdm blocks until it terminates. Use the Init/* script for + programs that are supposed to run alongside with the gdm login + window. xconsole for instance. Commands to set the background + etc. goes in this file too. + </para> + + <para> + It is up to the sysadmin to decide whether clients started by + the Init script should be killed before starting the user + session. This is controlled with the KillInitClient option in + gdm.conf. + </para> + + <para> + When the user has been successfully authenticated, gdm tries + to run the PreSession script. Similar to the Init-scripts, + PreSession/<displayname> will be executed first, if that is + not found gdm will attempt to run PreSession/Default. The + script will be run as root and gdm blocks until it + terminates. Use this script for local session management or + accounting stuff. The USER environment variable contains the + login of the authenticated user. The script should return 0 on + success. Any other value will cause gdm to terminate the + current login process. + </para> + + <para> + Then the session script is run. Session scripts are located in + the etc/gdm/Session directory. Which one gdm runs depends on + the session the user chose in the Sessions-menu in the gdm + greeter. If no session is selected and the user has no last + session stored in his ~/.gnome/gdm file, the system will + choose or first script found or -- if Sessions/Default exists + -- this will be run. For instance you can create a symlink + from Gnome to Default to make Gnome the default desktop + environment. + </para> + + <para> + When the user terminates his session the PostSession script + will be run. Operation is similar to Init and PreSession. That + is, gdm will attempt to execute the script + PostSession/<displayname> and if that doesn't exist: + PostSession/Default. Again the script will be run with root + priviledges, gdm will block and the USER environment variable + will contain the name of the user who just logged out. + </para> + + <para> + Neither of the Init, PreSession or PostSession scripts are + necessary and can be left out. At least one session script is + required for proper operation. + </para> + + </sect1> + + <sect1> + <title>The Configuration File - <filename /gdm.conf/</title> + + <para> + The daemon and the accompanying utilities share a common + configuration file: <filename>/etc/gdm/gdm.conf</filename>. + </para> + + <para> + The configuration file is divided into sections each + containing variables that define the behaviour for a specific + part of the GDM suite. + </para> + + <para> + <filename /gdm.conf/ follows the standard GNOME configuration + file syntax. Keywords in brackets define sections, strings + before an equal sign (=) are variables and the data after + equal sign represents their value. + </para> + + <para> + In general, 0 represents disable and 1 represents enable for + boolean configuration options. + </para> + + <sect2> + <title>[daemon]</title> + + <para> + This section contains configuration options for the GDM + master daemon <filename /gdm/. + </para> + + <sect3> + <title>Chooser</title> + + <para>Default:</para> + <screen>Chooser=/usr/bin/gdmchooser --disable-sound</screen> + + <para> + Full pathname to the <filename /gdmchooser/ executable. + </para> + + </sect3> + + </sect2> + + </sect1> + + </chapter> + +</book> + +<!-- Keep this comment at the end of the file +Local variables: +mode: sgml +sgml-omittag:t +sgml-shorttag:t +sgml-minimize-attributes:nil +sgml-always-quote-attributes:t +sgml-indent-step:2 +sgml-indent-data:t +sgml-parent-document:nil +sgml-exposed-tags:nil +sgml-local-catalogs:nil +sgml-local-ecat-files:nil +End: +--> diff --git a/docs/Makefile.am b/docs/Makefile.am index 35720621..e178d9b2 100644 --- a/docs/Makefile.am +++ b/docs/Makefile.am @@ -1,3 +1,5 @@ +SUBDIRS = C + TEXT_FILES = \ gdm-manual.txt |