Skorzystaj z NOPASSWD
dyrektywy
Możesz użyć NOPASSWD
dyrektywy w swoim /etc/sudoers
pliku .
Jeśli Twój użytkownik jest wywoływany, user
a host jest nazywany, 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
uruchamianie żądanych poleceń host
bez wprowadzania hasła. Wszystkie pozostałe sudo
polecenia ed nadal będą wymagać hasła.
Polecenia określone w sudoers
pliku muszą być w pełni kwalifikowane (tj. Przy użyciu bezwzględnej ścieżki do polecenia do uruchomienia), jak opisano na sudoers
stronie 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 user
może uruchomić dowolne polecenie w katalogu /home/someuser/bin/
:
user host = (root) NOPASSWD: /home/someuser/bin/
Uwaga: Zawsze używaj polecenia visudo
do edycji sudoers
pliku, aby upewnić się, że nie zablokujesz się w systemie - na wypadek, gdyby przypadkowo zapisałeś coś niepoprawnego do sudoers
pliku. visudo
będzie zapisać zmodyfikowany plik do tymczasowej lokalizacji, a tylko zastąpić prawdziwego sudoers
pliku, jeśli zmodyfikowany plik może być analizowana bez błędów.
Używanie /etc/sudoers.d
zamiast modyfikowania/etc/sudoers
Alternatywnie do edycji /etc/sudoers
pliku możesz dodać dwie linie do nowego pliku /etc/sudoers.d
np /etc/sudoers.d/shutdown
. Jest to elegancki sposób oddzielania różnych zmian sudo
praw, a także pozostawia oryginalny sudoers
plik nietknięty dla łatwiejszych aktualizacji.
Uwaga: Ponownie użyj polecenia visudo
do 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 sudoers
jest pomieszany
Jeśli nie używałeś visudo
do edycji plików, a następnie przypadkowo pomieszałeś /etc/sudoers
lub pomieszałeś plik /etc/sudoers.d
, zostaniesz zablokowany sudo
.
Rozwiązaniem może być naprawa plików za pomocą, pkexec
któ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 sudoers
pliku, plik zostanie zignorowany, sudo
więc możesz również zostać zablokowany w tej sytuacji. Ponownie możesz użyć tego pkexec
do 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 pkexec
tego w celu ustalenia własności i uprawnień :
pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown