Kiedy instalujemy / usuwamy / aktualizujemy pakiety lub dokonujemy jakichkolwiek zmian, które wymagają uprawnień administratora, pojawia się monit o hasło administratora, który ma sudo
uprawnienia - dzieje się to zarówno poprzez GUI, jak i terminal.
Jeśli jednak spróbujemy zamknąć i uruchomić ponownie za pośrednictwem terminala, narzeka, że musimy root
:
$ reboot
reboot: Need to be root
$ shutdown now
shutdown: Need to be root
Ale nigdy nie jesteśmy proszeni o hasło, gdy wykonujemy te czynności za pomocą koła zębatego w prawym górnym rogu.
Dlaczego jest taka rozbieżność?
sudo
shutdown
restart
privileges
Aditya
źródło
źródło
sudo shutdown -h now
ale problem polegał na tym, że bez pozwolenia dostępu doshutdown
niego nigdy nie działa. Ponieważ gdzie / jak poprosi o hasło po naciśnięciu klawisza skrótu .. Mam nadzieję, że rozumiesz moją sytuację .. :)Odpowiedzi:
Wyłączenie koła zębatego sprawdza, czy możesz wyłączyć maszynę. Odbywa się to za pośrednictwem PolicyKit. W przypadku zamknięcia ta instrukcja w pliku
/usr/share/polkit-1/actions/org.freedesktop.consolekit.policy
jest sprawdzana:PolicyKit wyzwala
dbus-send
polecenie. W przypadku wyłączenia byłoby to:W tle działa demon z uprawnieniami administratora, który wywołuje dla ciebie polecenie zamknięcia.
Jeśli chcesz móc zamknąć maszynę „starym sposobem” za pomocą wiersza poleceń (
shutdown, reboot, halt, ...
), musisz dodać bit suid do tych poleceń. Pamiętaj jednak, że każdy w twoim systemie, który ma dostęp do powłoki, może wtedy zamknąć twój komputer.źródło
sudo visudo
, dodaj%sudo ALL = NOPASSWD: /sbin/shutdown, /sbin/poweroff, /sbin/halt, /sbin/reboot
, zapisz i wyjdź. W ten sposób ponowne uruchomienie wiersza polecenia będzie nadal wymagaćsudo reboot
, ale nie będziesz musiał wprowadzać hasła.Ubuntu to dystrybucja systemu operacyjnego GNU / Linux, który z kolei należy do rodziny systemów uniksowych - wspólnej architektury dla wielu nowoczesnych systemów operacyjnych.
Tradycyjnie Unix działał na komputerach mainframe. Centralne urządzenia komputerowe obsługujące dziesiątki lub setki użytkowników za pośrednictwem zdalnych terminali. Ponieważ wszyscy użytkownicy polegali na dostępności komputera mainframe, żaden pojedynczy użytkownik nie mógł wydać polecenia zamknięcia. Pomysł, który ma fundamentalne znaczenie dla architektury Uniksa - jądro systemu nigdy nie zainicjuje wyłączenia, chyba że odpowiednia funkcja zostanie wywołana przez proces administratora.
We współczesnych systemach komputerowych programiści podjęli pewne starania, aby wyłączenie było dostępne dla zwykłego użytkownika pulpitu. Powszechną techniką jest umożliwienie menedżerowi logowania, który zwykle działa w kontekście bezpieczeństwa użytkownika root, obsługi zamykania i ponownego uruchamiania. W takim przypadku powłoka graficzna wysyła do menedżera logowania żądanie wyłączenia komputera. Wiąże się to z wykorzystaniem komunikacji międzyprocesowej (IPC), zwykle za pośrednictwem usługi dbus.
Wyżej wymieniony zestaw zasad rozszerza ten proces, zapewniając ustandaryzowaną strukturę, dzięki której menedżer logowania (lub jakikolwiek program zapewniający usługę zamykania) może sprawdzić, którzy użytkownicy mogą spowodować zamknięcie, i za pomocą których administrator może odpowiednio skonfigurować te uprawnienia.
Niektóre środowiska pulpitu nie używają usług opartych na IPC, ale raczej zestaw programów pomocniczych zapewniających te same lub podobne funkcje. Te programy pomocnicze byłyby wywoływane za pomocą mechanizmów, pozwalających na przejście w kontekst administratora, takich jak sudo, suid lub mechanizm policykit podobny do sudo.
W każdym razie głupi tradycyjny program zamykający w powłoce nie działa w ten sposób. Wymaga to zobaczenia, że jest uruchamiany w kontekście superużytkownika.
źródło
Ponieważ Linux jest powszechnie używany jako serwer lub podobny element, a SSHing w Linuksie, nawet zwykły laptop Ubuntu, jest dość powszechny.
Chodzi o to, że możesz nie chcieć, aby osoby z dostępem SSH mogły go zamknąć, szczególnie gdy inni użytkownicy mogą z niego korzystać zdalnie. Ktoś z dostępem do GUI - cóż, i tak może go wyłączyć samodzielnie za pomocą fizycznego przycisku zasilania.
Ponadto zdalnie zalogowany użytkownik nie będzie mógł go ponownie włączyć.
źródło
Tylko jeśli jesteś jedynym zalogowanym. Jeśli są jeszcze inni użytkownicy (w tym użytkownicy konsoli), może być konieczne wprowadzenie hasła roota. To samo dotyczy OS X i nowszych wersji Windows.
Następujące polecenie:
Dlaczego
shutdown
polecenie nie sprawdza tylko, czy ktoś jest zalogowany? Szczerze mówiąc, wydaje się to bezcenną cechą. Mogę sobie wyobrazić, że czasami oszczędzałoby to czas, ale często preferowana jest spójna konsola. Nie chcę, aby polecenia czasami wymagały hasła po uruchomieniu, a czasem nie.Moje zaimki to On / On
źródło
sudo
hasło roota / użytkownika ani z innym użytkownikiem zalogowanym przez GDM, ani z innym użytkownikiem zalogowanym przez tty.Powód, dla którego nie musisz być rootem, aby zainicjować zamknięcie z GUI, jest w dużej mierze wygodą dla typowego użytkownika pulpitu. System wie , że jesteś użytkownikiem zalogowanym na konsoli, więc jeśli przypadkowo zamkniesz komputer, prawdopodobnie możesz go ponownie włączyć.
Użytkownik w powłoce może być bardzo dobrze zalogowany zdalnie, więc system wymaga zalogowania jako użytkownik root w celu wydania polecenia zamknięcia. Zapobiega to wyłączeniu go przez zwykłego użytkownika zalogowanego na serwerze, podczas gdy inni ludzie go używają, i choć niekoniecznie jest tam ktoś fizycznie, aby uruchomić komputer ponownie.
Powodem, dla którego zamknięcie nie wyświetla monitu GUI dla hasła superużytkownika, jest prawdopodobnie po prostu fakt, że nie ma tam żadnego prawdziwego narzędzia - jeśli jesteś na konsoli, gdzie pojawi się monit, możesz po prostu użyć trybu zamiast tego menu Wheeel. Jeśli chcesz mieć wiersz polecenia dotyczący hasła superużytkownika do zamykania systemu, jest ono już dostępne w „sudo shutdown”.
źródło
W systemie z wieloma użytkownikami ostatnią rzeczą, jakiej chcesz, jest zalogowanie się i możliwość losowego ponownego uruchomienia serwera w dowolnym momencie, dlatego wersja Reboot w wierszu poleceń jest poleceniem tylko dla superużytkownika, dlatego musisz być rootem lub mają prawa sudo.
Podobnie jak polecenia Halt i PowerOff.
źródło