Linux – Prawa dostępowe – ACL

Jedną z form nadawania praw dostępowych do plików / katalogów w systemie Linux jest polecenie chmod. Co jednak gdy chcemy by pliki były możliwe tylko do odczytu lub zapisu dla części user’ów, a dla innych nie powinny być możliwe do przeglądania czy też zapisywania?

W tym przypadku z pomocą przyjdzie nam ACL’ka czyli lista dostępu. ACL daje możliwość definiowania praw dostępowych do plików/katalogów dla każdego użytkownika lub też grupy użytkowników z osobna.

Zależnie od dystrybucji Linux’a ACL może być już zainstalowany na twoim komputerze lub nie. Jeśli nie jest zainstalowany będziesz mieć oczywiście możliwość doinstalowania go we własnym zakresie.

Dla Ubuntu należy w pierwszej kolejności wykonać upgrade poleceniem:

$ sudo apt-get update

a następnie zainstalować paczkę:

$ sudo apt-get install acl

ACL – podstawowa konfiguracja

Do zdefiniowania oraz sprawdzania list dostępu służą dwa programy:

  • setfacl
  • getfacl

Pierwszy z nich przygotowany jest do przydzielania, modyfikowania oraz kasowania wpisów z list dostępu. Drugi natomiast (getfacl) dodatkowo potrafi wyświetlić informację o pliku takie jak nazwę, właściciela, grupę oraz ACL’kę.

Setfacl posiada dodatkowe parametry, które przedstawiam w poniższej tabelce:

PARAMETRYOPIS
-dDomyślny wpis *
-mDodanie lub modyfikacja wpisu
-xUsunięcie wpisu
-bUsunięcie całej listy wpisów
-RNadanie uprawnień rekursywnie **

* ten parametr stosujemy tylko i wyłącznie do folderów. Wszystkie nadane mu uprawnienia będą dotyczyły wszystkiego co umieścimy wewnątrz niego.
** podobnie jak w przypadku parametru -d stosujemy tylko do katalogu

W jaki sposób rozpoznać czy dany plik / folder ma skonfigurowany ACL?

W celu sprawdzenia konfiguracji wpisujemy w konsoli polecenie:

$ ls -l

Wynikiem powyższego polecenia będzie lista plików oraz folderów z uprawnieniami.
Wszystkie, które będą posiadały znak plusa mają przypisaną listę dostępu. Znak ten będzie znajdował się za informacjami o przypisanych prawach dostępu.

Przykłady:

Przeanalizujmy teraz parę przykładów.

$ setfacl -m g:bok:rw klienci.txt

Powyższy wpis będzie oznaczał, że grupa o nazwie bok będzie miała możliwość dokonywania modyfikacji lub dodawania nowych wpisów, :rw natomiast umożliwi tej grupie odczyt oraz zapis pliku klienci.txt

$ getfacl klienci.txt

Polecenie to podaje się bez wprowadzania jakiegokolwiek dodatkowego parametru. Wyświetli ono nam czy podany plik posiada wpisy w liście dostępu.

$ setfacl -b firmy/

Spowoduje usunięcie wszystkich wpisów dodanych do listy dostępu dla katalogu

Przedstawiliśmy podstawowe informacje dotyczące list dostępu. W kolejnym artykule otrzymasz więcej przykładów dotyczących konfiguracji.