Ubuntu ist eine Distribution des GNU / Linux-Betriebssystems, das wiederum zur Unix-Systemfamilie gehört - eine gemeinsame Architektur für eine Reihe moderner Betriebssysteme.
Normalerweise lief Unix auf Großrechnern. Zentrale Computereinrichtungen, die Dutzende oder Hunderte von Benutzern über entfernte Terminals bedienen. Da alle Benutzer auf die Verfügbarkeit des Mainframes angewiesen waren, durfte kein einzelner Benutzer einen Befehl zum Herunterfahren ausgeben. Eine Idee, die für die Unix-Architektur von grundlegender Bedeutung ist: Der Systemkern initialisiert niemals ein Herunterfahren, es sei denn, die entsprechende Funktion wird von einem Superuser-Prozess aufgerufen.
In modernen Desktopsystemen haben Entwickler bestimmte Anstrengungen unternommen, um das Herunterfahren nur dem Desktop-Benutzer zur Verfügung zu stellen. Eine übliche Technik besteht darin, den Anmeldemanager, der normalerweise im Sicherheitskontext des Root-Benutzers ausgeführt wird, das Herunterfahren und den Neustart durchführen zu lassen. In diesem Fall fordert die grafische Shell den Anmeldemanager auf, den Computer herunterzufahren. Dies beinhaltet die Verwendung von IPC (Inter Process Communication), normalerweise über den dbus-Dienst.
Das oben erwähnte Policykit erweitert diesen Prozess um ein standardisiertes Framework, mit dem der Login-Manager (oder ein anderes Programm, das den Shutdown-Service bereitstellt) überprüfen kann, welche Benutzer einen Shutdown verursachen dürfen, und über das ein Administrator diese Berechtigungen konfigurieren kann.
Einige Desktop-Umgebungen verwenden keine IPC-basierten Dienste, sondern eine Reihe von Hilfsprogrammen, um dieselben oder ähnliche Funktionen bereitzustellen. Diese Hilfsprogramme werden über Mechanismen aufgerufen, die es ermöglichen, in den Superuser-Kontext zu wechseln, z. B. sudo, suid oder einen Policykit-Mechanismus, der sudo ähnelt.
In jedem Fall funktioniert das dumme traditionelle Shutdown-Programm auf der Shell nicht so. Sie müssen sicherstellen, dass es in einem Superuser-Kontext ausgeführt wird.
sudo shutdown -h now
Problem ist jedoch, dass die Eingabe ohne Zugriffsberechtigungshutdown
niemals funktioniert .. Hoffe, Sie verstehen meine Situation .. :)