Jak uruchomić konkretne polecenia sudo bez hasła?

192

Na jednej konkretnej maszynie często muszę uruchamiać polecenia sudo co jakiś czas. Nie mam problemu z wprowadzeniem hasła na sudo w większości przypadków.

Jest jednak trzy% poleceńsudo chcę uruchomić bez podawania hasła :

  • sudo reboot
  • sudo shutdown -r now
  • sudo shutdown -P now

Jak mogę wyłączyć te polecenia z ochrony hasłem do sudo ?

    
zadawane Z9iT 03.07.2012, 10:31
źródło

1 odpowiedź

257

Użyj dyrektywy NOPASSWD

Możesz użyć dyrektywy NOPASSWD w swoim pliku /etc/sudoers .

Jeśli Twój użytkownik nazywa się user , a twój host nazywa się host , możesz dodać te linie do /etc/sudoers :

user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot

Umożliwi to użytkownikowi user uruchomienie pożądanych komend na host bez wpisania hasła. Wszystkie inne sudo polecenia ed nadal będą wymagać hasła.

Polecenia określone w pliku sudoers muszą być w pełni kwalifikowane (tj. przy użyciu bezwzględnej ścieżki do uruchomienia komendy), jak opisano na stronach sudoers strona podręcznika . Dostarczenie ścieżki względnej jest uważane za błąd składniowy.

Jeśli polecenie kończy się ciągiem znaków / i wskazuje na katalog, użytkownik będzie mógł uruchomić dowolne polecenie w tym katalogu (ale nie w żadnym z podkatalogów w nim zawartych). W poniższym przykładzie użytkownik user może uruchomić dowolne polecenie w katalogu /home/someuser/bin/ :

user host = (root) NOPASSWD: /home/someuser/bin/

Uwaga: zawsze używaj polecenia visudo , aby edytować plik sudoers , aby upewnić się, że nie zablokujesz się z systemu - na wypadek, gdybyś przypadkowo zapisał coś niepoprawnego w pliku sudoers . visudo zapisze zmodyfikowany plik w tymczasowej lokalizacji i tylko zastąpi prawdziwy plik sudoers , jeśli zmodyfikowany plik może zostać przeanalizowany bez błędów.

Używanie /etc/sudoers.d zamiast modyfikowania /etc/sudoers

Zamiast edytować plik /etc/sudoers , możesz dodać dwie linie do nowego pliku w /etc/sudoers.d np. %kod%. Jest to elegancki sposób oddzielania różnych zmian od praw /etc/sudoers.d/shutdown , a także pozostawia oryginalny plik sudo nietknięty dla łatwiejszych aktualizacji.

Uwaga: Ponownie użyj polecenia sudoers , aby edytować plik, aby się upewnić, że nie zablokujesz się z systemu:

sudo visudo -f /etc/sudoers.d/shutdown 

To również automatycznie zapewnia prawidłowe ustawienie właściciela i uprawnień nowego pliku.

Jeśli visudo jest pomieszany

Jeśli nie użyłeś sudoers do edycji plików, a następnie przypadkowo pomieszałeś visudo lub zawiniłeś plik w /etc/sudoers , to zostaniesz zablokowany z /etc/sudoers.d .

Rozwiązaniem może być naprawa plików za pomocą sudo , które jest alternatywą dla pkexec .

Aby naprawić sudo :

pkexec visudo

Aby naprawić /etc/sudoers :

pkexec visudo -f /etc/sudoers.d/shutdown

Jeśli prawa własności i / lub uprawnienia są niepoprawne dla pliku /etc/sudoers.d/shutdown , plik zostanie zignorowany przez sudoers , więc możesz również zostać zablokowany w tej sytuacji. Ponownie, możesz użyć sudo , aby to naprawić.

Poprawne uprawnienia powinny być następujące:

$ ls -l /etc/sudoers.d/shutdown 
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown

Użyj pkexec , aby naprawić własność i uprawnienia :

pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown
    
odpowiedział mgd 03.07.2012, 10:43
źródło

Przeczytaj inne pytania na temat tagów