CodeGym /Kursy /Docker SELF /Zarządzanie prawami dostępu za pomocą ACL (`setfacl`, `ge...

Zarządzanie prawami dostępu za pomocą ACL (`setfacl`, `getfacl`)

Docker SELF
Poziom 5 , Lekcja 3
Dostępny

Zarządzanie prawami dostępu za pomocą ACL setfacl, getfacl

1. Wprowadzenie do ACL

Wyobraź sobie, że jesteś organizatorem imprezy (albo administratorem systemu). Chcesz, żeby goście mogli wchodzić do niektórych pokoi, a do innych tylko za twoją zgodą. Podstawowe prawa dostępu w Linuxie rwx pozwalają ci zarządzać dostępem tylko dla trzech kategorii: właściciela (user), grupy (group) i wszystkich innych (others). Ale co, jeśli chcesz dać dostęp do pokoju tylko szczególnemu przyjacielowi? Strażnik standardowego modelu praw powie ci: "Hej, tak się nie da". I właśnie tutaj wkraczają ACL, gotowe przyjść z pomocą.

ACL (Access Control Lists) rozwiązują problem ograniczeń klasycznego trójpoziomowego systemu praw, pozwalając nadawać prawa dostępu konkretnym użytkownikom i grupom.

Główne możliwości ACL:

  1. Ustalanie indywidualnych praw do plików i katalogów dla określonych użytkowników i grup.
  2. Dziedziczenie praw dla nowych plików wewnątrz katalogu.
  3. Bardziej elastyczna konfiguracja niż tradycyjne podejście chmod.

2. Jak sprawdzić, czy ACL są włączone?

Zanim zaczniemy zarządzać ACL, sprawdźmy najpierw, czy są one obsługiwane przez Twój system. Możesz to sprawdzić przy pomocy polecenia:

mount | grep acl

Jeśli system plików został zamontowany z opcją acl, jesteś gotowy do działania! W przeciwnym razie trzeba będzie ponownie zamontować partycję z dodaniem opcji acl:

sudo mount -o remount,acl /your/mount/point

Gotowe, teraz jesteś uzbrojony po zęby. Czas zanurzyć się w praktykę.


3. Główne komendy do pracy z ACL

Komenda Opis
getfacl Pobiera listę aktualnych ACL dla pliku lub katalogu.
setfacl Ustawia lub modyfikuje ACL dla pliku lub katalogu.
setfacl -m Zmienia (modify) aktualne prawa dostępu.
setfacl -x Usuwa (remove) określone prawa dostępu.
setfacl -b Usuwa wszystkie wpisy ACL dla pliku lub katalogu.
setfacl -d Ustawia domyślne prawa dla katalogu, które są dziedziczone przez pliki.

Przejdźmy teraz na przykładach przez każdą z tych komend!


Uzyskiwanie aktualnych ACL getfacl

Załóżmy, że mamy plik example.txt. Chcemy zobaczyć aktualne prawa dostępu używając ACL. Do tego wystarczy jedna komenda:

getfacl example.txt

Przykładowy wynik wygląda tak:

# file: example.txt
# owner: user1
# group: group1
user::rw-
group::r--
other::---

Ten spis pokazuje standardowe prawa: właściciel user1 może czytać i pisać, grupa group1 tylko czytać, a inni użytkownicy w ogóle nie mają dostępu.


Ustalanie indywidualnych praw dostępu (setfacl)

Teraz wyobraźmy sobie, że użytkownik user2 musi mieć prawo do zapisu do pliku example.txt. Można to zrobić w następujący sposób:

sudo setfacl -m u:user2:rw example.txt

Komenda oznacza:

  • -m: modyfikacja praw.
  • u:user2:rw: dodanie lub zmiana praw dla użytkownika user2 (read-write).

Sprawdźmy wynik:

getfacl example.txt

Teraz wynik wygląda tak:

# file: example.txt
# owner: user1
# group: group1
user::rw-
user:user2:rw  # Dodatkowe reguła!
group::r--
other::---

Usuwanie indywidualnych praw dostępu setfacl -x

Jeśli uznasz, że użytkownik user2 nie powinien już mieć prawa do zapisu, prawa można usunąć:

sudo setfacl -x u:user2 example.txt

Sprawdźmy:

getfacl example.txt

Już żadnych dodatkowych reguł dla user2!


Ustalanie praw dla grup

Prawa przez ACL można ustalać nie tylko dla poszczególnych użytkowników, ale i dla całych grup. Na przykład, aby dać grupie devteam dostęp do odczytu i zapisu, wykonaj:

sudo setfacl -m g:devteam:rw example.txt

Ustalanie praw domyślnych setfacl -d

Często trzeba automatycznie ustalać prawa dla wszystkich nowych plików i katalogów w określonym katalogu. Na przykład, chcesz, aby wszystkie pliki w katalogu project_dir miały prawo do zapisu dla użytkownika developer. W takim przypadku:

sudo setfacl -d -m u:developer:rw project_dir

Sprawdź prawa w ten sposób:

getfacl project_dir

Teraz dla wszystkich nowych plików i podkatalogów w project_dir będzie stosowana ta reguła domyślnie.


Usuwanie wszystkich ACL setfacl -b

Jeśli chcesz całkowicie usunąć wszystkie ACL dla pliku:

sudo setfacl -b example.txt

Teraz plik wraca do standardowego modelu praw dostępu user:group:others.


4. Praktyczne zastosowanie ACL

Scenariusz: Wspólna praca nad projektem

Załóżmy, że masz projekt zapisany w katalogu /project. Nad nim pracują trzy osoby:

  • Alice powinna mieć pełny dostęp (odczyt, zapis, wykonywanie).
  • Bob powinien tylko czytać pliki.
  • Eve w ogóle nie powinna widzieć katalogu.

Ustawiamy to za pomocą ACL:

  1. Dajemy Alice pełny dostęp:

    sudo setfacl -m u:alice:rwx /project
    
  2. Dajemy Bob dostęp tylko do odczytu:

    sudo setfacl -m u:bob:r-- /project
    
  3. Dla Eve nic nie robimy — domyślnie nie ma dostępu.

Sprawdźmy aktualną listę ACL:

getfacl /project

Output:

# file: /project
# owner: root
# group: root
user::rwx
user:alice:rwx
user:bob:r--
group::---
other::---

Teraz Alice może pracować bez ograniczeń, Bob może tylko przeglądać pliki, a Eve pozostaje na uboczu.


5. Potencjalne błędy i ich rozwiązanie

  1. ACL nie działają, mimo że je skonfigurowałeś. Może być tak, że partycja nie została zamontowana z opcją acl. Użyj mount, aby to sprawdzić i zamontuj ponownie, jeśli zajdzie taka potrzeba.

  2. Konflikt między standardowymi uprawnieniami a ACL. ACL zawsze mają priorytet nad standardowymi uprawnieniami. Na przykład, nawet jeśli dla "others" jest ustawiony zakaz odczytu, ACL może zezwolić na dostęp konkretnemu użytkownikowi.

  3. Zapomnisz o dziedziczonych ACL. Jeśli skonfigurowałeś prawa -d (default), sprawdź, czy te reguły zostały odziedziczone przez nowe pliki.

Dlaczego to ważne?

Zarządzanie uprawnieniami przez ACL pozwala elastycznie konfigurować dostęp dla różnych użytkowników i grup. Jest to szczególnie przydatne na serwerach roboczych, gdzie wymaga się podziału dostępu według ról. Na przykład, w firmach ACL są używane do ograniczania dostępu tylko dla tych, którzy "są w temacie" — to jeden z kluczowych elementów bezpieczeństwa.

Dodatkowo możesz zapoznać się z oficjalnym przewodnikiem po ACL, aby jeszcze lepiej zrozumieć ich możliwości.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION