Was ist der Unterschied zwischen dem Ausführen startx
und Starten Ihres Display Managers sudo service (display_manager) start
? Es passieren zwei verschiedene Ereignisse, daher bin ich gespannt auf den Unterschied hinter den Kulissen.
x11
display-manager
startx
Rohan
quelle
quelle
Antworten:
Die grafische Benutzeroberfläche auf herkömmlichen Unix-Systemen sowie auf den meisten modernen Unix-Systemen außer Mac OS X basiert auf dem X Window System . Eine Komponente, der X-Server, kommuniziert mit der Hardware (Anzeige- und Eingabeperipheriegeräte) und bietet grundlegende Grundelemente zum Anzeigen von Fenstern und zum Weiterleiten von Benutzereingaben. Andere Programme, sogenannte X-Clients, zeigen Fenster an und hören Benutzereingaben ab, indem sie mit dem X-Server kommunizieren.
Um mit der Hardware zu kommunizieren, benötigt ein X-Server möglicherweise spezielle Berechtigungen. Auf einigen Systemen ist der X-Server beispielsweise setuid root. Neuere Systeme versuchen zu vermeiden, dass der X-Server als Root ausgeführt wird, um die Sicherheit zu verbessern. Je nach System kann das Ausführen eines X-Servers auf der Systemkonsole auf bestimmte Benutzer oder auf Benutzer mit physischem Zugriff auf die Konsole beschränkt sein.
Der X-Server allein zeigt lediglich ein fest codiertes Hintergrundmuster und einen Mauszeiger an. Um etwas Nützliches zu tun, müssen einige Clients gestartet werden, normalerweise einschließlich eines Fenstermanagers .
Die normale Methode zum Ausführen einer GUI-Sitzung besteht darin, ein Sitzungsmanagerprogramm auszuführen, mit dem alle gewünschten Clients (Fenstermanager, Desktop-Widgets, Zwischenablage-Manager, wiederhergestellte Programme aus der vorherigen Sitzung des Benutzers usw.) gestartet werden. Der Sitzungsmanager muss nach dem X-Server gestartet werden, da er mit ihm interagiert. Jede Desktop-Umgebung verfügt über einen eigenen Sitzungsmanager. Nahezu jeder Fenstermanager kann auch als Sitzungsmanager verwendet werden, und zur Not kann ein Terminal, auf dem eine Shell ausgeführt wird, als minimalistischer Sitzungsmanager angesehen werden. Entscheidend ist, dass der Benutzer die Programme starten kann, die er ausführen möchte.
Es gibt zwei traditionelle Möglichkeiten, eine GUI-Sitzung zu starten:
xinit
Befehl ausführen . Dieser Befehl startet einen X-Server, startet dann einen Sitzungsmanager und wartet, bis der Sitzungsmanager beendet wird. dann wird der X-Server beendet. Auf diese Weise haben die Clientseite der Sitzung und der X-Server dieselbe Lebensdauer. Dasstartx
Programm ist ein kleiner Wrapperxinit
.Eine andere Möglichkeit, dies zu sehen, besteht darin, dass für eine grafische Anmeldesitzung eine grafische Oberfläche vorhanden sein muss und sich der Benutzer anmelden muss. Diese beiden Schritte können in beiden Reihenfolgen ausgeführt werden: Anmelden und Starten der GUI (
startx
Methode); oder starten Sie die GUI und melden Sie sich an (Display Manager-Methode).Andere Einstellungen sind ungewöhnlich, aber möglich. In einem Kiosk-Setup starten die Systemstart-Skripts beispielsweise einen X-Server und einen einzelnen Vollbild-Client. In einem Autologin-Setup führt der Display-Manager beim Booten einen Sitzungsmanager für den Standardbenutzer aus.
quelle
startx
undxinit
?Im Allgemeinen benötigt ein Unix-System root, um X zu starten (oder einen Display-Manager, der in X ausgeführt wird).
Wenn root ohne Display-Manager X startet, ist der aktuelle Benutzer der X-Sitzung root.
Mit einem Display-Manager startet root X und den Display-Manager, ermöglicht dann aber anderen Benutzern, Sitzungen in dieser Umgebung zu starten. Dies bedeutet, dass ein "normaler" Benutzer jetzt die Kontrolle übernehmen und alle Prozesse sicher ausführen kann, obwohl Root zum Starten von X benötigt wurde.
Root "besitzt" jedoch weiterhin die X-Sitzung. Ohne die Erlaubnis eines Benutzers (durch Hinzufügen dieses Benutzers zur entsprechenden Gruppe), wichtige wichtige Dinge wie Herunterfahren oder Neustart auszuführen, kann der Benutzer X nicht stoppen. Dies kann nur root tun. Dies ist manchmal auf einem Mehrbenutzersystem wichtig, auf dem Benutzer nicht plötzlich entscheiden müssen, den Computer neu zu starten, wodurch andere Sitzungen zerstört werden.
quelle
sudo service mdm stop
, um den Display-Manager zu stoppen. Gibt es eine Möglichkeit für mich, X einfach zu beenden? Übrigens muss ich nicht root sein, um X zu starten. Ist das nicht mehr erforderlich, um root zu sein, um X zu starten?startx
.