X Displays und Zugriffskontrolle
CIP Index Up Left Right

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