Skorzystaj z NOPASSWDdyrektywy
Możesz użyć NOPASSWDdyrektywy w swoim /etc/sudoerspliku .
Jeśli Twój użytkownik jest wywoływany, usera host jest nazywany, hostmożesz dodać te linie do /etc/sudoers:
user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot
Umożliwi to użytkownikowi useruruchamianie żądanych poleceń hostbez wprowadzania hasła. Wszystkie pozostałe sudopolecenia ed nadal będą wymagać hasła.
Polecenia określone w sudoerspliku muszą być w pełni kwalifikowane (tj. Przy użyciu bezwzględnej ścieżki do polecenia do uruchomienia), jak opisano na sudoersstronie man . Podanie ścieżki względnej jest uważane za błąd składniowy.
Jeśli polecenie kończy się znakiem końcowym /i wskazuje na katalog, użytkownik będzie mógł uruchomić dowolne polecenie w tym katalogu (ale nie w żadnym z jego podkatalogów). W poniższym przykładzie użytkownik usermoże uruchomić dowolne polecenie w katalogu /home/someuser/bin/:
user host = (root) NOPASSWD: /home/someuser/bin/
Uwaga: Zawsze używaj polecenia visudodo edycji sudoerspliku, aby upewnić się, że nie zablokujesz się w systemie - na wypadek, gdyby przypadkowo zapisałeś coś niepoprawnego do sudoerspliku. visudobędzie zapisać zmodyfikowany plik do tymczasowej lokalizacji, a tylko zastąpić prawdziwego sudoerspliku, jeśli zmodyfikowany plik może być analizowana bez błędów.
Używanie /etc/sudoers.dzamiast modyfikowania/etc/sudoers
Alternatywnie do edycji /etc/sudoerspliku możesz dodać dwie linie do nowego pliku /etc/sudoers.dnp /etc/sudoers.d/shutdown. Jest to elegancki sposób oddzielania różnych zmian sudopraw, a także pozostawia oryginalny sudoersplik nietknięty dla łatwiejszych aktualizacji.
Uwaga: Ponownie użyj polecenia visudodo edycji pliku, aby upewnić się, że nie zablokujesz się w systemie:
sudo visudo -f /etc/sudoers.d/shutdown
Zapewnia to również automatycznie prawidłowe ustawienie właściciela i uprawnień nowego pliku.
Jeśli sudoersjest pomieszany
Jeśli nie używałeś visudodo edycji plików, a następnie przypadkowo pomieszałeś /etc/sudoerslub pomieszałeś plik /etc/sudoers.d, zostaniesz zablokowany sudo.
Rozwiązaniem może być naprawa plików za pomocą, pkexecktóra jest alternatywą dla sudo.
Aby naprawić /etc/sudoers:
pkexec visudo
Aby naprawić /etc/sudoers.d/shutdown:
pkexec visudo -f /etc/sudoers.d/shutdown
Jeśli własność i / lub uprawnienia są niepoprawne dla dowolnego sudoerspliku, plik zostanie zignorowany, sudowięc możesz również zostać zablokowany w tej sytuacji. Ponownie możesz użyć tego pkexecdo naprawy.
Prawidłowe uprawnienia powinny wyglądać tak:
$ ls -l /etc/sudoers.d/shutdown
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown
Użyj pkexectego w celu ustalenia własności i uprawnień :
pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown