Wie interagiert X11 mit dem Kernel / führt die Anmeldung durch?

14

Wie ich für die textbasierte Interaktion mit dem Linux-Kernel verstehe, initstartet getty(oder agetty) ein Programm, das eine Verbindung zu einem der TTY-Geräte unter herstellt /devund zur Eingabe eines Benutzernamens auffordert. Danach wird ein Programm aufgerufen login, das zur Eingabe des Benutzerpassworts auffordert und, falls es korrekt ist, die vom Benutzer bevorzugte Shell (z . B. bashoder csh) startet . Zu diesem Zeitpunkt interagiert bash über das TTY-Gerät mit dem Kernel.

Wie funktioniert dieser Anmeldevorgang für X11? Interagiert X11 mit dem Kernel über ein TTY?

allsey87
quelle

Antworten:

15

Die Shell verwendet ein TTY-Gerät (sofern es mit einem verbunden ist), um Benutzereingaben zu erhalten und Ausgaben zu erzeugen, und nicht viel mehr. Die Tatsache, dass eine Shell mit einem TTY verbunden ist, wird von getty(und von login) bestimmt; Meistens ist es der Shell egal, ob sie mit einem TTY verbunden ist oder nicht. Die Interaktion mit dem Kernel erfolgt über Systemaufrufe.

Ein X11-Server kennt sich nicht mit Anmeldungen aus (genau wie eine Shell). Der Anmeldevorgang in X11 funktioniert auf zwei Arten:

  • Entweder der Benutzer meldet sich am Terminal an und startet dann X (normalerweise mit startx).
  • oder ein X-Server wird mit einem "Display-Manager" gestartet, der den Benutzer zur Eingabe eines Anmeldenamens und eines Kennworts auffordert (oder zur Eingabe der erforderlichen Authentifizierungsinformationen).

Die Art und Weise, wie X11-Server Eingaben erhalten und Ausgaben produzieren, unterscheidet sich stark von einer Shell. Auf der Eingabeseite kennt X Geräte, die Shells nicht haben, beginnend mit Mäusen. Diese werden in der Regel direkt mit eigenen Treibern verwaltet. Sogar für Tastaturen hat X eigene Treiber, die die Handhabung des Kernels ergänzen (so wie ich es verstehe, verwendet X zum Beispiel unter Linux den TTY-Treiber, um unformatierte Eingaben von der Tastatur zu lesen, interpretiert diese jedoch unter Verwendung eines eigenen Treibers). Auf der Ausgabeseite steuert X Anzeigegeräte direkt, mit oder ohne Hilfe des Kernels und ohne ein TTY-Gerät zu durchlaufen.

X11 - Server auf vielen Systemen zu tun Verwendung TTY - Geräte aber mit dem Kernel zu synchronisieren: auf Systemen , die virtuelle Terminals unterstützen, X muss „Reserve“ der VT läuft es auf, und der Griff VT - Umschaltung. Es gibt ein paar andere Feinheiten auf dem Weg; Unter Linux optimiert X das TTY, um GPM zu deaktivieren (ein Programm, das die Verwendung von Mäusen im Textmodus ermöglicht). X kann auch eine VT teilen ...

Auf einigen Workstations gab es in der Vergangenheit nicht viel explizite Synchronisation mit dem Kernel. Wenn Sie nicht ausgeführt werden xconsole, werden möglicherweise Kernelmeldungen im „Textmodus“ oben auf Ihrem X11-Display angezeigt.

Stephen Kitt
quelle
2

Der Kernel hat absolut keine Vorstellung von einer Anmeldung oder davon, wer angemeldet ist - alles, was ihn interessiert, ist, dass Prozesse unter einer bestimmten Benutzer-ID ausgeführt werden (wer das ist, geht den Kernel auch nichts an!). Ein Anmeldeprogramm, sei es getty auf einem Terminal oder einem X11-Display-Manager, wird als root ausgeführt und verwendet dann setuid () und zugehörige Aufrufe, um eine Umgebung für die vom lokalen Resolver vorgeschlagene UID (NSS- und libc-Zeug - auch nicht Kernel-Geschäft) einzurichten für den Benutzer zu verwenden, der sich gerade authentifiziert hat.

Rackandboneman
quelle