Beschreibung: Prüfungskandidaten sollten in der Lage sein, einen Display Manager einzurichten und anzupassen. Dieses Lernziel beinhaltet das Aktivieren und Deaktivieren des Display Managers und das Ändern der Willkommensmeldung. Ebenfalls enthalten ist das Ändern der voreingestellten Bitplanes des Display Managers. Weiters enthalten ist die Konfiguration des Display Managers für die Verwendung auf X-Stationen. Das Lernziel deckt die Display Manager XDM (X Display Manager), GDM (Gnomde Display Manager) und KDM (KDE Display Manager) ab.
Die wichtigsten Dateien, Bezeichnungen und Anwendungen:
Die erste Methode wird gewöhnlich dadurch erreicht, daß der Befehl startx aufgerufen wird. startx ist ein Shellscript, das den Befehl xinit aufruft. Dieses Programm startet dann sowohl den X-Server, als auch zusätzliche Programme, wie den Window-Manager oder die Desktop Umgebung. Die Konfiguration von xinit wird über die Datei $HOME/.xinitrc oder falls diese Datei nicht existiert über /var/X11R6/lib/xinit/xinitrc konfiguriert. Der X-Server wird also als normale Anwendung gestartet. Dieses System hat erhebliche Sicherheitslücken, weil "hinter" dem X-Server eine offene Konsole liegt, von der aus der Befehl startx eingegeben wurde.
Um diese Sicherheitslücke zu schließen, kann die gesamte Kontrolle des Einloggens auch an X11 weitergegeben werden. In diesem Fall wird der X-Server nicht von einem Anwender per Befehl gestartet, sondern von einem Daemon-Prozess, dem X-Display-Manager. Dieser Daemon läuft ständig im Hintergrund und stellt für jeden angeschlossenen X-Server (in der Regel nur einer) ein graphisches Login-Fenster zur Verfügung. Wenn sich ein User über dieses Fenster anmeldet, dann startet der X-Display-Manager gleich den X-Server, der User bekommt also sofort eine graphische Oberfläche, ohne überhaupt auf einem Textterminal eingeloggt zu sein.
Der Display-Manager ist ein Daemon-Prozeß, er sollte also über ein init-Script gestartet werden. Ist der Display-Manager aktiv, so ist es - zumindestens ohne Tricks - nicht mehr möglich, über ein Textterminal mit startx den X-Server als normale Anwendung zu starten. Aus diesem Grund wird der Display-Manager in der Regel nur in einem ganz bestimmten Runlevel gestartet.
Diese Einschränkung erlaubt es, den Display-Manager beliebig an- und auszuschalten, indem einfach der Runlevel entsprechend verändert wird. Die meisten Distributionen haben eine entsprechende Voreinstellung, also einen Runlevel, der alle Netzwerkdienste startet und zusätzlich den Display-Manager aktiviert und einen anderen, der alle Netzwerkdienste startet aber keinen Display-Manager.
Welche Runlevel dazu verwendet werden ist nicht standardisiert. Hier ein paar Beispiele für wichtige Distributionen:
Distribution | Runlevel ohne DM | Runlevel mit DM |
---|---|---|
SuSE bis 7.2 | 2 | 3 |
SuSE ab 7.3 | 3 | 5 |
RedHat | 3 | 5 |
Caldera | 3 | 5 |
Slackware | 3 | 4 |
Nur bei Debian gibt es keinen solchen Runlevel voreingestellt, da die Debian Distribution davon ausgeht, daß sobald der Display-Manager installiert ist, auch sein Einsatz gewünscht wird.
In der Regel sollte in der Datei /etc/inittab eine Liste der zur Verfügung stehenden Runlevel als Kommentare stehen, und danach die Einstellung, welcher Runlevel beim Systemstart verwendet werden soll (initdefault). Beispielsweise könnte hier stehen:
... # # runlevel 0 is System halt (Do never use this for initdefault) # runlevel 1 is Single user mode # runlevel 2 is Local multiuser without remote network (e.g. NFS) # runlevel 3 is Full multiuser with network # runlevel 4 is Not used # runlevel 5 is Full multiuser with network and xdm # runlevel 6 is System reboot (Do never use this for initdefault) # id:5:initdefault: ...Dem wäre also zu entnehmen, daß der Runlevel 5 der Runlevel ist, in dem der Display-Manager (xdm) gestartet werden soll und daß dieser Runlevel auch der voreingestellte Runlevel ist.
Um einen Linux-Rechner also zu zwingen, den Display-Manager zu benutzen, muß der Eintrag in /etc/inittab entsprechend auf den Runlevel geändert werden, der für den Display-Manager Runlevel steht. Um Linux zu zwingen, den Display-Manager nicht zu benutzen, so muß entsprechend der Eintrag geändert werden, so daß in unserem obigen Beispiel die Zeile jetzt lauten müßte:
... id:3:initdefault: ...
Der Display-Manager-Runlevel sollte erst aktiviert werden, wenn sichergestellt ist, daß die Konfiguration des X-Servers tatsächlich funktioniert. Ansonsten geht man Gefahr, daß sich das System nicht mehr vernünftig bedienen läßt, weil beim Systemstart gleich die graphische Oberfläche geladen wird und die womöglich nur einen flackernden Bildschirm produziert.
Sowohl das KDE-, als auch das Gnome-Projekt haben jeweils einen eigenen Display-Manager im Angebot. Der Displaymanager von KDE heißt kdm, der von Gnome ist gdm. Der primäre Unterschied zum xdm liegt im entsprechenden Look&Feel. Allerdings bieten gdm und kdm noch einige interessante Zusatzfeatures:
Der kdm basiert sehr stark auf dem xdm, das heißt, er nutzt sowohl XDM-Konfigurationsdateien, als auch Teile des Quellcodes von xdm Im Gegensatz dazu ist der gdm komplett neu geschrieben und daher etwas unabhängiger von xdm.
Die Konfiguration der jeweiligen Displaymanager findet nach dem neuen Dateisystemstandard immer in den folgenden Verzeichnissen statt:
Displaymanager | Konfigurationsverzeichnis |
---|---|
xdm | /etc/X11/xdm |
gdm | /etc/X11/gdm |
kdm | /etc/X11/kdm |
In diesen Verzeichnissen liegen unterschiedliche Konfigurationsdateien. Die Verzeichnisse von kdm und xdm ähneln sich sehr stark, was auf ihre Verwandschaft zurückzuführen ist, das Verzeichnis von gdm ist vollkommen anders aufgebaut.
xdm ist ein typisches X11-Programm, wird also durch Resources konfiguriert. Die Einstellung der von xdm benötigten Resources liegt in der Datei /etc/X11/xdm/Xresources.
In dieser Datei können die folgenden Einstellungen getroffen werden:
Um schließlich den Bildschirmhintergrund zu verändern, kann eine weitere Datei verwendet werden. Im Verzeichnis /etc/X11/xdm liegt ein Shellscript Xsetup. Dieses Script wird jedesmal abgearbeitet, wenn xdm eine Loginmeldung auf einen Bildschirm schreibt. In dieses Script können jetzt schon Befehle eingetragen werden, die den Bildschirmhintergrund verändern, wie etwa xpmroot, xsetbg oder jedes beliebige andere Programm, das den Bildschirmhintergrund modifiziert.
Nehmen wir an, im Verzeichnis /etc/X11/xdm befindet sich eine Datei background.xpm. Diese Datei enthält das gewünschte Hintergrundbild. Dann tragen wir in die Datei /etc/X11/xdm/Xsetup die folgende Zeile ein:
/usr/bin/xpmroot /etc/X11/xdm/background.xpmDamit wird das gewünschte Bild jedesmal auf den Hintergrund dargestellt, wenn xdm ein Loginfenster darstellt.
Allerdings gibt es eine zweite Konfigurationsmöglichkeit für kdm, die wesentlich mehr Einstellungen erlaubt, als die Möglichkeiten, die wir bereits besprochen haben. Normalerweise werden diese zusätzlichen Einstellungen über ein graphisches Programm erledigt, das Teil des K-Control-Centers ist. Unter dem Menüpunkt System/Anmeldungsmanager können die verschiedensten Einstellungen vorgenommen werden. Alle Einstellungen, die über diese Methode vorgenommen wurden, werden in der Datei /etc/X11/kdm/kdmrc gespeichert und können dort auch manuell verändert werden.
Einer der wesentlichen Unterschiede zwischen kdm und xdm ist die Darstellung der User in Bildform zum Auswählen. Auch die Frage, welche Bilder verwendet werden sollen, kann mit dem k-Control-Center eingestellt werden. Allerdings kann auch einfach je ein Bild (im Format XPM) für jeden User in das Verzeichnis kde-Wurzel/apps/kdm/pics/users gelegt werden, dessen Namen dem des Users entspricht. Das Bild hans.xpm würde also für den User hans benützt.
Die Einstellungen dieses Programmes werden in der Datei /etc/X11/gdm/gdm.conf abgespeichert und können hier auch manuell verändert werden. In der Regel wird das aber nie der Fall sein, da die graphische Konfiguration wesentlich konfortabler ist.
Damit auch der gdm die Bilder der User darstellt, muß dieses Feature ersteinmal aktiviert werden (über gdmconfig). gdm bietet jetzt aber die Möglichkeit, daß jeder User sein eigenes Bild einstellt. Dazu kann er das Programm gdmphotosetup benutzen.
Damit diese Möglichkeit besteht, muß der Displaymanager zunächst einmal so konfiguriert werden, daß er Zugriffe von fremden Rechnern auch zuläßt. Das geschieht bei xdm und kdm wieder exakt gleich, nur der gdm hat wiederum seine eigenen Einstellmöglichkeiten.
! SECURITY: do not listen for XDMCP or Chooser requests ! Comment out this line if you want to manage X terminals with kdm DisplayManager.requestPort: 0Die Zeile, die den requestPort auf 0 setzt muß auskommentiert werden, wenn ein Login von fremden Rechnern aus möglich sein soll. In beiden Fällen wird durch ein Ausrufungszeichen diese Zeile deaktiviert, also:
! SECURITY: do not listen for XDMCP or Chooser requests ! Comment out this line if you want to manage X terminals with kdm ! DisplayManager.requestPort: 0Damit ist die grundsätzliche Bereitschaft zur Bedienung aktiviert.
Um den selben Schritt mit gdm zu vollziehen, muß über das Programm gdmconfig im Submenü Expert im Einstellungstab XDMCP das Schaltkästchen XDMCP aktivieren angeschaltet werden. Dadurch wird der Eintrag Enable=true in der Sektion [xdmcp] der Datei /etc/X11/gdm/gdm.conf vorgenommen.
Dazu werden in dieser Datei Einträge nach dem Muster
Den Zugriff auf die Auswahl anderer Rechner wird mit
Eine solche Datei, die also allen Rechnern der Domaine foo.bar die Benutzung unseres graphischen Logins erlauben soll könnte folgendermaßen aussehen:
*.foo.bar *.foo.bar CHOOSER BROADCAST
Zu diesem Zweck wird der X-Server tatsächlich direkt aufgerufen, also weder durch startx, noch durch xdm sondern durch den Befehl X. Dazu kommen drei Techniken in Betracht. DIRECT, INDIRECT und BROADCAST.
Die DIRECT-Methode spricht direkt einen Rechner im Netz an um sich bei ihm einzuloggen. Die Systax dazu ist
X :0.0 -query HostnameJetzt wird der Server 0 gestartet, seine gesammte Konfiguration übernimmt aber der xdm des Rechners Hostname. Der Rechner, auf dem wir diesen Befehl gestartet haben dient also nur als X-Terminal für den unter Hostname angegebenen Rechner.
Die zweite Methode (INDIRECT) geht einen anderen Weg. Sie frägt einen Rechner nicht nach dem Login-Fenster, sondern nach einer Liste von bekannten Servern, die den xdm-Dienst (aso den Dienst sich graphisch einloggen zu können) anbieten. Der gefragte Rechner startet jetzt diese Auswahlliste (den sogenannten CHOOSER) und der aufrufende Rechner kann sich aus dieser Liste aussuchen, wo er sich einloggen will. Um diese Methode anzuwenden lautet der Befehl:
X :0.0 -indirect HostnameDie dritte Methode ist schließlich ein Broadcast, der ins lokale Netz ausgesandt wird, um einen Rechner oder CHOOSER zu bekommen. In diesem Fall wird kein Rechnername angegeben, sondern einfach nur ein
X :0.0 -broadcast
Statt dem ersten zu startenden Server kann bei jedem der drei Methoden auch ein zweiter, dritter, usw gestartet werden, was dann statt der Angabe :0.0 entsprechend die Angaben :1.0, :2.0 usw. erfordert.