Angenommen, Sie installieren eine Desktop-Umgebung, z. B. Ubuntu oder Debian. Sie können das System herunterfahren, indem Sie als normaler Benutzer auf eine Schaltfläche in Ihrem Systemmenü klicken. Sie müssen nicht zum Superuser wechseln, um dies zu erreichen.
Wenn ich jedoch in derselben Desktop-Umgebung ein Terminal (z. B. gnome-terminal) als normaler Benutzer öffne und tippe
shutdown -h now
Ich würde von aufgefordert werden
shutdown: need to be root
Die einzige Möglichkeit zum Herunterfahren besteht darin, dem Befehl ein Sudo voranzustellen.
Kann jemand erklären, warum das so ist?
Danke KC
linux
permissions
K.Chen
quelle
quelle
Antworten:
Die von K.Chen gestellte Frage lautet: Warum brauche ich Sudo-Berechtigungen, wenn ich dies über die CLI mache, obwohl ich solche Privilegien nicht benötige, wenn ich es über die GUI mache?
Der erste Teil der Antwort lautet, dass Benutzer, die Desktop-Umgebungen wie Gnome, KDE, Xfce, Mate, Cinnamon usw. entwerfen, versuchen, die Arbeit ihrer Benutzer zu vereinfachen, und das Herunterfahren und Neustarten konfigurieren, ohne dass Sudo-Anmeldeinformationen erforderlich sind. Dies impliziert im Übrigen, dass es eine Sequenz zum Herunterfahren geben muss, die nicht das Herunterfahren des Programms beinhaltet, für das Sudo-Berechtigungen erforderlich sind (daran führt kein Weg vorbei).
Ich weiß nicht im Detail, wie jedes DE es macht, aber ich weiß, dass es eine sanfte Möglichkeit gibt, Ihr System herunterzufahren oder neu zu starten / herunterzufahren / in den Ruhezustand zu versetzen, für die keine Root-Rechte erforderlich sind. Sie finden den Originalbeitrag in einem Beitrag im Arch Linux Forum . Im Wesentlichen kommt es darauf an, diese Befehle auszugeben:
Halt
Neustart
dbus-suspend
überwintern
Ich vermute, dass die GUI-Schaltflächen ungefähr diese Befehle verwenden. Um sicher zu sein, sollte man sich den Code ansehen, aber ich glaube, das ist eine sichere Sache.
quelle
Der Grund für diese Entwurfsentscheidung ist nicht technischer Natur (Sie haben möglicherweise einen nicht privilegierten
shutdown
Befehl oder benötigen ein Kennwort in der GUI).Wenn eine Desktop - Umgebung wird der Benutzer soll auf die Maschine physischen Zugriff haben. Dann ist es besser, ein sauberes Herunterfahren zuzulassen, als den Benutzer den Netzschalter drücken oder das Netzkabel abziehen zu lassen.
Bei Verwendung einer Shell kann der Benutzer ein Remote-Benutzer sein. Um ein Remote-Herunterfahren zu vermeiden, werden weitere Berechtigungen angefordert.
Dies sind keine Regeln, sondern nur Standardeinstellungen, die auf Annahmen basieren: Sie können einen lokalen Benutzer in einer Shell und einen Remotebenutzer mit einer Desktopumgebung haben. Wenn Sie das Standardverhalten auswählen möchten, können Sie Ihr System entsprechend konfigurieren.
quelle
Mit Sudo (Superuser do) kann ein Systemadministrator bestimmten Benutzern (oder Benutzergruppen) die Möglichkeit geben, einige (oder alle) Befehle als root auszuführen, während alle Befehle und Argumente protokolliert werden. Mit dem Befehl shutdown -h oder dem Befehl init 0 kann die Maschine ausgeschaltet werden. Für beide Befehle waren jedoch Root-Berechtigungen erforderlich.
Der Befehl, der sich in / sbin befindet, muss über Root-Berechtigungen verfügen, um ihn ausführen zu können. Um den Ort des Befehls zum Herunterfahren zu ermitteln,
Geben Sie die Abschaltung im Terminal ein.
Hoffe jetzt ist dein Zweifel klar :)
quelle