Wie fährt der Netzschalter den Computer ohne Root-Berechtigung herunter?

36

Wenn ich versuche, den Computer über eine Befehlszeile oder ein Terminal herunterzufahren, muss ich über Root-Berechtigungen verfügen:

amy@amy:~$ shutdown now
shutdown: Need to be root

und

amy@amy:~$ halt
halt: Need to be root

Beim Herunterfahren über die grafische Benutzeroberfläche, dh über die Schaltfläche zum Herunterfahren oder die Schaltfläche zum Herunterfahren der Hardware, werden Sie jedoch nicht aufgefordert, das Kennwort einzugeben. Was bedeutet das für ein Herunterfahren der grafischen Oberfläche und warum werden weder das Kennwort noch die Root-Berechtigungen benötigt?

Ich benutze Ubuntu 11.04 Natty.

Amyassin
quelle
1
Denn wenn ein Angreifer physischen Zugriff auf Ihren Computer hat, haben Sie bereits verloren. Der Versuch, zu verhindern, dass jemand in Reichweite der Box fast alles unternimmt, ist bestenfalls eine Verzögerungstaktik und führt bei den alltäglichen Benutzern meist zu mehr Unannehmlichkeiten als bei einem Angreifer. Die meisten Linux-Distributionen geben Ihnen eine Root-Eingabeaufforderung, wenn Sie genau aus diesem Grund beim Booten streng angesprochen werden.
Joseph Rogers

Antworten:

33

Der Hardware-Netzschalter löst ein ACPI-Ereignis aus, das acpid(der ACPI-Dämon) bemerkt und auf das reagiert. Fahren Sie in diesem Fall das System herunter, obwohl Sie es tun lassen könnten, was Sie wollen. Der ACPI-Dämon wird als Root ausgeführt und hat daher die Berechtigung, das System herunterzufahren. Desktop-Umgebungen (z. B. gdmfür Gnome) werden in der Regel auch als Root ausgeführt. Ich vermute, dass sie auf die gleiche Weise funktionieren - Sie haben keine Berechtigung zum Herunterfahren des Systems, können jedoch angeben, dass gdmSie möchten, dass es heruntergefahren wird, und dass es ausgeführt werden kann in deinem Namen

Michael Mrozek
quelle
Ist es sicher? "Sie könnten es tun lassen, was Sie wollen."
Amyassin
7
Um acpidetwas anderes als das zu tun, müssten Sie root sein, damit Sie bereits die Erlaubnis haben, unsichere Dinge zu tun. Es ist auch möglich, MAC-Systeme wie SELinux zum Schutz zu verwenden acpid, um die Funktionen einzuschränken, die sie ausführen dürfen, auch wenn sie als Root ausgeführt werden.
Warren Young
5
@amyassin Nun, um zu ändern, was es tut, benötigen Sie root-Rechte; Ein normaler Benutzer kann ihm nicht sagen, was er tun soll. Ist acpidaber konfigurierbar, kann es abhängig von den Hardware-Ereignissen, die es sieht, verschiedene Skripte ausführen (z. B. habe ich acpidmeinen Computer gesperrt, wenn ich den
Ein- /
7
@amyassen Wenn jemand physischen Zugang zu Ihrem Computer hat, ist es zu spät, um sich Gedanken über die Sicherheit zu machen. Wenn der Netzschalter kein ordnungsgemäßes Herunterfahren auslöst, kann er einfach am Netzkabel ziehen und ein nicht ordnungsgemäßes Herunterfahren verursachen.
Shadur
3
Diese "bösartige Software" müsste Root-Eigentumsrechte und SUID-Berechtigungen erhalten, um init mitzuteilen, dass sie beim Herunterfahren ausgeführt werden soll - und bis dahin haben Sie wiederum größere Probleme, die Sie sich Sorgen machen müssen als ein mögliches Herunterfahren.
Shadur
11

In Michaels Antwort wird die Systemfunktion bei Verwendung des Hardware-Netzschalters korrekt erläutert. Die meisten Desktop-Umgebungen verwenden sie jedoch dbusfür diesen Zweck, anstatt sie selbst auszuführen . GNOME verwendet beispielsweise dbus's, org.freedesktop.Hal.Device.SystemPowerManagement.Shutdownwenn auf die Schaltfläche zum Herunterfahren geklickt wird. Wenn dies gesendet wird, werden dbuseinige Überprüfungen durchgeführt, um festzustellen, ob der Benutzer, der die Nachricht sendet, berechtigt ist, ein Herunterfahren durchzuführen, und wenn dies der Fall ist, wird das System heruntergefahren.

Sie können dies mit emulieren dbus-send. Verwenden Sie zum Herunterfahren Ihres Systems beispielsweise Folgendes dbus:

dbus-send --system --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
Chris Down
quelle