Benötigt das Herunterfahren / Neustarten Root-Berechtigungen unter Linux?

2068
boh

Warum muss ich root sein, um meinen Computer vom Terminal aus herunterzufahren / neu zu starten? Wenn Sie dies über das GUI-Menü tun, sind keine Root-Berechtigungen erforderlich.

6
Das hängt von den Einstellungen Ihres Computers ab. Warum möchten Sie vom Terminal herunterfahren, anstatt die GUI zu verwenden? vor 11 Jahren 0
Von welchem ​​Terminal sprichst du? Haben Sie einen "Green Screen" Anschluss an einer RS-323-Leitung? Es gibt kein "Terminal". Kaz vor 11 Jahren 0

4 Antworten auf die Frage

10
StreakyCobra

Normalerweise startet das Betriebssystem beim Start einen Dienst, der als Root ausgeführt wird und Desktop-Umgebungen einige Möglichkeiten bezüglich des Computers bietet. Normalerweise ist es entweder ConsoleKit oder systemd-logind.

In KDE können Sie beispielsweise Ihren Computer als normaler Benutzer von der Befehlszeile herunterfahren.

qdbus org.kde.ksmserver /KSMServer logout 0 0 0 

Dies ist möglich, da der KDE-Sitzungsmanager einen DBus-Dienst kontaktiert, der als Root ausgeführt wird. Wenn er aufgerufen wird, wird der shutdownBefehl mit Root-Berechtigungen ausgeführt.

Auf Systemen mit ConsoleKit können Sie Folgendes verwenden:

gdbus call -y -d org.freedesktop.ConsoleKit \ -o /org/freedesktop/ConsoleKit/Manager \ -m org.freedesktop.ConsoleKit.Manager.Stop 

Auf Systemen, die systemd-logind verwenden, verwendet das shutdownDienstprogramm bereits DBus und erfordert keine Berechtigungen.

Zusammenfassend können Sie Ihren Computer als normalen Benutzer herunterfahren, da die Desktop-Umgebung einen Dienst ausführt, der die Möglichkeit bietet, den Befehl shutdown [1] als root auszuführen.

[1] Tatsächlich führt der Dienst andere Maßnahmen aus, um sicherzustellen, dass die Desktop-Umgebung ordnungsgemäß heruntergefahren wird.

Der Session Manager wird niemals als root ausgeführt. Es kontaktiert ConsoleKit oder systemd-logind. grawity vor 11 Jahren 1
Meine Antwort ist sicherlich nicht vollständig oder genau, ich empfehle Ihnen, sie zu korrigieren! StreakyCobra vor 11 Jahren 1
@StreakyCobra bedeutet [1], dass der Befehl 'shutdown' im Terminal nicht empfohlen wird, wenn eine Desktop-Umgebung ausgeführt wird? boh vor 11 Jahren 0
Das hängt von der DE ab, ist aber sicherer zu vermeiden. Einige DE speichern Ihre Sitzung vor dem Schließen (geöffnete Anwendungen, Arbeitsbereichskonfiguration, ...) oder erlauben Anwendungen mit ungespeicherten Werken, den Benutzer nach einer Aktion zu fragen, bevor Sie das System herunterfahren (wie hier [http://askubuntu.com) / Fragen / 86355 / Differenz-zwischen-Menü-Herunterfahren und Herunterfahren-h-jetzt)). StreakyCobra vor 11 Jahren 0
Das Problem bei dieser Antwort ist, dass die Möglichkeit zum Herunterfahren von Linux bei physischem Zugriff bereits vor Jahren bestand, bevor einige Linux-Distributionen dbus einführten. Und Sie können Linux herunterfahren, ohne angemeldet zu sein: als Nichtbenutzer, weniger als ein normaler Benutzer. Kaz vor 11 Jahren 2
Ich denke, die Frage ist mehrdeutig, weil sie auf zwei Arten verstanden werden kann: "Was sind die Gründe, um einen Root-Zugriff zum Herunterfahren eines Computers zu benötigen?" und "Warum ist ein Root-Zugriff über die Befehlszeile erforderlich, um einen Computer herunterzufahren, nicht jedoch über die GUI?". Ich habe auf den zweiten geantwortet. StreakyCobra vor 11 Jahren 0
Ich meinte den zweiten, tut mir leid, dass er mehrdeutig ist. boh vor 11 Jahren 0
1
Mikhail Kupchik

Stellen Sie sich vor, Ihr Computer ist ein gemeinsam genutzter Webhosting-Server, auf dem jeder Benutzer SSH-Zugriff erhält. In einem solchen Setup gibt es ungefähr 500 Benutzer pro Server.

Sollte jemand wirklich berechtigt sein, den gesamten Server neu zu starten, HTTP-Downloads zu unterbrechen, SSH-Sitzungen zu unterbrechen usw.?

Das war nicht die Frage. grawity vor 11 Jahren 0
Ja, das ist eine vernünftige Interpretation der Frage. SSH ist ein Beispiel für ein Terminal und bietet Benutzern, die noch nicht authentifiziert oder nicht als root authentifiziert sind, keine Methode zum Herunterfahren. Die Linux-Textkonsole bietet eine Möglichkeit zum Neustart für nicht angemeldete Benutzer sowie grafische Anmeldebildschirme. Kaz vor 11 Jahren 0
1
John Thomas

Some reasons from top of my head:

  • the command line variants can be scriptable, hence a malicious script can be injected and cause very nasty things (an DoS attack etc.).
  • GUI menu is safe: doesn't allow nasty things to happen (eg. forced reboot - throwing in the thin air everything)
  • GUI menu is simple: doesn't confuse the users with powerful admin options like verbose logging, optional message sending to all logged users, delayed shutdown, difference between Halt, maintenance mode etc.
  • GUI menu is lean and mean: doesn't work "differently" according with the system runlevels (0, 6 etc.) executing different scripts (eg. /sbin/shutdown) and/or according to different switches/options entered from the command line

HTH

X11 ist auch skriptfähig. grawity vor 11 Jahren 0
1
Kaz

Neben dem GUI-Menü können Sie Linux auch über die Textkonsole herunterfahren. Mit der GUI gemein ist, dass der Benutzer, der den Befehl ausgibt, fast sicher physischen Zugriff hat. (In Ausnahmesituationen, in denen dies nicht zutrifft, wie bei öffentlichen Kiosken, kann dies deaktiviert werden.)

Es kann nicht davon ausgegangen werden, dass der Benutzer einer beliebigen TTY-Sitzung physischen Zugriff hat. Es ist eine Form des Fernzugriffs. Es gibt keine Möglichkeit, ein Herunterfahren über eine beliebige TTY-Sitzung zu signalisieren, sei es ein lokales X-Terminal, ein tatsächliches Terminal an einer seriellen Leitung oder eine SSH-Sitzung. Sie müssen nachweisen, dass Sie über ein Privileg verfügen, das dem physischen Zugriff entspricht, indem Sie root werden.

Wenn nicht authentifizierte oder nicht privilegierte Benutzer das System remote neu starten könnten, wäre dies ein Sicherheitsproblem.

Genau wie bei der Fernanmeldung ist ein physisches Terminal (tatsächliche serielle Schnittstelle) eine Form des Fernzugriffs. Der Benutzer kann sich in einem anderen Gebäude oder in einem anderen Teil der Welt befinden (über Modem).

Ein grafischer Terminalemulator wie xterm ist nicht entfernt, aber das Betriebssystem weiß das nicht. Die Anwendung wird mit einem Pseudo-TTY implementiert . Dies ist ein virtualisiertes TTY-Gerät, das das Betriebssystem (zum größten Teil) nicht von der Realität unterscheidet. Wenn Sie sttyeine Xterm- oder SSH-Sitzung eingeben, werden Sie feststellen, dass Sie eine Baudrate wie 9600 oder 38400 haben und die Flusssteuerung von xon / xoff oder sogar cts / rts umschalten können. Pseudo-TTYs könnten theoretisch über ein spezielles Reboot-Signalisierungsprotokoll zwischen Master und Slave verfügen, das bei normalen TTYs ansonsten nicht verfügbar ist. Dies ist jedoch nicht der Fall. (Tatsächlich könnte ein Xterm remote sein, da es sich um eine X-Client-Anwendung handelt, die umgeleitet werden kann, um ihre Fenster auf einem Remote-X-Server zu erstellen.)

(Nicht sicher, worauf sich "das Terminal" in der Frage bezieht; in Linux gibt es so etwas nicht.)

Ich denke, der physische Zugang ist der wahre Grund. Personen mit physischem Zugriff können einfach den Schalter betätigen oder den Stecker ziehen oder den Computer zertrümmern. emory vor 11 Jahren 0