Polecenie setfacl w Linux

Polecenie setfacl w Linux
„Ten samouczek wyjaśnia, jak korzystać z polecenia SETFACL do zdefiniowania uprawnień ACL (lista kontroli dostępu).

Listy kontroli dostępu (ACL) pozwalają nam zarządzać uprawnieniami z dodatkowymi opcjami niż te oferowane przez uprawnienia POSIX (wspólne uprawnienia, które zarządzamy z chmod Komenda).

Czytając ten samouczek, nauczysz się najważniejszego setfacl powiązane opcje.

Ten dokument jest zoptymalizowany dla obu użytkowników szukających szybkiego setfacl Instrukcje dotyczące wdrażania i dla użytkowników, którzy nie są zaznajomieni z ACL, którzy mogą znaleźć wszystkie potrzebne treści teoretyczne niezbędne do zrozumienia jej po sekcji praktycznej. Dodałem również tabelę podsumowującą setfacl Opcje poleceń opisane poniżej.

Wszystkie przykłady zawarte w tym artykule zawierają zrzuty ekranu, co ułatwi każdemu użytkownikowi Linux, aby je zrozumieć."

Opcje poleceń setFacl

Przed rozpoczęciem od setfacl Polecenie, sprawdźmy bieżące uprawnienia nazwanego pliku . Aby sprawdzić aktualne uprawnienia ACL, wykonaj GetFacl Polecenie za pomocą następującej składni:

GetFacl

W moim przypadku wykonuję polecenie pokazane na zrzucie ekranu poniżej.

getFacl Plik 1

Jak widać na powyższym zrzucie ekranu, plik ma standardowe uprawnienia POSIX dla właściciela Linuxhint (czytanie i pisanie), dla Linuxhint grupa (czytanie) i dla innych (czytanie). Użytkownik i grupa są Linuxhint.

Są to uprawnienia, które stosujemy za pomocą chmod polecenie, które pozwala nam zdefiniować uprawnienia dla właściciela, grupy i innych.

Załóżmy teraz, że chcemy dodać niestandardowe uprawnienia dla innego konkretnego użytkownika za pomocą rozszerzonych uprawnień ACL.

W poniższym przykładzie przyznam użytkownikowi uprawnienia do czytania, pisania i wykonywania tego samego pliku Linuxhint2. Potem biegam GetFacl Ponownie, aby sprawdzić zmiany.

setfacl -m u: Linuxhint2: RWX File1

Gdzie:

  • setfacl: Wywołuje program do zarządzania uprawnieniami.
  • -M: Ta flaga służy do modyfikacji uprawnień.
  • U: Linuxhint2: RWX: Określa użytkownika Linuxhint2 (U: Linuxhint2) i zapewnia mu uprawnienia do czytania, pisania i wykonania (: RWX).
  • plik 1: Plik docelowy, do którego uprawnienia są modyfikowane/stosowane.

NOTATKA: Jak widać na poprzednim zrzucie ekranu, dodatkowo do regularnych uprawnień, możemy zobaczyć nowego użytkownika (Linuxhint2) Z dodaniem niestandardowych uprawnień i nowa linia zwana a maska; zostanie to wyjaśnione później poniżej.

Ale teraz, załóżmy, że chcemy udzielić uprawnień innej grupie zamiast innego użytkownika. Składnia jest prawie taka sama, z wyjątkiem u: opcja, którą należy zastąpić G: Jak pokazałem na poniższym rysunku, gdzie grupa Linuxhint3 przyznawane jest uprawnienia do czytania i pisania. Potem biegam GetFacl Aby sprawdzić modyfikacje.

setfacl -m g: Linuxhint3: RW File1

Jak widać, nowa grupa (Linuxhint3) został dodany z uprawnieniami do czytania i pisania.

Teraz wyjaśnijmy maska linia, która pojawiła się po zastosowaniu do przedłużonych uprawnień ACL.

maska umożliwia nadpisanie uprawnień dla użytkowników, grup lub innych, z wyjątkiem właściciela. Jeśli maska ​​jest R, Użytkownicy, grupy i inni (wszyscy oprócz właściciela) z wcześniejszymi efektywnymi uprawnieniami do pisania lub realizacji stracą je. Limit maski wpływa na wszystkich użytkowników, z wyjątkiem właściciela. Funkcją jest zastąpienie istniejących uprawnień, ograniczenie ich lub zwiększenie.

Aby zmodyfikować maskę, nie musisz określać użytkowników lub grup; Wystarczy określić maskę, a następnie uprawnienia za pomocą M: Jak pokazano w poniższym przykładzie.

setfacl -m m: r plik 1

Jak widać, po ustawieniu maski z limitem czytania, Linuxhint2 Użytkownik, który wcześniej miał uprawnienia do czytania, pisania i wykonywania, oraz grupa Linuxhint3, Kto miał uprawnienia do czytania i pisania, teraz mają tylko skuteczne uprawnienia. Limit odczytu maski nadpisze ich poprzednie uprawnienia. Tylko uprawnienia właściciela pozostają nietknięte.

Ale jeśli maska ​​jest ustawiona na uprawnienia do odczytu, a ty udzielasz użytkownikowi, grupowi lub innym więcej niż uprawnienia do czytania, maska ​​zostanie automatycznie zmodyfikowana, zwiększając limit zgodnie z nowo uznanymi uprawnieniami. Domyślnie limit maski nie może być niższy niż istniejące przyznane uprawnienia dla innych niż właściciel (zobaczymy, jak zapobiec temu poniżej).

Oznacza to, że maska ​​jest ustawiona R (Czytanie), a ja udzielam dodatkowej uprawnienia do pisania i wykonania (RWX), maska ​​się stanie RWX.

Najpierw zobaczmy nasz obecny scenariusz, w którym jest maska R- (Tylko czytanie uprawnienia).

Teraz zobaczmy, co się stanie, jeśli dodam wykonanie i pisanie uprawnień dla użytkownika Linuxhint2, który obecnie ma jedynie skuteczne uprawnienia do czytania (jak wszyscy oprócz właściciela).

setfacl -m u: Linuxhint2: RWX File1

Jak widać, nie tylko Linuxhint2 Uprawnienia użytkownika zostały zaktualizowane, ale maska ​​też. Wynika to z faktu, że domyślnie maska ​​reprezentuje limit, a jeśli limit zostanie przekroczony przez nowe zamówienie, wzrasta.

Możesz mieć określone uprawnienia do maski i przyznać dodatkowe uprawnienia dla konkretnego użytkownika, grupy lub innych bez modyfikowania maski poprzez wdrożenie flagi -n.

-N Flaga instruuje ACL, aby zachowała maskę bez zmian, nawet jeśli przekroczą ją pewne uprawnienia.

Zobaczmy nowy scenariusz, w którym maska ​​jest ustawiona R-

W poniższym przykładzie użytkownik Linuxhint2 otrzymuje uprawnienia do pisania i wykonywania, ale -N Flaga jest zaimplementowana, aby zapobiec zmianie maski.

Jak widać poniżej, Linuxhint2 Użytkownik otrzymał prawa do pisania i wykonania, ale maska ​​pozostaje niezmieniona zgodnie z instrukcją -N flaga.

setfacl -n -m u: Linuxhint2: wx file1

-D Flaga służy do definiowania domyślnych uprawnień dla zawartości katalogu. Ta flaga nie wpływa na uprawnienia do katalogu, a jedynie treść, w tym pliki i subkredyty.

Ta flaga może być przydatna, na przykład, aby stworzyć domyślne uprawnienia dla określonego użytkownika lub grupy nad treścią katalogu. Po utworzeniu nowych plików w tym katalogu zdefiniowane użytkownicy lub grupy otrzymują swoje domyślne zdefiniowane uprawnienia.

W obecnym scenariuszu istnieje katalog z następującymi uprawnieniami.

W poniższym przykładzie, Inny (Wszyscy użytkownicy, którzy nie są właścicielami lub grupami) zostaną podane jako domyślne uprawnienia do odczytu dla treści katalogu o nazwie „informator."

setfacl -d -m o: r katalog

Jak widać na powyższym zrzucie ekranu, domyślne uprawnienia dla użytkownika i grupy pozostają Inny Zmieniono tylko na czytanie. Teraz, jeśli nowe pliki i podwodniki są tworzone w „informator,„Inne będą domyślnie otrzymają uprawnienia do czytania.

-R Flaga pozwala rekurencyjnie stosować reguły ACL. Gdy -R jest zaimplementowany, zdefiniowane uprawnienia wpłyną na określony katalog oraz wszystkie jego pliki i subkredyty. Ta flaga jest obecna w wielu poleceń Linux dla zadań rekurencyjnych.

Poniższe polecenie daje Inny czytanie i pisanie uprawnień dla Directory1 rekurencyjnie.

setfacl -r -m o: RW Directory1

ACL umożliwia przywrócenie uprawnień do późniejszego przywrócenia.

Na poniższym obrazie polecenie getFacl służy do wykonania rekurencyjnej kopii zapasowej „informator”Do pliku o nazwie„Aclpermissions.tekst."

GetFacl -r Directory> Aclpermissions.tekst

Aby przywrócić kopię zapasową, użyj -przywrócić opcja, a następnie =

W moim przypadku:

setFacl - -Restore = Aclpermissions.tekst

Możesz także użyć polecenia setFacl do kopiowania uprawnień z jednego pliku do drugiego.

Obecny scenariusz zapasów plików jest następujący:

W poniższym przykładzie kopiuję uprawnienia z plik 1 do pliku o nazwie „spis."

getFacl File1 | setfacl--set-file =-Inwentaryzacja

Co to jest ACL (lista kontroli dostępu)

ACL to system Native Uppissions Windows do zarządzania dostępem do zasobów, takich jak pliki, katalogi, partycje itp. Ten system opiera się na obiektach, do których uprawnienia są zdefiniowane dla użytkowników, grup i innych, w tym indywidualnie, jak pokazano powyżej.

Uprawnienia są dołączane do zdefiniowanego pliku, katalogu lub systemu plików definiującego dostęp właściciela, użytkowników, grup lub innych.

Różnica między zgodą ACL i POSIX

Podczas gdy z uprawnieniami POSIX użytkownicy mogą zarządzać uprawnieniami dla właściciela, grupy i innych, ACL umożliwia zarządzanie niestandardowymi uprawnieniami dla wszystkich, w tym użytkowników i grup.

Ponadto ACL wdraża nowe typy uprawnień, podobnie jak domyślne uprawnienia wyjaśnione w tym samouczku.

Zapewnia to elastyczność, której nie możemy cieszyć się przy regularnych uprawnieniach POSIX. Jednak, jak widać, oboje działają w połączeniu, a ich kombinacja przynosi silną strukturę uprawnień.

Polecenie setFacl służy do ustawiania uprawnień ACL na pliki, katalogi i systemy plików.
Służy to do określania plików, katalogów, użytkowników, grup lub innych z pożądanymi uprawnieniami, gdy potrzebują przełamania limitów POSIX. Właściciel zasobów i procesy z CAP_Fowner mają prawo do modyfikowania uprawnień ACLS.

Poniższa tabela podsumowuje niektóre opcje ACL

Opcje FUNKCJONOWAĆ
-M Zmodyfikuj ACL
-X Usuń wszystkie ACLREMOVE ACL
-B Usuń wszystkie ACL
-k Usuń domyślne uprawnienia
-R Stosuje rekurencyjnie ACL
-L Postępuje zgodnie z symbolicznymi linkami
-P Nie podąża za symbolicznymi linkami
M: Zdefiniuj maskę
-Przywróć = Przywraca ACL z pliku kopii zapasowej utworzonego za pomocą GetFacl -R
-test Nie stosuje zmian, ale wyświetla wynik
-N Nie wpływa na maskę

Można znaleźć więcej informacji na temat ACL i polecenia setFacl na https: // linux.umierać.net/man/5/acl i https: // linux.umierać.net/man/1/setfacl.

Wniosek

Jak widać, ACL pozwala użytkownikom dostosowywać uprawnienia do limitów systemu uprawnień POSIX. Jest to niezwykle przydatne, gdy zasoby muszą być udostępniane z określonymi typami dostępu. Jak widać, ACL jest łatwy do zrozumienia i wdrożenia i może go nauczyć się każdy użytkownik Linux niezależnie od poziomu wiedzy. ACL jest historycznym wyjątkiem, w którym Linux importował funkcję z Windows. Możesz uzyskać dodatkowe informacje na temat ACL na stronie Man.

Dziękujemy za przeczytanie tego samouczka wyjaśniające, jak korzystać z polecenia setFacl w Linux. Śledź naszego bloga, aby uzyskać bardziej profesjonalne treści Linux.