X-Window System - X11

Grafik-Server und Client für Linux-Fenster

X-Window ist ein System aus Netzwerk-Protokoll und Software, welches auf allen gängigen Linux-Systemen zur Darstellung von Programm-Fenstern und des gesamten Desktop verwendet wird. Das X-Window-System arbeitet mit verteilten Rollen nach dem Client-Server Prinzip. Daraus ergeben sich viele praktische Vorteile.
Server Dienste im Hintergrund, SSH-Server
X-Windows Kurze Vorstellung des X11-Sytsems
Client-Server X11 arbeitet (auch am eigenen PC) mit verteilten Rollen
Anwendung X11 auf Linux und Windows, Firewall, Fernsteuerung (mit SSH)
Trash Müll mit Fernsteuerung entleeren
Linux - Linux Fernsteuerung eines entfernten Linux-PC vom eigenen Linux-PC
Windows - Linux Fernsteuerung eines entfernten Linux-PC vom eigenen Windows-PC
Links Ausgewählte Links zum Thema 'X-Windows'

X-Windows System

Das X-Window-System bildet heute die Grundlage für die Darstellung von Programm-Fenstern inkl. des gesamten grafischen Desktop auf allen gängigen Linux-Systemen.

Alle gängigen Linux Arbeits-PC bieten natürlich einen grafischen Desktop. Linux-AnwenderInnen haben die Auswahl unter mehreren Desktop-Programmen.
Praktisch alle Linux Desktop-Programme setzen auf einem X-Server auf.
X11 gibt allerdings kein Design vor, deshalb sehen die Linux-Bildschirme oft sehr verschieden aus. Von aufwändigen Spielereien mit 3D-Effekten, transparenten 'Plasma'-Effekten bis zu extrem spartanischer Minimal-Grafik ist alles möglich.
Eine besondere Eigenschaft von X11 ist die Organisation als Client-Server-System:

An einem X11-Server können sich mehrere User (Clients) anmelden: Am Monitor hat zwar nur 1 User Platz, über das Netzwerk können sich jedoch beliebig viele andere User an einem Linux-PC anmelden.

X11 ermöglicht auf diese Weise einen 'echten' gleichzeitigen MultiUser-Betrieb, die Fernsteuerung von Programmen oder ganzen Desktops und die gleichzeitige Verwendung unterschiedlicher Desktop-Programme.
Das X-Window System wurde 1984 am MIT entwickelt und erreichte 1987 die Version X11, die noch heute oft als Abkürzung für das System verwendet wird.
Bis 2003 war die Version XFree86 weit verbreitet, sie geriet jedoch in Lizenz-rechtliche Probleme.
Heute wird X11 von der XOrg Foundation betreut, der u.a. Hewlett Packard, IBM und Sun angehören.

X11 Client-Server

Aufgaben-Teilung

Das X11 System ist nach dem Client-Server-Prinzip organisiert:
An einem X11-Server können sich beliebig viele Clients anmelden.

Die Begriffe 'Client-Server' werden bei X11 oft (aber nicht immer) in genau umgekehrter Bedeutung verwendet. Das ist verwirrend, muss aber zur Kenntnis genommen werden. Achten sie darauf in Artikeln, Tipps und Hinweisen zu X11.

Aus intuitiver Sicht der AnwenderInnen bedient man selbst ein Client-Programm und steuert damit den Server-PC.
Aus technischer Sicht ist es genau umgekehrt:
Der X-Server (AuftragNehmer) bietet die Bedienungs-Elemente der steuernden PC: Monitor, Maus, Tastatur
Als X-Clients (AuftragGeber) agieren die gestarteten (Fenster)-Programme am gesteuerten PC.

Lokale Anmeldung

Wenn ein/e AnwenderIn (User) direkt am Monitor arbeitet, meldet sie/er sich normalerweise an (LogIn) und erhält dann den erwarteten grafischen Desktop.

Das Desktop-Programm hat sich dazu als Client am X11-Server des eigenen PC angemeldet (oder umgekehrt, wenn sie diese Version bevorzugen).
Die Verwendung von Netzwerk-Technik innerhalb des eigenen PC mag kompliziert erscheinen, dadurch wird X11 jedoch besonders flexibel.

Man kann die Komponenten ohne Änderung des Systems austauschen: Deshalb kann man an einem Linux-PC zwischen mehreren Desktop-Programmen wählen (ebenso wie man zwischen mehreren Browsern wählen kann).

Fern-Anmeldung

Client-Server-Verbindungen sind nicht nur auf 1 Paar beschränkt: Ein Server kann gleichzeitig mehrere Clients bedienen, ein Client gleichzeitig mehrere Server steuern.
Man kann sich daher am eigenen PC auch von jedem anderen PC des lokalen Netzwerks fern-anmelden.
Andere User können sich am eigenen Linux-PC alternativ oder zusätzlich über das Netzwerk anmelden.

Ein mit X11 arbeitender Linux-PC lässt sich gleichzeitig durch beliebig viele AnwenderInnen bedienen - die Anzahl ist nur durch die Prozessor-Leistung begrenzt. Linux ist ein 'echtes' MultiUsr-System.

Desktop-Programme

Das X11-Systm regelt nur die Grundfunktionen zur Darstellung und Steuerung von Fenstern. Das tatsächliche Aussehen hängt vom jeweils verwendeten (Desktop)-Programm ab.

Linux Arbeits-PC sind so konfiguriert, dass sie ohne weitere Maßnahmen mit einem vor-eingestellten (default) Desktop-Programm starten.

Bei der Anmeldung (LogIn) kann man jedoch unter allen installierten Desktop-Programmen wählen. Man kann z.B. für die direkte Arbeit am PC-Monitor ein Desktop-Programm mit aufwändiger 3D-Grafik wählen, für die Fernsteuerung über Netzwerk oder Internet jedoch ein schlankes, aber dafür schnelleres Desktop-Programm.

Gängige Desktop-Programme sind z.B.
Gnome, KDE (beide weit verbreitet, aber sehr aufwändig),
XFCE (guter Kompromiss)
FVWM, IceWM, TWM (minimalistisch)

Professionelle Linux-Server verzichten zu Gunsten der Leistung oft ganz auf X11, Desktop und Fenster-Programme. Derartige Computer sind nicht als Arbeits-PC vorgesehen, sondern konzentrieren sich auf das Angebot schneller Dienste im Netzwerk, z.B. → Webserver, → Datenbank-Server, → FileServer, MailServer, ...

Windows-User

sind häufig nur die Systeme eines Herstellers gewohnt und deshalb oft von den Eigenschaften und Möglichkeiten des X11 Systems verwirrt. Insbesondere diese Optionen sind gewöhnungs-bedürftig:

Auf Linux gibt es mehrere unterschiedliche Desktop-Programme, unter denen man wählen kann.

Auf Linux können gleichzeitig mehrere User arbeiten. Jede/r verwendet einen eigenen unabhängigen Desktop, mit Zugriff auf die eigenen privaten Daten.

Es ist möglich, auf den Desktop ganz zu verzichten und nur die gerade benötigten Programme in Fenstern zu öffnen. Diese Variante wird z.B. für schnelle Server verwendet, die mit SSH fern-gesteuert werden.

Thin Client

Die Verbreitung der preisgünstigen Thin-Client PC wird durch Linux und das X11-System sehr begünstigt.

Bei dieser und anderen ähnlichen Entwicklungen setzt man einen leistungsfähigen zentralen PC ein, der mit einer größeren Anzahl sehr einfach ausgerüsteter Minimal-PC zusammenarbeitet.

Derartige Systeme sind bei gleicher Leistung wesentlich preisgünstiger bzw. bieten bei gleichem Preis wesentlich mehr Leistung als eine Ansammlung herkömmlicher PC, deren Leistung ohnehin nur mehr zu einem geringen Prozentsatz nutzbar ist.

X11-Anwendung

Linux Arbeits-PC

Jeder Linux Arbeits-PC enthält sowohl X-Server als auch X-Client, da die Anzeige eines grafischen Desktop beide Komponenten erfordert. Zusätzlich ist immer mindestens 1 Desktop-Programm installiert, beliebig viele weitere lassen sich auf Wunsch installieren.

Die X11-Kommunikation über das lokalen Netzwerk oder über das Internet hängt nur von der Konfiguration der X-Komponenten sowie der beteiligten Firewalls ab:
Wenn es der X-Server zulässt, dann können sich Clients von beliebigen entfernten PC am eigenen Linux-PC anmelden.
Umgekehrt kann man sich selbst bei jedem anderen Linux-PC anmelden, wenn dieser eine X11-Fern-Verbindung zulässt.

Details zur grafischen Fernsteuerung von Linux-PC.

Linux-Server

sind oft ganz ohne X11 und ohne Desktop eingerichtet. Die Steuerung erfolgt dann ausschließlich über die Shell-Konsole, welche mit → SSH sehr effizient fern-gesteuert werden kann.

An einem derartigen Server ist überhaupt keine grafische Anmeldung möglich. Die spartanische Ausstattung betrifft jedoch nur die Server-Administration, nicht die gelieferten Dienste.

Für die Netzwerk-Dienste solcher Server steht besonders viel Leistung zur Verfügung. Sie können den Clients im Netzwerk u.a. sehr aufwändige Grafik anbieten, z.B. auf Webseiten.

Windows-PC

Auch auf Windows-PC kann man mittlerweile die Fenster-Programme entfernter Linux-PC in recht guter Qualität betreiben. Je nach Auffassung werden sie als X11-Client oder -Server bezeichnet. Man kann sich damit jedenfalls an einem entfernten Linux-PC grafisch anmelden und dessen Fenster-Programme ausführen.

Die Fenster von Linux-Programmen auf einem Windows-Desktop sind für Windows-User meist ein ungewohnter Anblick. Diese Programme arbeiten jedoch auf dem entfernten Linux-PC und können auch nur auf dessen Dateien zugreifen, nicht auf die Dateien des eigenen Windows-PC.

Beispiele mit dem Windows-Programm Xming

Windows-Server

Da die Betriebssysteme des immer noch größten IT-Unternehmens kein X11 verwenden, ist eine Fernsteuerung von Windows-PC mit X11 vorläufig nicht möglich.

Eine Alternative bietet → VNC: Mit diesem Programm-System (ebenfalls aus Server + Client) kann man PC aller gängigen Betriebssysteme grafisch fernsteuern.

Wenn man beide Möglichkeiten hat, ist X11 meistens überlegen:
Es gibt keine Probleme mit dem Refresh (bei einander überschneidenden oder abdeckenden Fenstern).
Man kann am entfernten PC alle Sonderzeichen einsetzen, die von VNC teilweise abgefangen werden.

Firewall

X11 kommuniziert normalerweise auf dem Standard-→ Port 6000. Das bedeutet: Am Arbeits-PC (wo X11-Fenster angezeigt werden) muss Port 6000 freigegeben sein.

Für ein Firewall-Programm stellt X11 ein schwieriges Problem dar, da Client und Server hier in vertauschten Rollen auftreten:
Der X-Server (AuftragNehmer) bietet die Bedienungs-Elemente: Monitor, Maus, Tastatur
Als X-Clients (AuftragGeber) agieren die gestarteten (Fenster)-Programme.
Beide Komponenten befinden sich daher aus Sicht des Firewalls auf umgekehrten Seiten wie alle anderen Client-Server-Programme.

Man kann den Port 6000 im eigenen lokalen Netzwerk freigeben, wenn man das (in sehr kleinen Unternehmen) für vertrauenswürdig hält.

In allen größeren Netzwerken und im Internet ist die freie Durchlässigkeit von X11 jedoch ein nicht akzeptables Sicherheits-Problem:
Die X11-Kommunikation ist standardisiert. Daher ist es einfach, eine Verbindung zwischen X-Client und X-Server am eigenen Linux-PC abzuhören und fast beliebig zu beeinflussen.
Aus diesem Grund wird die Verwendung von X11 von den Firewalls aller größerer Netzwerke blockiert.
Eine Alternative bietet die sichere verschlüsselte Übertragung der X11-Kommunikation über SSH.

SSH

Das → SSH-Protokoll bietet die sichere verschlüsselte Übertragung beliebiger Daten.
Auch X11-Daten lassen sich mit SSH sicher transportieren.

Auf diese Weise ist es möglich, Linux-Fenster und sogar ganze Desktops sicher über beliebige Strecken zu übertragen. Die im Internet erreichbare Geschwindigkeit ist jedoch weit geringer als im lokalen Netzwerk über Port 6000. Man muss zur 'sicheren' grafischen Verbindung mit einem entfernten Linux-PC einige Geduld aufbringen.

Darüber hinaus darf man das System nicht überfordern, denn bei langen Wartezeiten werden viele Zeitgrenzen (Timeouts) wirksam.

In der Praxis ist es venünftig, mit SSH+X11 einzelne ausgewählte Fenster-Programme auf entfernten Linux-PC zu betreiben.

Die sichere Fernsteuerung eines ganzen Desktop überfordert jedoch meist die technische Kapazität. Immerhin kann man versuchen, einen besonders schlanken und daher schnellen Desktop zu verwenden, z.B. TWM.

Unter Verwendung von X11+SSH ist es möglich, Fenster-Programme jedes entfernten Linux-PC zu steuern, der dies zulässt.

Trash

Bei Vewendung eines kompletten Linux Desktop kann man einen gefüllten Mülleimer kaum übersehen. Dort können sich daher nur selten größere Mengen an Daten-Müll ansammeln. Wenn man (z.B. bei X-11 Fernsteuerung) nur einzelne Programm-Fenster verwendet, dann wird kein Desktop und damit auch kein Mülleimer angezeigt. So kann man unabsichtlich enorm viel Speicherplatz mit gelöschten Dateien besetzen...

User-Trash

Jeder Linux-User verwaltet seinen eigenen Müll. Der Trash befindet sich normalerweise hier:
/home/user/.local/share/Trash/files
(ersetzen sie user durch einen beliebigen User-Namen).

Root-Trash

Der Daten-Abfall des System-Administrators befindet sich normalerweise hier:
/root/.local/share/Trash/files
Nur der Administrator root hat Zugriff auf dieses Verzeichnis.

Abfall manuell löschen

Mit der Konsolen-Anweisung rm kann jeder User sein eigenes Trash-Verzeichnis leeren. Die Option -r wird benötigt, um auch Verzeichnisse inklusive der darin enthaltenen Dateien rekursiv zu löschen:
/home/user/.local/share/Trash/files# rm -r *
Wenn keine disk-quota zur Begrenzung des Speicherplatzes verwendet werden, dann können nachlässige User enorme Mengen an gelöschten Dateien ansammeln.

Automatische Entsorgung

Man kann ein Shell-Script oder ein Perl Script-Programm verwenden, um regelmäßig (z.B. jeden Sonntag) den Abfall aller User zu löschen.
Nach dem Ablauf des Programms ist allerdings ausgeschlossen, dass ein User irrtümlich gelöschte Dateien wieder reaktiviert.


XHTML CSS