Listy Kontroli Dostępu (ACL)
Zadanie 12: Access Control Lists (ACL)
Wstęp
Standardowe uprawnienia Linuxa (rwx dla Owner, Group, Other) mają jedną poważną wadę: plik może mieć tylko jednego właściciela i jedną grupę. Co, jeśli chcesz dać dostęp do pliku Kasi (bez wrzucania jej do grupy właściciela) i zabrać dostęp Tomkowi (który jest w tej grupie)? Tu z pomocą przychodzą listy ACL (Access Control Lists), które pozwalają definiować uprawnienia dla dowolnej liczby użytkowników i grup.
Cel zadania
Instalacja narzędzi ACL, oraz nauka precyzyjnego nadawania (setfacl) i sprawdzania (getfacl) uprawnień.
Wymagania techniczne
- System Linux (np. Ubuntu).
- Uprawnienia sudo (do instalacji i zarządzania użytkownikami).
Kroki do wykonania
1. Instalacja
W większości nowoczesnych systemów obsługa ACL jest wbudowana w jądro, ale narzędzia trzeba doinstalować.
sudo apt update
sudo apt install acl
2. Sprawdzanie ACL (getfacl)
Stwórz plik testowy i sprawdź jego uprawnienia.
touch tajne_dane.txtls -l tajne_dane.txt(Pokaże standardowe uprawnienia)getfacl tajne_dane.txt(Pokaże szczegółową listę)
3. Nadawanie uprawnień użytkownikowi (setfacl -m u:...)
Załóżmy, że plik należy do Ciebie, ale chcesz dać koleżance (użytkownikowi nowicjusz stworzonemu w zad. 10) prawo do czytania i zapisu.
# Składnia: setfacl -m u:użytkownik:uprawnienia plik
setfacl -m u:nowicjusz:rw tajne_dane.txt
-m: modify (modyfikuj)u: user (użytkownik)
Sprawdź teraz ls -l. Zauważysz + na końcu uprawnień (np. -rw-rw-r--+), co oznacza, że plik ma aktywne ACL.
4. Nadawanie uprawnień grupie (setfacl -m g:...)
Możesz też dać uprawnienia konkretnej grupie, np. sudo:
setfacl -m g:sudo:r tajne_dane.txt
5. ACL Domyślne (Default ACL)
To potężna funkcja. Jeśli ustawisz "domyślne ACL" na katalogu, to każdy nowy plik utworzony w środku automatycznie odziedziczy te uprawnienia.
- Stwórz katalog:
mkdir wspolny_projekt - Ustaw domyślne ACL dla użytkownika
nowicjusz(parametr-d):
(Uwaga: To ustawia uprawnienia dla plików, które powstaną w przyszłości!)setfacl -d -m u:nowicjusz:rwx wspolny_projekt - Aby
nowicjuszmógł wejść do katalogu JUŻ TERAZ, musisz nadać też zwykłe ACL:setfacl -m u:nowicjusz:rwx wspolny_projekt
6. Usuwanie ACL
- Usunięcie konkretnego wpisu:
setfacl -x u:nowicjusz tajne_dane.txt - Usunięcie WSZYSTKICH ACL (powrót do standardowych uprawnień):
setfacl -b tajne_dane.txt
Zadanie sprawdzające
- Stwórz plik
raport.txt. - Ustaw uprawnienia tak, aby właściciel miał pełne prawa.
- Użyj ACL, aby użytkownik
nobody(istnieje w każdym systemie) miał TYLKO prawo czytania (r). - Użyj ACL, aby użytkownik
rootmiał prawo czytania i zapisu (rw).
[!IMPORTANT] Zadanie do oddania: Prześlij zrzut ekranu z wyniku polecenia:
getfacl raport.txtWynik powinien pokazywać wpisy dlauser:nobodyiuser:root.