W jaki sposób przycisk zasilania wyłącza komputer bez uprawnień administratora?


36

Kiedy próbuję zamknąć komputer z wiersza polecenia lub terminala, muszę mieć uprawnienia roota:

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

i

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

ale podczas zamykania za pomocą graficznego interfejsu użytkownika, tj. przycisku zamykania lub przycisku zamykania sprzętu, nie jestem proszony o podanie hasła. Co powoduje to zamknięcie interfejsu graficznego i dlaczego nie potrzebuje hasła ani uprawnień roota?

Używam Ubuntu 11.04 Natty.



1
ponieważ jeśli atakujący ma fizyczny dostęp do twojego komputera, już go straciłeś. Próba uniemożliwienia komuś, kto znajduje się w zasięgu ręki od pudełka, zrobienia prawie wszystkiego, jest w najlepszym razie taktyką opóźniającą i przeważnie powoduje więcej dyskomfortu dla codziennych użytkowników niż dla atakującego. Większość dystrybucji Linuksa wyświetli monit o rootowanie, jeśli zostanie przemówiony surowo podczas uruchamiania właśnie z tego powodu.
Joseph Rogers

Odpowiedzi:


33

Sprzętowy przycisk zasilania wyzwala zdarzenie ACPI, które acpid(demon ACPI) zauważa i reaguje; w takim przypadku zamykając system, chociaż możesz zrobić to, co chcesz. Demon ACPI działa jako root, więc ma uprawnienia do zamknięcia systemu. Środowiska pulpitu (np. gdmDla Gnome) zwykle działają również jako root, więc podejrzewam, że działają w ten sam sposób - nie masz uprawnień do zamykania systemu, ale możesz powiedzieć, gdmże chcesz go zamknąć i może to zrobić na w Twoim imieniu


czy to jest bezpieczne? „możesz zrobić to, co chcesz”.
amyassin,

7
Aby acpidzrobić coś innego niż już, musisz być rootem, aby mieć już uprawnienia do robienia niepewnych rzeczy. Możliwe jest również użycie systemów MAC, takich jak SELinux, do ochrony acpid, ograniczając czynności, które wolno im robić, nawet gdy działają jako root.
Warren Young,

5
@amyassin Cóż, aby zmienić to, czego potrzebujesz, potrzebujesz uprawnień roota; normalny użytkownik nie może powiedzieć, co ma robić. Ale acpidjest konfigurowalny, może uruchamiać różne skrypty w zależności od zdarzeń sprzętowych, które widzi (na przykład mam acpidzablokowany komputer po naciśnięciu przycisku zasilania)
Michael Mrozek

7
@amyassen Jeśli ktoś ma fizyczny dostęp do komputera, jest już za późno, aby martwić się bezpieczeństwem - jeśli przycisk zasilania nie wyzwoli płynnego wyłączenia, może po prostu wyciągnąć przewód zasilający i spowodować niefortunne wyłączenie.
Shadur,

3
Wspomniane „złośliwe oprogramowanie” musiałoby uzyskać uprawnienia roota i uprawnienia SUID, aby powiedzieć initowi, aby dokonał zamknięcia - i ponownie, zanim dojdzie do tego momentu, będziesz miał większe problemy do zmartwienia niż ewentualne zamknięcie.
Shadur,

11

Odpowiedź Michaela poprawnie omawia funkcję systemu podczas korzystania ze sprzętowego przełącznika zasilania, ale większość środowisk komputerowych faktycznie używa dbustego celu, a nie robi to samodzielnie. Na przykład GNOME używa dbus„s” org.freedesktop.Hal.Device.SystemPowerManagement.Shutdownpo kliknięciu przycisku zamykania. Kiedy jest wysyłany, dbussprawdza niektóre, czy użytkownik wysyłający wiadomość jest upoważniony do zamknięcia, a jeśli tak, to wyłącza system.

Możesz to naśladować za pomocą dbus-send. Na przykład, aby zamknąć system za pomocą dbus, użyj czegoś takiego:

dbus-send --system --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.