von:Joel McCarty
|
Zusammenfassung:
Der X Display Manager läuft als ein Hintergrundprozeß und managed mehrere
X-Display Verbindungen zu lokalen oder zu entfernten Rechnern. Er stellt
einfaches Session Management zur Verfügung.
Der Schwerpunkt dieses Artikels liegt auf dem Einrichten und der Benutzung des X Display Managers xdm. Der X Display Manager läuft als "Daemon" auf einem Host und stellt einfache Dienste für mehrere X Displays (lokal oder auf einer anderen Maschine) zur Verfügung, analog zu init(8), getty(1) and login(1) auf ASCII-Terminals. Ausserdem räumt xdm Displays auf, auf denen der X Server nicht mehr läuft. Eine der besten Eigenschaften von xdm ist, daß er Authentisierungsinformationen erzeugt, die vom Display Server zur Zugangssteuerung auf einer per-Host oder per-Account Basis genutzt werden können. Die Möglichkeit, X Sessions mit einer Standardauthentisierung zu starten, macht xdm ideal für Situationen, in denen eine einzelne Maschine mehrere Benutzer bedient, die jeder individuell eingerichtete X Sessions verwenden.
Umfang dieses Artikels
Zwar spricht dieser Artikel die Authentisierung mit xdm kurz an,
die Systemsicherheit unter dem X Window System wird jedoch das Thema
eines detailierteren Artikels im nächsten Monat sein.
Möchten Sie lediglich die Verwendung von xdm
auf einem isolierten System verstehen, so können Sie den Abschnitt
über XDMCP überspringen. In diesem Fall reicht sehr wahrscheinlich
das in den meisten Distributionen enthaltene, voreingestellte Setup für xdm aus.
Es genügt dann wohl, nur die Abschnitte zur Konfiguration und Benutzung
von xdm zu lesen, da der Rest des Artikels sich hauptsächlich mit
Netzwerkumgebungen und X Terminals beschäftigt.
Wer an vollständigen "Kochrezepten" zur
Einstellung von X Terminal Umgebungen interessiert ist, sollte sich "The X
Window System Administrators Guide" von O' Reilly & Associates
besorgen, das die Details der Verwaltung von X Terminals erläutert,
die über den Inhalt dieses Artikels hinausgehen.
Sitzungen unter X
Für traditionelle TTY's (z.B. ASCII Terminals) ist eine Sitzung (session) die Anwender-Login-Shell; eine Sitzung unter xdm wird von einem beliebigen session manager verwaltet, da die Anwender- Login-Shell in einem Fenstersystem nicht unbedingt eine Terminalschnittstelle zur Verfügung stellt. Beim X Window System wird ein Windowmanager zur Verwaltung von Sitzungen verwendet. Verläßt die/der AnwenderIn den Windowmanager, so endet damit auch die Anwender-Sitzung.
Grundlegende Konzepte von xdm
Xdm ist ein Xclient, der die Start- und Endpunkte von Verbindungen verwaltet und Sitzungen kontrolliert und koordiniert. Xdm verfolgt, welche X Server für Verbindungen zur Verfügung stehen, indem es die Xserver Datei liest und auf dem XDMCP Port Verbindungswünsche anderer Server bedient. Sobald die Verwaltung eines X Servers an xdm übergeben wird, sendet xdm einen Login-Bildschirm an den Server und wartet auf Anwendereingaben. Die Eingabe eines Benutzernamens und eines Paßworts werden genau wie bei gewöhnlichen TTY Logins authentisiert. Xdm führt nach erfolgreicher Authentisierung eine Reihe von Shellskripten aus, welche die vom/von der AnwenderIn gewünschten Xclients starten. Diese(r) befindet sich jetzt in einer ganz normalen X Sitzung; wenn sie/er diese X Sitzung per Logout verläßt, reagiert xdm, indem es alle noch offenen Verbindungen schließt und das Terminal in den Loginzustand bringt, so daß es bereit ist, eine neue Sitzung zu beginnen.
Abgesehen von seinen Sicherheitsfunktionen, Möglichkeiten des Fernzugriffs und Fragen der Bequemlichkeit, wird xinit vom X Consortium ( inzwischen The Open Group ) für überflüssig gehalten, da ja eine Vielzahl neuen Funktionen in xdm integriert wurde. Mit xdm kann der Administrator die Anwender-Umgebungen systemweit konfigurieren. Auch stellt xdm den einzigen Weg (den ich kenne) dar, wie mehrere Anwender einen Rechner nutzen können, ohne daß der X Server für jeden User beendet und neu gestartet zu werden braucht oder daß die AnwenderInnen gezwungen wären, alle die gleichen Desktopeinstellungen zu verwenden.
Xdm läßt sich mit gewöhnlichen ASCII-Textdateien konfigurieren. Globale Einstellungen stehen traditionell in /usr/lib/X11/xdm oder /etc/xdm, lokale Einstellungen finden sich hingegen im Home-Directory der betreffenden AnwenderInnen (wo sonst ?). Beachten Sie bitte, daß die Datei xdm-config andere Verzeichnisse für alle anderen Dateien festlegen kann; das Verzeichnis, in dem sich xdm-config befindet, kann xdm explizit mit dem -config Parameter mitgeteilt werden, so daß Systeme mit einer festen xdmEinstellung leicht für Testzwecke verändert werden können. Es folgen kurze Beschreibungen einer jeden Datei und (wo nötig) ein kommentiertes Beispiel.
Globale Dateien
xdm-config
Diese Datei gibt an, wo all die anderen Konfigurationsdateien zu finden sind (falls andere als die Defaulteinstellungen verwendet werden sollen) und enthält Befehle, um xdm einzustellen, zu starten, und zurückzusetzen. Das folgende Beispiel setzt den Pfad für alle weiteren Dateien auf /etc/X11/xdm, so daß die Standarddateien in /usr/lib/X11/xdm nicht verändert werden müssen.
Xservers
Eine Liste von Servern, die von xdm bedient werden sollen. Diese Datei sollte mindestens den lokalen Displayserver enthalten. WICHTIG: Während xdm läuft, wird diese Datei nur dann neu gelesen, wenn eine Session beendet wurde oder wenn xdm ein SIGHUPSignal erhält. Ein SIGHUPSignal kann mittels kill an xdm gesendet werden:
# ps -a | grep xdm
2639 ? R 0:09 /usr/bin/X11/xdm
# kill -9 2639
Hier ist ein Beispiel einer XserversDatei, die für einen einzelnen Rechner verwendet werden kann:
Xsession
Initiales Start Skript, bei jeder X Session benötigt.
Gibt für alle von xdm verwalteten Server an, welche Ressourcen jeweils zu laden sind.
Diese Datei enthällt die Prozess-Id von xdm. Sie dürfen sie zu Informationszwecken lesen, jedoch keinesfalls verändern.
xdm-errors
In dieser Datei werden die Fehlerprotokolle von xdm abgelegt.
Xaccess
Hier können Sie den Zugriff auf XDMCP (ab X11R5) einrichten, womit lediglich Zugriffsrechte für XDMCP Abfragen geregelt werden. Weiterhin können Sie hier Makros definieren, um zusammengehörige Server in logische Gruppen zusammenzufassen. Zum Einrichten der Server Zugriffskontrolle verwenden Sie bitte die Resourcen Gruppe DisplayManager*authorize in der xdm-config Datei. Weitere Informationen zum XDMCP Setup und Beispiele folgen unten im CHOOSER Abschnitt.
GiveConsole
Ein Shell Skript, um die/den AnwenderIn zum "Owner" der Konsole zu machen. Falls Sie keine sehr guten Gründe dafür haben, lassen Sie bitte die Finger davon und verwenden die Konsolen Skripts mit den unten aufgeführten Standard Einstellungen.
Ein Shell Skript daß den SuperUser (Root) wieder zum "Owner" der Konsole macht (ab X11R5). Bitte lassen Sie auch hier wieder alles so, wie es original eingestellt ist.
Ein Shell Skript zur Anzeige des Servers dieser lokalen Konsole (ab X11R5). Blendet die xconsole ein, ein Terminalfenster, das die beim Login erzeugten Systemmeldungen anzeigt.
Lokale Dateien
~/.xsession
Anwenderspezifisches Start Skript, das vom globalen Xsession Skript aufgerufen wird. Anders als ~/.xinitrc kann dieses in jeder Shell geschrieben werden (~/.xinitrc muss ein Bourne oder Bash Shellskript sein).
~/.Xresources
Anwenderspezifische Ressourcen, wird vom globalen Xsession Skript gelesen.
~/.xsession-errors
Je eine eigene Fehlerprotokolldatei für X Sessions pro AnwenderIn.
~/.Xauthority
Enthält Authorisierungs-Informationen für den Server der AnwenderIn.
XDMCP
Das "X Display Manager Control Protocol" wurde mit X11 Rel. 4 eingeführt, um verschiedene Probleme zwischen xdm und X Terminals zu lösen. Vor XDMCP konnte xdm sich nur dadurch über die zu verwaltenden Server informieren, daß es die Datei Xservers einlas. Da die Xservers Datei aber nur beim Start von xdm gelesen wird, entstanden Probleme, wenn X Terminals aus und später wieder ein geschaltet wurden. Grundsätzlich musste jedesmal, wenn ein X Terminal erneut eingeschaltet wurde, ein System-Administrator das xdm Programm veranlassen um die Datei Xservers nochmals zu lesen. Dazu sendete er über xdm's Prozess Id diesem ein SIGHUP signal.
XDMCP erlaubt es Servern, xdm anzusprechen, ohne daß dieses vorher Kenntniss von diesem Server haben muß. Unter XDMCP horcht der "host" am XDMCP Port auf Anfragen (in irgendeinem der drei unterstützten Kommunikations-Modi). Empfängt es eine Verwaltungsanfrage, so produziert es eine Kopie seiner selbst und überträgt den Login Bildschirm zum Terminal.
Kommunikations-Modi
XDMCP erlaubt drei verschiedene Arten der Kommunikation mit Servern, die sich zur Verwaltung anmelden möchten und nicht explizit in der Xservers Datei eingetragen sind. Es sind die Methoden DIRECT, INDIRECT, und BROADCAST.
Im DIRECT Modus richtet ein Server eine allgemeine Bitte um Verwaltung ans gesamte Netzwerk. Der erste xdm Prozess, der auf eine DIRECT Anfrage antwortet, wird damit zum Manager des betreffenden Servers. Eine INDIRECT Anfrage bewirkt, daß das X Terminal eine Auswahlbox erhält, in welcher alle anschlussbereiten Hosts aufgelistet sind, so daß die/der AnwenderIn entscheiden kann, welcher Host die Verwaltung übernehmen soll. Der INDIRECT Modus ist besonders in einer Umgebung mit mehreren Hosts von Nutzen. Um den INDIRECT Modus einzurichten, verwenden Sie bitte das Schlüsselwort CHOOSER, wenn Sie in der Datei Xaccess die Ressourcen eintragen. Sie erhalten die Auswahlbox ("chooser") aber auch dann, wenn Sie den BROADCAST Modus in Verbindung mit der CHOOSER Resource verwenden. Dies sendet dann eine Rundruf Meldung ("broadcast message") an alle Hosts im gesamten Netzwerk und erlaubt dem Anwender einen von ihnen auszuwählen.
Auswahlbox ("Chooser")
Zur Verwendung von X Terminals, die nach dem Einschalten keine Host-Auswahl anbieten, dient das Programm chooser in Verbindung mit dem BROADCAST oder dem INDIRECT Modus. Um das chooser Programm zu aktivieren, tragen Sie bitte CHOOSER als ersten Eintrag in die sog. "indirect host list" der Datei Xaccess ein.
Der Befehl
tech*.odhs.dsd.com CHOOSER BROADCAST
stellt für alle Technikerterminals auf odhs.dsd.com, eine Auswahlbox mit allen im Netz zur Verfügung stehenden Hosts bereit. Wahrscheinlicher wäre es wohl, allen Terminals der Technik-Abteilung eine Liste genau der Hosts anbieten zu wollen, an die sie sich auch tatsächlich anmelden dürfen. Dies läßt sich besser über den INDIRECT Modus erreichen:
tech*.odhs.dsd.com CHOOSER dsdapps.odhs.dsd.com dbsrv.odhs.dsd.com test.odhs.dsd.com
Obige Einstellung würde allen Terminals der Technik-Abteilung über ein Auswahlmenü Zugriff auf die Anwendungs-, Datenbank- und Test-Server geben.
Die Xaccess Datei erlaubt es Ihnen ebenfalls, Makros zu definieren, um zusammengehörige Server in logische Gruppen zusammenzufassen. Folgendes Beispiel verwendet ein Makro mit den oben verwendeten Einstellungen für die Technik-Abteilung:
%TECHHOSTS dsdapps.odhs.dsd.com dbsrv.odhs.dsd.com test.odhs.dsd.com
tech*.odhs.dsd.com CHOOSER %TECHHOSTS
Die Anzeigeoptionen des choosers können eingestellt werden, indem seine Standardparameter in der/den Xresources Datei(en) abgeändert werden.
Um Ihre xdm Einstellungen ohne einen Systemneustart auszuprobieren, geben Sie bitte auf der Textkonsole folgenden Befehl ein:
$ init 5
Dieses Kommando versetzt das System in den "run level 5". Xdm ist für gewöhnlich so vorkonfiguriert, daß es automatisch startet, wenn das System den Level 5 betritt. Sollte xdm beim Umschalten auf Level 5 nicht starten, werfen Sie bitte einen Blick in die Datei /etc/inittab. Dort erkennen Sie, welcher Run Level auf Ihrem System xdm startet. ( Slackware Distributionen verwenden manchmal Level 4 für xdm, aber die meisten anderen Distributionen, die ich verwendet habe, bleiben doch eher bei Level 5). Jetzt sollten Sie das xlogin Fenster sehen, das nach User-Name und Passwort fragt. Loggen Sie sich ein und überprüfen Sie Ihre verschiedenen Einstellungen. Falls Sie sicher sind, auf dem richtigen Run Level zu sein und xdm verhält sich immer noch nicht wie erwartet, so überfliegen Sie bitte den unten folgenden Abschnitt zur Fehlersuche. Ansonsten können Sie von hier aus die individuellen Einstellungen verbiegen (siehe unten). Sobald Sie xdm konfiguriert haben, können Sie die Datei /etc/initab abändern, um den Standard Run Level für den System-Neustart auf 5 (bzw. den für Ihr System passenden Wert) umzusetzen. Auf meiner Maschine genügt es, hierfür folgende Zeile zu ändern:
#/etc/inittab
id:3:initdefault:
wird zu
id:5:initdefault:
Dies startet Linux standardmäßig im Run Level 5, was bewirkt, daß xdm jedesmal automatisch startet, wenn das System hochfährt.
Fehlersuche bei xdm
Falls xdm nicht wie erwartet funktioniert, sollten Sie zuerst in der Datei ~/.xsession-errors nachschauen. Dieses lokale Fehlerprotokoll enthällt die nur für Ihr Konto erzeugten Fehlermeldungen und ist deshalb aussagekräftiger als die Systemprotokolle. Im folgenden erläutere ich einige der Klippen und zeige mögliche Lösungsvorschläge.
Login Box erscheint nicht auf dem Bildschirm
Höchstwahrscheinlich fehlerhafte Konfigurationsdateien, Sie werden dies doch sicherlich überprüfen, bevor Sie den Standard Run Level auf 5 umstellen, oder?
Erfolgreiche Anmeldung, aber wiederkehrende Login Box
Möglicherweise läßt sich Ihre .xsession Datei nicht ausführen. Versuchen Sie sich erneut anzumelden, pressen aber diesmal CTRL-RETURN nach dem Passwort anstatt Enter. So überspringen Sie das .xsession Skript und erhalten ein kleines Terminalfenster, in dem Sie bitte folgenden Befehl abschicken:
# chmod +x .xsession
Versuchen Sie nun nochmals sich anzumelden.
Nach dem anmelden flackert der Bildschirm und die Login Box taucht wieder auf
Verwenden Sie die oben beschriebene Methode, um die Datei .xsession während des Logins zu überspringen und vergewissern Sie sich, daß das letzte Kommando in Ihrer .xsession Datei im Vordergrund startet.
Schlussbemerkung
Ich hoffe, daß Sie dieser Artikel von den Möglichkeiten und der Erweiterbarkeit des X Display Managers überzeugt hat. Weitere und ausführlichere Informationen über xdm können Sie durch die untenstehenden Links erhalten. Wir werden uns in der nächsten Ausgabe mit der oft übersehenen und vernachlässigten Sicherheit unter X Windows beschäftigen. Fragen und Kommentare senden Sie bitte (in Englisch) an [email protected].
weiterführende Information:
|
Webpages maintained
by Miguel Ángel Sepúlveda
© Joel McCarty 1998 Übersetzt von:Karl-Heinz Zimmer und Wolfgang Bornath LinuxFocus 1998 |