Ten tutorial opisuje szczegółowo listy kontroli dostępu w Linuksie, do czego są używane i jak nimi zarządzać.

Jako administrator systemu, prawdopodobnie spędzasz sporo czasu konfigurując uprawnienia dla użytkowników i grup w swoim systemie.

Uprawnienia do plików są już całkiem przydatne w celu nadania uprawnień do odczytu, zapisu lub wykonywania katalogów lub plików.

Ale co jeśli potrzebujemy bardziej precyzyjnego sposobu nadawania uprawnień do folderów lub plików?

Co jeśli chcę dać dostęp do pliku konkretnemu użytkownikowi lub konkretnej grupie, która nie jest aktualnym właścicielem pliku?

To jest dokładnie to, co listy kontroli dostępu, również w skrócie ACL, rozwiązują w systemie Linux.

W dzisiejszym samouczku, przyjrzymy się bardzo dokładnie listom kontroli dostępu, czym są i jak są używane w celu prawidłowego skonfigurowania systemu Linux.

Czy gotowy?

Spis treści

Czego się nauczysz

Jeśli będziesz śledził ten samouczek do końca, poznasz następujące zagadnienia:

  • Czym są listy kontroli dostępu i jak można je odczytać za pomocą polecenia ls;
  • Jak ustawić podstawowe uprawnienia do pliku za pomocą polecenia setfacl:
  • Jak odczytywać listy kontroli dostępu za pomocą polecenia getfacl;
  • Co to jest maska listy kontroli dostępu i jak należy ją odczytywać;
  • Co to są domyślne listy kontroli dostępu i jak można je efektywnie wykorzystać

To dość długi program, więc bez dalszych ceregieli zacznijmy od szybkiej definicji, czym są listy kontroli dostępu.

Podstawy list kontroli dostępu w Linuksie

W systemie Linux istnieją dwa sposoby ustawiania uprawnień dla użytkowników i grup: za pomocą zwykłych uprawnień do plików lub za pomocą list kontroli dostępu.

Definicja listy kontroli dostępu

Listy kontroli dostępu są używane w systemach plików Linuksa do ustawiania niestandardowych i bardziej spersonalizowanych uprawnień do plików i folderów. Listy ACL pozwalają właścicielom plików lub uprzywilejowanym użytkownikom na przyznawanie praw konkretnym użytkownikom lub konkretnym grupom.

W systemie Linux, jak zapewne wiesz, uprawnienia są podzielone na trzy kategorie: jedna dla właściciela pliku, jedna dla grupy i jedna dla innych.

Jednakże, w niektórych przypadkach, możesz chcieć przyznać dostęp do katalogu (na przykład uprawnienie execute) konkretnemu użytkownikowi bez konieczności umieszczania tego użytkownika w grupie pliku.

To jest dokładnie to, dlaczego listy kontroli dostępu zostały wymyślone w pierwszej kolejności.

Lista kontroli dostępu

W systemie Linux, listy kontroli dostępu nie są włączone, gdy tworzysz nowy plik lub katalog na hoście (z wyjątkiem sytuacji, gdy katalog nadrzędny ma predefiniowane pewne ACL).

Aby sprawdzić, czy listy kontroli dostępu są zdefiniowane dla pliku lub katalogu, uruchom polecenie ls i poszukaj znaku „+” na końcu linii uprawnień.

$ ls -l

Aby pokazać różnicę, oto różnica podczas listowania plików na minimalnej instancji.

Teraz, gdy masz już podstawy o listach kontroli dostępu, zobaczmy, jak możesz zacząć tworzyć podstawowe ACL dla plików i katalogów.

Tworzenie list kontroli dostępu w Linuksie

Przed rozpoczęciem komend ACL, ważne jest, aby mieć zainstalowane pakiety na hoście.

Sprawdzanie instalacji pakietów ACL

Może to nie mieć miejsca, jeśli zdecydowałeś się mieć uruchomiony minimalny serwer.

Zacznij od sprawdzenia pomocy związanej z setfacl przez wykonanie następującego polecenia

$ setfacl --help

Jeśli twój host nie może znaleźć polecenia setfacl, upewnij się, że zainstalowałeś niezbędne pakiety do zarządzania ACL.

$ sudo apt-get install acl -y

Zauważ, że będziesz potrzebował uprawnień sudo w Debianie 10, aby uruchomić tę komendę.

Rozpocznij komendę setfacl i upewnij się, że tym razem jesteś w stanie zobaczyć komendy pomocy.

Teraz, gdy twój host jest poprawnie skonfigurowany, zobaczmy jak działa komenda setfacl.

Ustawianie list kontroli dostępu przy użyciu setfacl

W przypadku list kontroli dostępu istnieją dwa główne polecenia, które należy zapamiętać: setfacl i getfacl.

W tym rozdziale przyjrzymy się poleceniu setfacl, ponieważ polecenie getfacl jest całkiem zrozumiałe.

Polecenie setfacl jest używane w systemie Linux do tworzenia, modyfikowania i usuwania list kontroli dostępu na pliku lub katalogu.

Polecenie setfacl ma następującą składnię

$ setfacl {-m, -x} {u, g}:<name>: <file, directory>

Gdzie nawiasy klamrowe oznaczają jedną z następujących opcji, a nawiasy zwykłe oznaczają jedną lub kilka pozycji.

  • -m : oznacza, że chcesz zmodyfikować jeden lub kilka wpisów ACL na pliku lub katalogu.
  • -x : oznacza, że chcesz usunąć jeden lub kilka wpisów ACL na pliku lub katalogu.
  • {u, g} : jeśli chcesz zmodyfikować ACL dla użytkownika lub dla grupy.
  • nazwa : jest to opcjonalny parametr, można go pominąć, jeśli chcesz ustawić wpisy ACL dla każdego użytkownika lub dla każdej grupy na hoście.
  • : aby ustawić uprawnienia do odczytu, zapisu lub wykonania na pliku lub katalogu.

Na przykład, w celu ustawienia konkretnych uprawnień do zapisu dla użytkownika na pliku, można napisać następujące polecenie

$ setfacl -m u:user:w <file, directory>

W celu ustawienia uprawnień do wykonywania dla wszystkich użytkowników na hoście, napisałbyś następującą komendę

$ setfacl -m u::x <file, directory>

Aby ustawić pełne uprawnienia dla określonej grupy na hoście, napisałbyś setfacl w ten sposób

$ setfacl -m g:group:rwx <file, directory>

Teraz powiedzmy, że chcesz usunąć wpis ACL z pliku.

Aby usunąć wpis specyficzny dla użytkownika z pliku, należy określić opcję x.

Uwaga: nie można określić uprawnień z pojedynczego wpisu ACL, co oznacza, że nie można usunąć uprawnień do zapisu, zachowując aktywne uprawnienia do odczytu ACL.

$ setfacl -x u:<user> <file, directory>

Podobnie, aby usunąć ACL związane z grupami na hoście, napisałbyś następujące polecenie

$ setfacl -x g:<group> <file, directory>

Teraz, gdy zobaczyłeś, jak można tworzyć listy kontroli dostępu łatwo w systemie Linux, nadszedł czas, aby zobaczyć, jak można sprawdzić istniejące listy kontroli dostępu do plików i katalogów.

Lista list kontroli dostępu przy użyciu getfacl

Komenda getfacl jest używana w systemie Linux do drukowania pełnej listy wszystkich regularnych uprawnień i list kontroli dostępu uprawnień na pliku lub katalogu.

Polecenie getfacl może być używane z następującą składnią

$ getfacl <file, directory>

Polecenie getfacl jest podzielone na wiele kategorii :

  • Nazwa pliku, właściciel i grupa : informacje o własności użytkownika i grupy są wyświetlane na górze;
  • Uprawnienia użytkownika : najpierw znajdują się uprawnienia zwykłego użytkownika, zwanego również właścicielem, a następnie wszelkie wpisy ACL specyficzne dla użytkownika (zwane nazwanymi użytkownikami)
  • Uprawnienia grupy : grupy właścicielskie są przedstawione, a następnie wpisy ACL specyficzne dla grupy, również nazywane nazwanymi grupami
  • Maska: która ogranicza uprawnienia nadane wpisom ACL, maska będzie szczegółowo opisana w następnej sekcji;
  • Inne uprawnienia: te uprawnienia są zawsze aktywne i jest to ostatnia kategoria badana, gdy żadne inne uprawnienia nie pasują do bieżącego użytkownika lub grupy.

Praca z maską list kontroli dostępu

Jak zapewne zauważyłeś na ostatnim zrzucie ekranu, istnieje wpis maski pomiędzy nazwanymi grupami i innymi uprawnieniami.

Ale do czego służy ta maska?

Maska ACL różni się od maski tworzenia pliku (umask) i jest używana w celu ograniczenia istniejących wpisów ACL istniejących na pliku lub katalogu.

Maska ACL jest używana jako maksymalny zestaw uprawnień ACL niezależnie od istniejących uprawnień, które przekraczają maskę ACL.

Jak zawsze, diagram mówi sto słów.

Maska ACL jest aktualizowana przy każdym uruchomieniu polecenia setfacl, chyba że określisz, że nie chcesz aktualizować maski za pomocą flagi -n.

Aby zapobiec aktualizowaniu maski, uruchom setfacl z następującym poleceniem

$ setfacl -n -m u:antoine:rwx <file, directory>

Jak widać w tym przykładzie, ustawiłem użytkownika „antoine”, aby miał pełne uprawnienia do pliku.

Maska jest ustawiona na ograniczenie uprawnień do odczytu i zapisu.

W konsekwencji, „efektywne uprawnienia” ustawione na tym pliku dla tego użytkownika to odczyt i zapis, uprawnienie execute nie jest przyznane.

Uwaga: jeżeli maksymalny zestaw uprawnień użytkownika różni się od wpisu w masce, zostanie przedstawiona efektywna linia obliczająca „rzeczywisty” zestaw użytych wpisów ACL.

Tworzenie domyślnych list kontroli dostępu na katalogach

Jak już wspomniano w tym artykule, możliwe jest tworzenie wpisów ACL na katalogach i działają one w taki sam sposób, jak listy kontroli dostępu do plików.

Jednakże jest mała różnica, jeśli chodzi o katalogi: masz opcję tworzenia domyślnych list kontroli dostępu.

Domyślne listy kontroli dostępu są używane do tworzenia wpisów ACL na katalogu, które będą dziedziczone przez obiekty w tym katalogu, takie jak pliki lub podkatalogi.

Podczas tworzenia domyślnych wpisów ACL :

  • Pliki utworzone w tym katalogu dziedziczą wpisy ACL określone w katalogu nadrzędnym
  • Podkatalogi utworzone w tym katalogu dziedziczą wpisy ACL, a także domyślne wpisy ACL z katalogu nadrzędnego.

Aby utworzyć domyślne wpisy ACL, określ opcję -d podczas ustawiania ACL za pomocą polecenia setfacl.

$ setfacl -d -m {u, g}:<name>: <directory>

Na przykład, aby przypisać uprawnienia do odczytu do wszystkich plików utworzonych w katalogu, można wykonać następujące polecenie

$ setfacl -d -m u::r directory

Teraz, gdy plik jest tworzony w tym katalogu acl, można zobaczyć, że domyślne wpisy ACL są stosowane do pliku.

Podobnie, gdy katalog jest tworzony w katalogu acl, dziedziczy on domyślne wpisy ACL określone w katalogu nadrzędnym.

Zauważ, że zaleca się określenie domyślnych uprawnień dla wszystkich trzech kategorii (użytkownik, grupa i inne).

W rzeczywistości określenie jednej z trzech pozycji utworzy dwie pozostałe z uprawnieniami związanymi z maską tworzenia pliku.

Usuwanie domyślnych list kontroli dostępu w katalogach

Aby usunąć domyślne istniejące listy kontroli dostępu w katalogach, należy użyć flagi -k z poleceniem setfacl.

$ setfacl -k <directory>

Podając przykład, który podaliśmy wcześniej, oto jak usunąć domyślne wpisy

$ setfacl -k acl-directory

Zauważ, że usunięcie wpisów ACL z katalogu nadrzędnego nie usuwa wpisów ACL w plikach lub katalogach zawartych w katalogu nadrzędnym.

Aby usunąć domyślne wpisy ACL w katalogu i wszystkich podkatalogach, musiałbyś użyć opcji rekursywnej (-R)

$ setfacl -kR <directory>

Zakończenie

W tym samouczku, dowiedziałeś się o listach kontroli dostępu w Linuksie, poleceniu getfacl i setfacl.

Dowiedziałeś się więcej o masce list kontroli dostępu i jak domyślne ACL są używane do tworzenia wpisów ACL na plikach i podkatalogach zawartych w katalogu nadrzędnym.

Jeśli jesteś ciekawy administracji systemem Linux, mamy wiele więcej tutoriali na ten temat, upewnij się, że je przeczytasz!

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.