Dlaczego `reboot` i` poweroff` działa w systemie Ubuntu 16.04 bez uprawnień superużytkowników?

10

Jest wiele pytań na temat tego, dlaczego shutdowni rebootwymagają uprawnień roota. Dostępnych jest również wiele dobrych odpowiedzi.

Ale jest coś, czego nie rozumiem : jeśli możliwość ponownego uruchomienia lub zamknięcia bez uprawnień roota w systemie wielu użytkowników jest bardzo złym pomysłem ... to dlaczego jest to możliwe w Ubuntu 16.04?

Kiedy piszę powerofflub rebootw terminalu i wciskam Enter, to naprawdę wyłącza się / restartuje!

To jest w porządku dla mnie, kiedy poweroffi rebootnie wymaga uprawnień administratora ... ale dlaczego suspenduprawnień roota potrzeba? Kiedy piszę suspendterminal i uderzam Enter, nie zawiesza się, zamiast tego blokuje się ... a kiedy biegnę pm-suspend, wymaga sudo.

Severus Tux
źródło
Powinno to być również możliwe w starszych wersjach, jeśli to skonfigurujesz, zrób to ( askubuntu.com/a/570969/158442 , zwróć uwagę na działania dla wielu sesji). Systemd robi to jednak domyślnie. Widoczny również w Arch Linux.
muru

Odpowiedzi:

3

Dla mnie oba poweroffnie rebootpotrzebują hasła do Ubuntu 16.04.

Jednak aby tak się stało, musiałem utworzyć konto użytkownika o nazwie na przykład „foo”, a następnie ssh do localhost jako ten użytkownik lub ja. Kiedy to robię, muszę się uwierzytelnić. Wygląda na to, że rozpoznaje innego użytkownika zalogowanego.

Na przykład otrzymuję tę wiadomość:

User foo is logged in on sshd.
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl reboot -i'.

Przypuszczalnie jest wystarczająco „sprytny”, aby zdać sobie sprawę, gdy w rzeczywistości zalogowany jest inny użytkownik.

(Zgadzam się z Tobą, że byłoby miło zawsze uwierzytelniać się jako root. Czasami żaden inny użytkownik nie jest zalogowany, ale w tle wykonuje się ważny proces wykonujący jakieś obliczenia).

Edycja: Właśnie spróbowałem. Jeśli jestem zalogowany jako foo, muszę się uwierzytelnić (należący do grupy sudo). Jeśli zrestartuję się, gdy foo nadal jest zalogowany, muszę pisać systemctl reboot -ibez hasła. Zakładam, że różnica polega na tym, że system wie, że jestem w grupie sudo.

Edycja 2: Jak zauważył Severus Tux, systemctl suspend -izachował się podobnie jak systemctl reboot -iw poprzedniej edycji.

Promień
źródło
Ach ... nie próbowałem tego. BTW czy polecenie zawieszenia działa na twoim komputerze? Muszę się upewnić, że to błąd
Severus Tux
Jeśli ssh do localhost i zawiesić, nie powiodło się. Pojawia się komunikat „-bash: suspend: nie można zawiesić powłoki logowania”.
Ray
Jeśli otworzę okno i spróbuję „zawiesić”, okno terminalu zawiesza się. :-) Niezbyt dobry znak ... Myślę, że to nie ma związku. W każdym razie dzięki za pytanie! Nigdy nie myślałem o próbowaniu siebie, ale twoje pytanie mnie zainteresowało. Nadal mam zwyczaj restartowania z sudo ... nie zauważyłem tej subtelnej zmiany.
Ray
Dziękuję Ci. Jak powiedziałeś o ponownym uruchomieniu, „systemctl suspend -i” również działa dobrze. rozważ dodanie tego do swojej odpowiedzi
Severus Tux
Ok! Prawdopodobnie powinienem dodać to wszystko za pomocą jednej wiadomości, ale za każdym razem, gdy próbowałem czegoś, powodowało to ponowne uruchomienie, więc musiałem zapisać to, co publikowałem ...
Ray