Sudo - howto

Slackware FAQ - czyli baza pytań i odpowiedzi.

Moderatorzy: Moderatorzy, Administratorzy

ODPOWIEDZ
largo3
Moderator
Posty: 1297
Rejestracja: 2006-06-11, 11:08

Sudo - howto

Post autor: largo3 » 2006-10-07, 20:28

Sudo - howto

Kod: Zaznacz cały

Spis treści:
0. Sudo - czyli co?
1. Pobieranie i instalacja:
2. Konfiguracja:
    2.a Podstawowa składnia /etc/sudoers
    2.b Udzielanie członkom grupy XXX prawa do wykonywania polecenia YYY
    2.c Zezwalanie na wykonanie wielu komend
3. Używanie sudo:   
    3.a Podstawowe użycie sudo
4. Aliasy:
    4.a Aliasy w sudo   
    4.b Wykonywanie programu jako inny użytkownik ( nie root)
5. Hasła:  
    5.a Aby sudo nigdy nie zapamiętywało haseł
    5.b Żądanie hasła innego użytkownika
    5.c Aby sudo nie domagało się hasła
6. Inne opcje:
    6.a Sprawdzanie uprawnień
    6.b Aby wydłużyć czas ważności hasła o kolejne 5 minut
    6.c Aby hasło zostało zapomniane od razu

0. Sudo – czyli co?
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ń.
Pracując na koncie użytkownika nie musimy logować się na konto root'a. 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 to HOWTO.


1. Pobieranie i instalacja:
Pobieramy sudo (w chwili pisania tego howto najnowszą wersją było sudo-1.6.8p12). Tak więc:
$ wget ftp://sunsite.icm.edu.pl/pub/Linux/slac ... i486-1.tgz
Aby zainstalować program z katalogu, w którym jest paczka wpisujemy:
# installpkg sudo-1.6.8p12-i486-1.tgz
Użytkownicy programów takich jak swaret mogą się nimi posłużyć w sposób:
# swaret --install sudo


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

Kod: Zaznacz cały

# 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.

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

Kod: Zaznacz cały

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

Kod: Zaznacz cały

kazik localhost = /usr/bin/vim
Uwaga. Jeśli nie określono inaczej komputer po instalacja Slackware ma nazwę darkstar i tą właśnie nazwę należy wpisać w miejsce localhost. 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:

Kod: Zaznacz cały

%XXX  localhost = /ścieżka/do/polecenia/YYY
2.c. Zezwalanie na wykonanie wielu komend

Kod: Zaznacz cały

kazik localhost = /usr/bin/vim, /usr/bin/nail, /usr/bin/sane
3. Używanie sudo
3.a. Podstawowe użycie sudo
Polecenie $ sudo vim, którego efektem jest

Kod: Zaznacz cały

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

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

Password: (wpisać własne hasło, a nie root'a)
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


4. 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

Kod: Zaznacz cały

Cmnd_Alias alias_polecenia = command1, command2, ... // aliasy komend
Host_Alias alias_hosta = hostname1, hostname2, ... //aliasy komputerów
User_Alias alias_uzytkownika = user1, user2, ... //aliasy użytkowników 
Standardowo istnieje już zdefiniowany alias ALL i jest aliasem wszystkich możliwych wartości.
PORADA: aby się nie pogubić przyjmuje się, że nazwy aliasów pisze się wielkimi literami.

4.b. Wykonywanie programu jako inny użytkownik (nie root)

Kod: Zaznacz cały

 użytkownik komputer = (uruchom-jako) komenda/y 
Przykład:

Kod: Zaznacz cały

kazik localhost = (adam, grześ) /usr/bin/vim 
Teraz wydając komendę sudo -u adam vim, vim zostanie uruchomione przez użytkownika adam.


5. Hasła
Po użyciu, sudo poinformuje użytkownika o konieczności wpisania hasła (hasła danego użytkownika). Hasło zostanie zapamiętane na 5 minut.

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

Kod: Zaznacz cały

 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:

Kod: Zaznacz cały

 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ć:

Kod: Zaznacz cały

 kazik localhost =  NOPASSWD: /usr/bin/vim 
6. 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 root'a a $ zwykłego użytkownika.

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




Autor: largo3
Ostatnio zmieniony 2006-10-19, 13:42 przez largo3, łącznie zmieniany 10 razy.

ODPOWIEDZ