W zadaniach praktycznych kwalifikacji INF.02 (a dawniej EE.08) niemal każdy arkusz egzaminacyjny wymaga skonfigurowania nowego użytkownika, nadania mu odpowiednich uprawnień lub wykonania poleceń wymagających praw administratora.
Wielu uczniów traci punkty na prostych pomyłkach: myleniu haseł przy su i sudo, zapomnieniu o fladze -a przy dodawaniu do grup czy próbie ręcznej edycji pliku uprawnień bez kontroli składni. W tym wpisie postaram się omówić wszystko, co najważniejsze.
1. Kim jest Superużytkownik (root)?
W systemach z rodziny Linux użytkownik root to nadrzędne konto administracyjne o nieograniczonych uprawnieniach.
- UID (User ID): Zawsze wynosi
0. Jeśli jakiekolwiek konto ma UID = 0, system traktuje je jako roota. - GID (Group ID): Równie często wynosi
0. - Katalog domowy:
/root(w przeciwieństwie do zwykłych użytkowników, których katalogi znajdują się w/home/nazwa_uzytkownika). - Znak zachęty (prompt):
- Zwykły użytkownik:
$(np.uczen@debian:~$) - Użytkownik root:
#(np.root@debian:~#)
- Zwykły użytkownik:
⚠️ Zasada najmniejszych uprawnień (Least Privilege):
Na co dzień nie pracujemy bezpośrednio na koncie
root. Jedna literówka w komendzie (np. niefortunnerm -rf /) może całkowicie zniszczyć system. Zamiast tego pracujemy jako zwykły użytkownik i podnosimy uprawnienia tylko wtedy, gdy jest to konieczne.
2. Podnoszenie uprawnień: su vs sudo
CKE uwielbia testować zrozumienie różnicy między tymi dwoma mechanizmami - zarówno w testach teoretycznych, jak i w części praktycznej.
A. Polecenie su (Switch User / Substitute User)
Służy do przełączenia się na konto innego użytkownika (domyślnie na roota).
- Podstawowa składnia:
su -(lub
su - root, ewentualnie przełączenie na innego użytkownika:su - janek) - Czyje hasło podajemy? Hasło użytkownika DOCELOWEGO (czyli hasło roota!).
- Różnica między
suasu -:su: zmienia uprawnienia na roota, ale zostawia zmienne środowiskowe i ścieżki (PATH) zwykłego użytkownika. Może to powodować błędy typucommand not foundprzy próbie wywołania poleceń administracyjnych (np.fdisk,reboot).su -(lubsu -l): uruchamia pełną powłokę logowania - ładuje profil roota, jego katalog domowy/rootoraz właściwy$PATH. Na egzaminie zawsze używajcie wersji z myślnikiem!
B. Polecenie sudo (SuperUser DO)
Pozwala autoryzowanemu użytkownikowi wykonać pojedyncze polecenie z uprawnieniami roota.
- Podstawowa składnia:
sudo apt update - Uruchomienie powłoki roota przez sudo:
sudo -i # symuluje pełne logowanie na roota sudo -s # otwiera powłokę roota w bieżącym środowisku - Czyje hasło podajemy? Hasło BIEŻĄCEGO użytkownika (tego, który wywołuje polecenie).
- Zalety:
- Administrator nie musi zdradzać hasła roota innym pracownikom.
- Wszystkie operacje są logowane (audyt w
/var/log/auth.logna Debianie/Ubuntu). - Hasło zostaje zapamiętane w sesji na określony czas (zwykle 15 minut).
Podsumowanie różnic
| Cecha | su - |
sudo <polecenie> |
| Pytanie o hasło | Pyta o hasło roota | Pyta o hasło użytkownika |
| Zakres | Przełącza całą sesję na roota | Daje uprawnienia tylko do wskazanego polecenia |
| Konto root w systemie | Musi być odblokowane / mieć ustawione hasło | Może być zablokowane (np. domyślnie w Ubuntu) |
| Logowanie działań | Ograniczone po przełączeniu | Pełny audyt każdego wywołanego polecenia |