HOWTO - Praca z "sudo"

Witam :!:

W tym wątku opiszę konfigurację i używanie bardzo użytecznego programu jakim jest “sudo”. Oczywiście zakładam, że program “sudo” jest już zainstalowany na komputerze. A teraz małe wyjaśnienie:

“sudo” to program dzięki któremu administrator może zezwolić jakiemukolwiek użytkownikowi na wykonywanie programów i poleceń, do których normalnie nie miałby uprawnień. Dzięki “sudo”, pracując na koncie użytkownika nie musimy logować się na konto roota. Wyobraźmy sobie taką sytuację, że nie ma “sudo” tylko pracujemy na koncie root’a i …ups! Zapomnieliśmy się wylogować, a na komputer siada siostra i nam niszczy w systemie. Dzięki “sudo” możemy uzyskać tylko tymczasowe uprawnienia root’a co wymaga dodatkowo wpisania nie hasła root’a tylko user’a :!: “Sudo” jest nie tylko na linuksa! Można go z powodzeniem używać także w BSD, Hurd, Mac OS X… Ogólnie to we wszystkich Uniksach. Dobra koniec marudzenia… zabierzmy się za konfigurację!

Konfiguracja “sudo” odbywa się poprzez edycję pliku /etc/sudoers. Plik ten lepiej edytować tylko i wyłącznie za pomocą polecenia:

visudo

Gdyby dwóch administratorów edytowało bezpośrednio plik /etc/sudoers to pomyślmy co by się stało :expressionless: :!: Dodatkowym atutem konfiguracji przez “visudo” jest to, że sprawdzana jest składnia. Obsługa visudo sprowadza się do znajomości domyślnego edytora tekstu ustawionego w systemie (u mnie “nano”). Podstawowa składnia wygląda tak:

nazwa_usera nazwa_hosta = polecenie

Przetłumaczmy to na nasz ojczysty język: “nazwa_usera” zalogowana na “nazwa_hosta” może wykonać “polecenie” z prawami root’a. Proste nie :?: Przykład:

rucio Debian-PC = nautilus

Domyślnie konto “root” ma nadane uprawnienia ALL, co oznacza, że może za pomocą “sudo” uruchamiać wszystkie programy. Aby dodać siebie do uprawnień ALL wystarczy skopiować wpis z kontem “root” i wkleić jedną linijkę pod tym wpisem. Potem już tylko zmienić “root” na twoją nazwę :stuck_out_tongue_winking_eye: A teraz udzielanie członkom grupy “wlatcymoch” prawa do wykonywania polecenia “/home/czesio/Tibja/tibja” na komputerze “mocha” :smiley: :

% wlatcymoch mocha = /home/czesio/Tibja/tibja

A tu przykład z użyciem wielu komend:

rucio Debian-PC = /usr/bin/halt, vim, konqueror

Istnieje jeszcze jedna sztuczka, wykonywanie programu przez sudo, ale nie jako root! Przykład:

rucio Debian-PC = (edyta, artur, wacek) nano

Domyślny czas zapamiętywania haseł przez “sudo” wynosi 5 minut. A co jeśli chcemy zwiększyć limit do 9 minut :?: Nie ma problemu, wystarczy znaleźć linijkę zaczynającą się od “Defaults” i dopisać:

timestamp_timeout = ilosc_minut

Przykład:

. . .


Defaults env_reset, timestamp_timeout=9


 . . .

Mała ciekawostka: gdy zamiast “ilosc_minut” byśmy wstawili “0” to “sudo” nie zapamiętywałby haseł, a gdy wpiszemy “-1” hasła zostaną zapamiętane aż do restartu komputera! A jeżeli chcielibyśmy, aby “sudo” żądało hasło nie od uzytkownika “rucio”, a od “adam”? Po prostu dodajemy nazwę user’a do linijki “Defaults”:

. . .


Defaults env_reset, timestamp_timeout=3, adam


 . . .

Istnieje jeszcze funkcja “NOPASSWD:”, która jest opisana na samym końcu pliku /etc/sudoers:

rucio Debian-PC = NOPASSWD: apt-get

Dzięki niej “sudo” w ogóle nie będzie prosił o hasło dla danego polecenia, w tym przypadku, “apt-get”. A teraz zaprezentuję inne opcje dostępne poza plikiem /etc/sudoers, czyli w terminalu: Wydłużanie ważności haseł o dodatkowe 5 minut:

sudo -v

Sprawdzanie uprawnień:

sudo -l

Natychmiastowe zapomnienie wszystkich haseł:

sudo -k

To już koniec! Piszcie do mnie na PW jak znajdziecie jakiś bug w tekście, zapomnę czegoś dodać (nikt nie jest doskonały :stuck_out_tongue: ) itd. :slight_smile:

Pozdrawiam!