Configureren van XDM

In deze paragraaf wordt behandeld wat er voor XDM moet worden geconfigureerd om de functies die tot dusverre in dit document werden beschreven uit te kunnen voeren.

In elk geval bestaat de beschreven configuratie uit het minimale wat nodig is om elk doel te bewerkstelligen. Meestal betekent dit dat deze configuratie de minst veilige is. Raadpleeg alsjeblieft enige aanvullende documentatie uit in the Section called Bronnen voor informatie over het beveiligen van XDM en X terminals (in het bijzonder de 'Running Remote X Applicaties Howto' van de LDP).

Configuratiebestanden

Hierin wordt het volgende schema met XDM configuratiebestanden beschreven:

Deze moeten worden opgezet voor de machine waarop XDM zelf draait. Ze zijn kenmerkend te vinden in (Debian 2.1. Mandrake 7.0.2, RedHat 6.2):

      /etc/X11/xdm
      
of (SuSE 6.4):
      /usr/X11R6/lib/X11/xdm
      

xdm-config

Definieert de namen en lokaties van de andere configuratiebestanden en de basis toegangspermissies. Voor alle distributies die in dit document in aanmerking worden genomen, ging het om de hier genoemde bestanden (maar soms wijken de lokaties af).

Dit definieert ook de uit te voeren scripts voor de diverse status transities voor een X sessie, d.w.z. bij het opstarten, enz. Je zou deze niet hoeven wijzigen, aangezien de meeste distributies die voorgeconfigureerd aanleveren.

Voor door XDM beheerde X sessies bestaat een andere set met opstart- en configuratiescripts voor X sessies gestart via xinit of startx (d.w.z. niet door XDM beheerde X sessies).

In een aantal distributies (b.v. Redhat 7.1) is de volgende regel opgenomen in dit configuratiebestand, wat voorkomt dat XDM naar query's luistert:

        DisplayManager.requestPort: 0
        
Dit moet als volgt in commentaar worden omgezet:
        !DisplayManager.requestPort: 0
        

Xaccess

Bepaalt welke machines een verbinding kunnen maken met XDM - d.w.z. vanaf welke andere machines op het netwerk we XDMCP query's accepteren. Als een machine niet in dit bestand wordt vermeld, dan zal het geen verzoek om een loginprompt van XDM kunnen doen.

Xservers

Bevat een lijst met machines waarmee XDM een verbinding zal maken, aan wie het automatisch een loginprompt levert, d.w.z. die machines waarop reeds een X server draait, maar waarop een loginprompt moet worden gegeven.

Dit is alleen vereist voor 'door XDM beheerde X Servers'. Je hebt in dit bestand geen regels nodig als je voor het ondervragen van XDM terug zal vallen op remote X servers.

Wanneer uitgevoerd als een standalone 'X Werkstation', staat er gewoonlijk slechts één regel in dit bestand, waarmee de lokale host worden aangegeven.

Xresources

Details over de X eigenschappen in gebruik door de XDM widgets (b.v. de omvang van het loginkader, kleuren, bitmap achtergronden, enz.)

XDM Configureren voor het beheer van X Servers

In het bestand Xservers moet voor elke X server een regel worden opgenomen op welk van de servers XDM een loginprompt zal plaatsen. Dit is de lokale machine en/of een lijst met remote machines.

Voorbeeld

      # Eerst de lokale host
      :0 local /usr/bin/X11/X vt7
      #
      # Dan de remote hosts
      emma:0 foreign
      alex:0 foreign
      

Dit zal XDM op de lokale machine starten en ook een loginscherm presenteren op de X servers draaiend op de hosts 'emma' en 'alex' (in de veronderstelling dat permissies zijn opgezet op 'emma' en 'alex' zodanig dat deze machine een verbinding mag opzetten met de draaiende X servers).

Zonodig kan de host en het display worden opgegeven (:0, :1, enz.). Dit kan bijvoorbeeld van pas komen als je meerdere X servers draait op een enkele machine, enz.

Configureren van XDM voor de ontvangst van Query's

Het bestand Xaccess bepaalt welke hosts XDM op deze machine mag ondervragen, om te kunnen verzoeken om een loginprompt.

Voorbeeld

      # Eerste regel voor direct queries
      *
      # Volgende regel voor indirect queries
      * CHOOSER BROADCAST
      

Dit betekent dat elke host via XDM om een loginprompt mag vragen (de eerste '*') gebruik makend van een direct query.

De regel 'CHOOSER' specificeert welke hosts een verbinding kunnen maken met XDM gebruik makend van indirect query's - in dit geval mag elke host deze machine ondervragen voor een lijst met potentiële hosts om een verbinding mee te maken (de tweede '*' regel).

'BROADCAST' betekent dat de 'chooser' toepassing op deze machine zijn lijst met beschikbare servers (waarop ook XDM draait) zal verkrijgen via netwerk broadcast query's.

Het is mogelijk specifieke hostnamen of specificaties van netwerk IP adressen in deze regels te plaasen (b.v. een geheel IP netwerk of specifieke hosts) (en ook andere indirect query's zijn mogelijk, zonder het gebruik van de chooser), maar dat wordt hierin niet beschreven, (raadpleeg de the Section called Bronnen voor een aantal verwijzingen naar meer informatie).

X Opstarten

De wijze waarop je de X server zelf start, zal afhangen van hoe je wilt dat het lokaal en remote met XDM functioneert.

X Werkstation: XDM en lokale X server

XDM zal X normaal gesproken automatisch voor je opstarten en XDM zal gewoonlijk zo worden geconfigureerd dat het als onderdeel van het opstartproces wordt uitgevoerd (via de init scripts). De meeste distributies hebben een specifiek 'run-level' voor het opstarten van het systeem met een grafische loginprompt.

In het bestand Xservers staat kenmerkend een enkele regel - dat van de lokale host, en het bestand Xaccess hoeft alleen toegang toe te staan vanaf de lokale host.

X Terminal: Remote XDM

Start X gewoon zonder clients, met toegangspermissies zodanig dat de remote XDM een verbinding kan maken wanneer het opstart. Met de volgende opdracht zal X zonder toegangsbeheer worden opgestart:

          /usr/X11R6/bin/X -ac
          

Wanneer de remote XDM wordt opgestart, zal het een loginprompt 'voortbrengen' naar alle dergelijk geconfigureerde X-servers (zoals weergegeven in het bestand Xservers).

X Terminal: Query naar een remote XDM

Er zijn 3 modi voor query's: direct, indirect en broadcast (direct voor een enkele single host, indirect voor een lijst met hosts of broadcast voor de eerste host die reageert):

          /usr/X11R6/bin/X -query the.remote.host
          /usr/X11R6/bin/X -indirect the.remote.host
          /usr/X11R6/bin/X -broadcast
          

In elk geval zal X waarschijnlijk als root worden opgestart.

Het is mogelijk een machine automatisch X te laten starten en een query uit te voeren voor een draaiende XDM op het netwerk. Een manier is het aanpassen van de instelling in inittab voor het uitvoeren als een grafische login (dit is runlevel 5 op Debian en RedHat gebaseerde systemen en 3 voor SuSE systemen - in dit voorbeeld wordt runlevel 5 verondersteld). Vaak is dit de regel beginnend met x:5 ergens aan het einde van het bestand /etc/inittab. Stel dit in op (of voeg het toe als het niet voorkomt):

    x:5:respawn:/usr/X11R6/bin/X -broadcast
    
Vervang zo nodig -broadcast door -direct of -indirect. Wellicht moet je tevens als volgt je standaardrunlevel wijzigen in 5 (en vervolgens het systeem opnieuw opstarten):
    id:5:initdefault:
    

XDM Opstarten

In een standaardconfiguratie van een X werkstation, zou XDM kenmerkend worden opgestart door het opgeven van een initieel standaardrunlevel dat correspondeert met een volledige grafische login. Op RedHat en Debian gebaseerde systemen is dit gewoonlijk runlevel 5. Op SuSE systemen is dit runlevel 3.

Het is mogelijk XDM bij het opstarten automatisch uit te voeren door de bovenstaande standaardrunlevelregel te wijzigen. Dit wordt als volgt in /etc/inittab geconfigureerd:

    id:5:initdefault:
    

Als alternatief is het mogelijk een opstartscript voor XDM zelf toe te voegen aan de rc scripts in de directory's met opstartscripts (/etc/rc.d/ voor Redhat/Debian), voor het op vergelijkbare wijze starten en stoppen van XDM als andere services op een Linux machine.

Het volgende script is geschikt voor een systeem gebaseerd op RedHat (en mogelijk Mandrake), en zou kunnen worden opgeslagen als /etc/rc.d/init.d/xdm. Je zult het moeten activeren met 'chkconfig --add xdm'.

    #!/bin/sh
    # xdm start/stop script voor systemen gebaseerd op RedHat
    #
    # chkconfig: 234 60 60
    # beschrijving: xdm permits remote users to logon to this X display
    # processname: /usr/X11R6/bin/xdm
    # config: /etc/X11/xdm/xdm-config

    # source function library
    . /etc/rc.d/init.d/functions

    [ -x /usr/X11R6/bin/xdm ] || exit 0

    prog=/usr/X11R6/bin/xdm

    RETVAL=0

    start () {
    	echo -n $"Starting $prog: "
        # start daemon
        daemon $prog
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch /var/lock/subsys/xdm
        return $RETVAL
    }

    stop () {
    	echo -n $"Stopping $prog: "
        killproc $prog
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/xdm
        return $RETVAL
    }

    restart () {
    	stop
        start
        RETVAL=$?
        return $RETVAL
    }

    # Kijk hoe we werden aangeroepen.
    case "$1" in
    	 start)
        start
        ;;
         stop)
        stop
        ;;
         status)
        status $prog
        RETVAL=$?
        ;;
         restart)
        restart
        ;;
         condrestart)
	 # herstart alleen als het reeds draait
        [ -f /var/lock/subsys/xdm ] && restart || :
        ;;
         reload)
        echo -n $"Reloading $prog: "
        killproc $prog -HUP
        RETVAL=$?
        echo
        ;;
         *)
             echo $"Usage: $0 (start|stop|restart|condrestart|reload|status)"
             RETVAL=1
    esac

    exit $RETVAL
    

De Chooser Toepassing

Wanneer XDM een indirect query ontvangt, in de veronderstelling dat de van toepassing zijnde opties zijn opgegeven in Xaccess voor de 'chooser' toepassing, kan het de gebruiker een lijst geven met andere door XDM beheerde servers die het kent.

In deze bewerkingsmodus, zal de gebruiker in plaats van de normale XDM loginprompt, worden gepresenteerd op een 'chooser' toepassing, welk zal voorzien in een lijst met gedetecteerde hosts op het netwerk die thans XDM connecties accepteren.

Toen ik de chooser voor het eerst probeerde, bemerkte ik dat de Xresources bestanden die bij SuSE en Debian systemen worden meegeleverd, een omvang voor de chooser widget specificeerden, die te groot was voor de schermen... Met de volgende regel in het bestand Xresources wordt dat gecorrigeerd:

      Chooser*geometry:      700x500+300+200
      

De chooser verkrijgt zijn lijst met hosts via één van de volgende twee methoden:

Het is mogelijk ook de localhost op te nemen in de lijst met machines voor de chooser. XDM hoort echter zo te worden geconfigureerd dat het niet op de lokale console display opstart. De login hoort altijd te worden uitgevoerd via een indirect query naar de lokale chooser toepassing, dan zou de localhost samen met andere hosts op het netwerk behoren te verschijnen.

Alternatieven voor XDM

Zowel KDE en Gnome hebben een eigen toepassing ter vervanging van de standaard XDM. Ze zijn vergelijkbaar en goed gedocumenteerd. Wat betreft het leveren van remote X toegang, bestaat een enkele instelling in het configuratiebestand om XDMCP ondersteuning te bieden.

KDM: KDE Display Manager

Het volgende moet worden ingesteld in het configuratiebestand van KDM (/usr/share/config/kdm/kdmrc voor een Mandrake 8.1 systeem):

        [Xdmcp]
        Enable=True
        

GDM: Gnome Display Manager

Het volgende moet worden ingesteld in het configuratiebestand van GDM (/etc/X11/gdm/gdm.conf):

        [Xdmcp]
        Enable=True
        
Om GDM te laten draaien zonder de lokale X Server op te starten, plaats je tevens een commentaarteken voor de regel
        0=Standard
        
in de 'servers' sectie van het configuratiebestand.