Sudo

From FluxboxPL.org

Praca z sudo

Sudo jest programem dzięki któremu administrator może zezwolić dowolnemu 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. W praktyce wygląda to tak: zamiast pisać su -> hasło -> komenda piszemy sudo komenda. Wystarczy tylko odpowiednio skonfigurować sudo. A w tym ma pomóc ten poradnik.

Spis treści

Pobieranie i instalacja.

Źródła programu do samodzielnej kompilacji można pobrać ze strony domowej projektu. Ponieważ sudo jest popularnym narzędziem administracyjnym dostępny jest w większości dystrybucji. Jeśli jednak nie mamy zainstalowanego sudo to przed kompilacją dobrze jest sprawdzić czy nie ma programu w repozytoriach naszego systemu.

Konfiguracja.

Konfiguracja sudo odbywa się poprzez edycję pliku /etc/sudoers. Plik ten powinien być edytowany tylko i wyłącznie za pomocą polecenia:

  1. visudo

zapobiega to sytuacji, że dwóch administratorów będzie jednocześnie edytować plik /etc/sudoers, a także gwarantuje zachowanie odpowiednich bitów uprawnień. Dodatkowym atutem konfiguracji przez visudo jest to, że sprawdzana jest składnia. Obsługa visudo sprowadza się do znajomości obsługi Vi.

2.a. Podstawowa składnia /etc/sudoers. Podstawowa składnia /etc/sudoers wygląda następująco:

użytkownik komputer = komenda

W skrócie polega to na tym, ze dany użytkownik będąc zalogowany na maszynie o nazwie komputer może wykonać komendę z prawami roota. Przykład:

kazik localhost = /usr/bin/vim

Uwaga. Jeśli nazwa komputera została zmieniona należy podać jego rzeczywistą nazwę.

2.b. Udzielanie członkom grupy XXX prawa do wykonywania polecenia YYY.

% XXX localhost = /ścieżka/do/polecenia/YYY

2.c. Zezwalanie na wykonanie wielu komend.

kazik localhost = /usr/bin/vim, /usr/bin/nail, /usr/bin/sane

Używanie sudo.

3.a. Podstawowe użycie sudo.

Polecenie $ sudo vim, którego efektem jest:

We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things:

  1. 1) Respect the privacy of others.
  2. 2) Think before you type.
  3. 3) With great power comes great responsibility.

Password: (wpisać własne hasło, a nie roota)

Uwaga: sudo nie zmienia zawartości zmiennej $PATH. Żeby uruchomić z sudo program spoza własnej zmiennej $PATH należy podać pełną ścieżkę do programu np:

$ sudo /usr/sbin/checkinstall

Aliasy.

Jeśli mamy w systemie wielu użytkowników, którzy mogą logować się na inne komputery perspektywa przypisania do /etc/sudoers wszystkich potrzebnych kombinacji nie jest zbyt kusząca. Na szczęście mamy możliwość skorzystania z aliasów.

4.a. Aliasy w sudo.

Cmnd_Alias alias_polecenia = command1, command2, ... // aliasy komend

Host_Alias alias_hosta = hostname1, hostname2, ... //aliasy komputerów

User_Alias alias_użytkownika = user1, user2, ... //aliasy użytkowników

Standardowo istnieje już zdefiniowany alias ALL i jest on aliasem wszystkich możliwych wartości (w praktyce użytkownik sudo z uprawnieniem ALL jest równoważny rootowi).

PORADA: aby się nie pogubić przyjmuje się, że nazwy aliasów piszemy wielkimi literami.

4.b. Wykonywanie programu jako inny użytkownik (nie root). użytkownik komputer = (uruchom-jako) komenda(y)

Przykład:

kazik localhost = (adam, grześ) /usr/bin/vim

Teraz wydając komendę sudo -u adam vim, vim zostanie uruchomione przez użytkownika adam.

Hasła.

Po użyciu, sudo poinformuje użytkownika o konieczności wpisania hasła (hasła danego użytkownika). Hasło domyślnie zapamiętane jest na 5 minut. Po tym czasie będziemy musieli je podać ponownie, aby użyć komendy sudo.

5.a. Aby sudo nigdy nie zapamiętywało haseł. W tym celu należy dopisać w pliku /etc/sudoers:

Defaults:kazik timestamp_timeout=0

Wstawienie zamiast 0 liczby -1 spowodowałoby zapamiętanie hasła do czasu restartu systemu.

5.b. Żądanie hasła innego użytkownika. Należy dopisać do wiadomego pliku:

Defaults:adam runaspw, passwd_tries=2

Teraz sudo zażąda hasła użytkownika adam.

5.c. Aby sudo nie domagało się hasła. Należy wpisać:

kazik localhost = NOPASSWD: /usr/bin/vim

Oczywiście tej opcji należy używać rozważnie. Może to stanowić ogromne zagrożenie dla bezpieczeństwa systemu.

Inne opcje.

6.a. Sprawdzanie uprawnień.

sudo -l

6.b. Aby wydłużyć czas ważności hasła o kolejne 5 minut.

sudo -v

6.c Aby hasło zostało zapomniane od razu.

sudo -k

UWAGA NA KONIEC: znaki # i $ poprzedzające polecenia oznaczają jaki użytkownik powinien je wykonać, i tak # oznacza roota a $ zwykłego użytkownika.

Po więcej informacji o sudo odsyłam do manuali: man sudoers i man sudo.

Artykuł opublikowany w serwisie jakilinux.org

Ten artykuł udostępniony jest na licencji Creative Commons Uznanie Autorstwa. Oznacza to, że możesz kopiować, rozpowszechniać, odtwarzać i wykonywać utwór oraz tworzyć utwory zależne, pod warunkiem podania autora oryginału (largo3) oraz źródła (jakilinux.org) w postaci linku zwrotnego.