Sudo

Z Fedora Wiki

Artykuł w budowie
Potrzebne uzupełnienie o bardziej szczegółowe przykłady jak np.nadanie praw określonej grupie, nadanie praw do poszczególnych poleceń.

Podstawowa konfiguracja

Fedora, podobnie jak inne dystrybucje Linuksa posiada uprzywilejowanego użytkownika "root" oraz zwykłych użytkowników. "root" jest "superużytkownikiem", czymś w rodzaju Administratora w Windows.

Do codziennej pracy należy używać zwykłego konta utworzonego w trakcie pierwszego po instalacji uruchomienia systemu. Uprawnienia roota potrzebne są tylko do wykonywania czynności administratorskich i instalacyjnych.
Uprawnienia roota można uzyskać na dwa sposoby:

  1. sposób opisany w artykule konto roota (polecenie su)
  2. polecenie sudo

Polecenie sudo wymaga jednak odpowiedniego przygotowania.

Najprostsza konfiguracja: po zalogowaniu się na konto roota należy wykonać polecenie:
echo 'loginname ALL=(ALL) ALL' >> /etc/sudoers
gdzie "loginname" to nazwa zwykłego użytkownika.
UWAGA!
Plik /etc/sudoers można edytować bezpośrednio jednak aby uniknąć błędnych wpisów należy wykorzystywać do tego celu polecenie visudo. Polecenie to przy wychodzeniu z zapisem z trybu edycji sprawdza poprawność składni w pliku.

Polecenie visudo otwiera plik w edytorze vi, raczej nieprzyjaznym dla początkujących. Warto więc wcześniej poznać podstawy tego edytora.
Można także ustawić inny edytor np. bardziej przyjazne konsolowe edytory nano lub mcedit. W tym celu trzeba ustawić zmienną EDITOR np. export EDITOR=nano


Teraz można już wykonać polecenia administracyjne z konta zwykłego użytkownika wykorzystując składnię
 sudo <polecenie> 
Przed wykonaniem polecenia użytkownik zostanie zapytany o hasło. Należy podać hasło użytkownika nie roota.
Po podaniu hasła jest ono pamiętane przez 5 minut i nie trzeba go w tym czasie podawać przy wykonywaniu następnych poleceń sudo
Czas przez jaki pamiętane jest hasło możemy zmienić w pliku /etc/sudoers
Licznik czasu możemy wyzerować zyskując kolejne 5 minut wydając polecenie:
sudo -v
Możemy także nakazać natychmiastowe "zapomnienie" hasła:
sudo -k


Można również wykonać polecenie sudo z uprawnieniami roota bez podawania hasła.

UWAGA!
Należy zaznaczyć, że nadanie uprawnień do wykonania polecenia sudo bez podania hasła jest szczególnie groźne z punktu widzenia bezpieczeństwa systemu.
Jeżeli jednak zdecydujemy się na takie rozwiązanie, należy jako root wykonać polecenie:
echo 'loginname ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers


Konfiguracja zaawansowana

Najczęściej wpis w /etc/sudoers nadający uprawnienia użytkownikom/grupom ma postać:

loginname  system = polecenie1 [, polecenie2, ... polecenieN] 
lub
%groupname system = polecenie [, polecenie2, ... polecenieN]

Dodatkowo możemy przed poleceniem użyć opcji PASSWD lub NOPASSWD.
Opcja NOPASSWD oznacza, że użytkownik/grupa może wykonać polecenie bez podawania hasła.
Opcja PASSWD jest domyślna, więc nie zazwyczaj nie ma potrzeby jawnego jej używania, chyba że wcześniej użyto opcji NOPASSWD.

Przykłady

Poniższy wpis umożliwia wszystkim członkom grupy "users" zalogowanym lokalnie na wykonanie polecenia shutdown (tutaj natychmiastowe zamknięcie systemu) bez podawania hasła

%users localhost=NOPASSWD:/sbin/shutdown -h now 


Kolejny wpis nadaje użytkownikowi "franek" zalogowanemu lokalnie na bezzwłoczne wyłączenie systemu bez podawania hasła oraz na wykonywanie polecenia fdisk po podaniu hasła.

franek localhost=NOPASSWD:/sbin/shutdown -h now, PASSWD: /usr/bin/fdisk