Chciałbym wyłączyć shutdown
polecenie dla wszystkich użytkowników, nawet root, na instalacji Ubuntu Server.
Powodem, dla którego chcę to zrobić, jest upewnienie się, że nie mam zwyczaju wyłączania maszyny w ten sposób, ponieważ SSH na wielu maszynach produkcyjnych w tym samym czasie i nie robię tego chcesz przypadkowo zamknąć jedną z pozostałych maszyn, wpisując polecenie w niewłaściwym oknie.
Serwer, który chcę wyłączyć, wyłącza się tylko w programie VirtualBox na pulpicie Windows i używam go tylko do testowania lokalnego, więc nie ma problemu, jeśli nie mogę go zamknąć z wiersza poleceń.
Już trochę złagodziłem ten problem, upewniając się, że mam inne hasło do obrazu VirtualBox, ale oczywiście jeśli znajdę się w sudo
„oknie” na jednej z maszyn produkcyjnych, nadal mogę go przypadkowo zamknąć.
Moje pytania to:
- Jak wyłączyć polecenie zamknięcia systemu?
- Jeśli wyłączę polecenie zamknięcia, czy są jakieś konsekwencje, o których powinienem wiedzieć? W szczególności, czy wyłączy obsługę zamykania ACPI, co jest równoważne z naciśnięciem przycisku zasilania na fizycznej maszynie? Czy może to wpłynąć na inne ogólne aplikacje?
Aby uzyskać informacje, używam tego obrazu VirtualBox do testowania skryptów powłoki, uruchamiania Tomcat i Java i tego typu rzeczy.
Odpowiedzi:
Jeśli zwykle uruchamiasz komendę
sudo shutdown
zamiastsudo /sbin/shutdown
, możesz po prostu ustawić globalny alias powłoki dla „shutdown”, aby zamiast tego wysłać wiadomość do terminala. Prawdziwy plik wykonywalny nadal będzie dostępny dla wszystkich innych celów.źródło
alias shutdown=sl
) nie będzie miał żadnego wpływu na argumenty sudo. W Zsh możesz zdefiniować aliasy, które pasują do argumentów, ale myślę, że nie w bash. Możeszsudo
użyć aliasu do skryptu powłoki, który odmawia wykonania czegokolwiek, jeśli pierwszym argumentem jestshutdown
.Znacznie lepszym rozwiązaniem tego problemu jest instalacja Molly-Guard programu na polach ty nie chcesz wyłączenia, zamiast próbować szkolić się nie uruchomić wyłączył.
Typowa konfiguracja polega na tym, że prosi o wpisanie nazwy hosta komputera, aby potwierdzić, że naprawdę jesteś na dobrej.
Możliwe jest dodawanie nowych skryptów do
/etc/molly-guard/run.d
(jak udokumentowano na stronie podręcznika , pliki skryptów muszą być zgodne z nazwami oczekiwanymi przezrun-parts
.Jeśli naprawdę chcesz wyłączyć
shutdown
(a to taki dziwny pomysł), po prostu zróbnastępnie, jeśli musisz go użyć, chmod go z powrotem do 0755.
źródło
Aby wyłączyć komendę zamykania, po prostu spraw, by plik binarny nie był wykonywalny, tzn.
sudo chmod a-x /sbin/shutdown
Również nie sądzę, że wpłynie to na jakąkolwiek inną metodę zamykania, ponieważ jak mówi wpis man dotyczący zamykaniawięc każde inne polecenie / skrypt może to zrobić nawet po wyłączeniu polecenia shutdown, na przykład nadal mogę zamknąć system za pomocą shutdown z menu GNOME. Nadal możesz zrestartować komputer z wiersza poleceń, używając polecenia restartu
źródło
shutdown
Komenda jest/sbin/shutdown
. Możesz to wyłączyć, wykonując następujące czynności:Ale : Oznacza to, że prawie żadna z typowych metod zamykania systemu nie będzie działać. Wyłączenie gnoma na mojej maszynie testowej dla tej odpowiedzi powoduje, że po prostu wylogowuje cię i wrzuca z powrotem do GDM.
Jeśli chcesz później zamknąć system, musisz to zrobić
Wyłączenie „Wyłączenie” wpłynie na każdą aplikację, która używa polecenia do czegokolwiek. Ponieważ
init 0
nie jest to zalecany sposób zamykania systemu, wszystkie programy, które muszą zamknąć system, korzystająshutdown
z niego, co już nie będzie działać.Aplikacje mogą również zgłaszać wyjątki ze względu na brakujący plik lub plik, który nie jest wykonywalny , co może spowodować awarię, nawet jeśli zamknięcie nie jest konieczne. Jest to przypadek, który można obejść, przenosząc w to miejsce jakiś plik binarny, najlepiej wykonywalny (nie skrypt powłoki - to nie zadziała). Na przykład:
Dzieje się tak po tym, jak bezpiecznie usunąłeś oryginał.
Teraz wszystko to jest dość zuchwałe i odradzam to z powodów przedstawionych w komentarzu João Pinto. Ale nie powstrzymam cię przed zrobieniem tego. :-)
Nie tylko wykonuj kopię zapasową / sbin / shutdown, ale także przygotuj plan odzyskiwania na wypadek, gdyby spowodował jakiekolwiek problemy. Nie rób tego na przykład na serwerze, do którego nie możesz się dostać. I przetestować plan naprawczy wcześniej, przy założeniu, że system nie uruchamia się w ogóle (będzie uruchomić oczywiście - Przetestowałem go - ale proszę być po bezpiecznej stronie).
źródło
Myślę, że powinno być inne rozwiązanie, serwery powinny mieć politykę ssh, aby wyłączyć zamykanie i inicjować 0 przez ssh, lub musi być wyświetlone specjalne okno dialogowe na konsoli jak w Windows, aby wprowadzić „dlaczego” i specjalne „hasło zamknięcia” . W tym celu przycisk zasilania powinien być chroniony hasłem na serwerze.
W tej chwili używamy „fizycznego przełącznika kluczykowego = 4Euro” zamiast przycisku.
źródło
Chcę wyłączyć
shutdown
polecenie.dzieje się tak dlatego, że jeśli ktoś próbuje użyć tego polecenia, to też nie może
teraz nikt nie będzie mógł używać polecenia zamykania.
wyświetli komunikat, że komenda nie została znaleziona, zainstaluj ją.
Dodaj wiersz na końcu bash.bashrc
jeśli chcesz to z powrotem (włączone). po prostu skopiuj to z powrotem
źródło