Listy Kontroli Dostępu (ACL)

LINUX
Priorytet: Normalny Szkic

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

  1. System Linux (np. Ubuntu).
  2. 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.

  1. touch tajne_dane.txt
  2. ls -l tajne_dane.txt (Pokaże standardowe uprawnienia)
  3. 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.

  1. Stwórz katalog: mkdir wspolny_projekt
  2. Ustaw domyślne ACL dla użytkownika nowicjusz (parametr -d):
    setfacl -d -m u:nowicjusz:rwx wspolny_projekt
    
    (Uwaga: To ustawia uprawnienia dla plików, które powstaną w przyszłości!)
  3. Aby nowicjusz mó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

  1. Stwórz plik raport.txt.
  2. Ustaw uprawnienia tak, aby właściciel miał pełne prawa.
  3. Użyj ACL, aby użytkownik nobody (istnieje w każdym systemie) miał TYLKO prawo czytania (r).
  4. Użyj ACL, aby użytkownik root miał prawo czytania i zapisu (rw).

[!IMPORTANT] Zadanie do oddania: Prześlij zrzut ekranu z wyniku polecenia: getfacl raport.txt Wynik powinien pokazywać wpisy dla user:nobody i user:root.