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).
Hierin wordt het volgende schema met XDM configuratiebestanden beschreven:
xdm-config
Xaccess
Xservers
Xresources
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 |
/usr/X11R6/lib/X11/xdm |
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 |
!DisplayManager.requestPort: 0 |
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.
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.
Details over de X eigenschappen in gebruik door de XDM widgets (b.v. de omvang van het loginkader, kleuren, bitmap achtergronden, enz.)
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.
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).
De wijze waarop je de X server zelf start, zal afhangen van hoe je wilt dat het lokaal en remote met XDM functioneert.
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.
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).
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 |
id:5:initdefault: |
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 |
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:
Broadcast Query: In deze modus wordt een broadcast verzoek over het netwerk verzonden, en wordt een lijst samengesteld uit de reacties ontvangen van andere toepassingsservers waarop XDM draait.
Explicit Listing: Het is mogelijk als volgt een lijst met hosts aan te geven voor de chooser in het Xaccess bestand:
%hostlist emma alex liam abigail * CHOOSER %hostlist |
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.
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.
Het volgende moet worden ingesteld in het configuratiebestand van KDM (/usr/share/config/kdm/kdmrc voor een Mandrake 8.1 systeem):
[Xdmcp] Enable=True |
Het volgende moet worden ingesteld in het configuratiebestand van GDM (/etc/X11/gdm/gdm.conf):
[Xdmcp] Enable=True |
0=Standard |