X Displays und Zugriffskontrolle
Displays und Zugriffskontrolle
Ein X-Server braucht mindestens
ein Display auf dem er die graphischen Ausgaben der clients ausgeben kann. Alle
Maschinen im CIP-Pool haben dazu genau
einen Graphikmonitor angeschlossen. Ein Displayname hat das Format
hostname:displaynumber.screennumber
Dabei ist hostname der normale
Rechnername. Die display- und screennummern müssen im
CIP-Pool auf Null gesetzt werden, da alle
Rechner nur ein Display haben.
Laufen Client und Server auf
demselben Rechner, sollte man als Display nur den Wert :0 angeben.
Dann wird vom Server automatisch der schnellste Transportweg gewählt.
Jede Anwendung braucht die Angabe eines Displays. Am einfachsten
tut man sich, wenn man die
Shell-Environmentvariable DISPLAY setzt. Man kann das Display
für einzelne Anwendungen umsetzen, indem man die
Option -display
benutzt.
Zugriffskontrolle
Natürlich ist nicht jeder client berechtigt auf jeden
Schirm zu schreiben - sonst könnte man ja seine Fenster auf
dem Schirm des Benutzers bzw. Rechners nebenan anzeigen. Es
gibt diverse Möglichkeiten der Zugriffskontrolle,
die im folgenden kurz erläutert werden sollen.
Eine ausführliche Behandlung erfährt das Thema in
man Xsecurity.
MIT-Magic-Cookie
Standardmäßig läuft die Zugriffskontrolle über die Datei
.Xauthority im Home jedes Benutzers. Dort wird vom
xdm oder vom X-Server beim
Startup ein zufällig erzeugter Schlüssel ("magic cookie") hinterlegt.
Beim Öffnen des Displays muß der client diesen key angegeben, den er aus
der Datei entnimmt. Wer auf diese Datei Zugriff hat, kann also
auch an das Display connecten. Deshalb muß sie unbedingt den
Dateimodus 600 haben.
Näheres in man Xau.
Es gibt ein Programm xauth,
mit dem man sich den Inhalt der Datei listen
lassen kann, neue keys einfügen oder alte löschen usw. Normalerweise
braucht man sich darum jedoch nicht zu kümmern.
Ein Nachteil ist, daß das Verfahren kompliziert wird, wenn man auf zwei
Rechnern verschiedene Homes hat. Man muß dann mit
xauth -merge
keys von einem .Xauthority in ein anderes kopieren.
xhost
Dies ist eine sehr primitive Art der Zugangskontrolle.
Mit xhost kann man die
Zugriffskontrolle auf sein
Display ganz oder teilweise außer Kraft setzen. Dazu gibt
man einen Rechner an, von dem aus unkontrollierte Zugriffe
erfolgen dürfen, d.h. ist ein Rechner in der xhost-Liste,
dürfen alle Prozesse ohne diese Kontrolle an den Server Aufträge verschicken,
also auch jeder andere Benutzer.
Das kann zum Abhören der Tastatur,
also dem Aushorchen von evtl. eingegebenen Passwörtern
mißbraucht werden. Deshalb sollte man den Befehl wenn überhaupt, dann
nur für kurz während des Starts eine Programms
verwenden, keinesfalls darf er im
Startup-Script stehen.
Mit xhost +hostname befreit man
einen Rechner von der Kontrolle, mit xhost
-hostname streicht man ihn wieder aus
der Liste. Niemals verwenden sollte man xhost + da dies die
Zugriffskontrolle völlig ausschaltet!
Jeder sollte einmal nur xhost ohne Parameter ausführen, um
zu sehen ob für irgendwelche Rechner die Kontrolle ausgeschaltet ist.
Systembelastung
Wenn man ein Display auf einen anderen Rechner schickt, müssen diese Daten
über das Rechnernetz. Die Datenmengen können je nach Anwendung
beträchtlich sein. Das ist kein Problem, wenn der Zielrechner auf
demselben Subnetz liegt.
Werden jedoch Daten quer über die Netze
verschickt, so wird der Server belastet, der die einzelnen Netze verbindet.
Im CIP-Pool verrichtet
diese Arbeit seit neuestem ein sehr leistungsstarker
cisco-Router;
andere Lehrstühle (insbesondere
außerhalb des Südgeländes) haben jedoch wesentlich schwächere
Netzanschlüsse - diese
sollte man möglichst nicht auf diese Weise überlasten.
- Siehe auch:
- Client-Server-Prinzip (Funktionsweise von X)
-
Aufbau von Rechneradressen im Internet