Uprawnienia w systemie Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Cześć wszystkim. To jest tłumaczenie artykułu z książki RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 i EX300.

Naciskać: Mam nadzieję, że artykuł będzie przydatny nie tylko dla początkujących, ale także pomoże bardziej doświadczonym administratorom uporządkować swoją wiedzę.

Więc chodźmy.

Uprawnienia w systemie Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Aby uzyskać dostęp do plików w systemie Linux, używane są uprawnienia. Te uprawnienia są przypisane do trzech obiektów: właściciela pliku, właściciela grupy i innego obiektu (czyli wszystkich pozostałych). W tym artykule dowiesz się, jak zastosować uprawnienia.

Artykuł rozpoczyna się od przeglądu podstawowych pojęć, a następnie omawia uprawnienia specjalne i listy kontroli dostępu (ACL). Na końcu tego artykułu opisano ustawianie domyślnych uprawnień poprzez umask, a także zarządzanie rozszerzonymi atrybutami użytkownika.

Zarządzanie własnością plików

Zanim omówisz uprawnienia, powinieneś zdawać sobie sprawę z roli właściciela pliku i katalogu. Własność plików i katalogów jest niezbędna do pracy z uprawnieniami. W tej sekcji dowiesz się najpierw, jak zobaczyć właściciela. Następnie dowiesz się, jak zmienić właściciela grupy i użytkownika plików i katalogów.

Wyświetlanie właściciela pliku lub katalogu

W Linuksie każdy plik i każdy katalog ma dwóch właścicieli: użytkownika i właściciela grupy.

Właściciele ci są ustawiani podczas tworzenia pliku lub katalogu. Użytkownik, który utworzy plik, staje się właścicielem tego pliku, a grupa podstawowa, do której należy ten sam użytkownik, również staje się właścicielem tego pliku. Aby określić, czy jako użytkownik masz prawa dostępu do pliku lub katalogu, powłoka sprawdza własność.

Dzieje się to w następującej kolejności:

  1. Powłoka sprawdza, czy jesteś właścicielem pliku, do którego chcesz uzyskać dostęp. Jeśli jesteś tym właścicielem, otrzymasz uprawnienia i powłoka przestanie sprawdzać.
  2. Jeśli nie jesteś właścicielem pliku, powłoka sprawdzi, czy jesteś członkiem grupy mającej uprawnienia do pliku. Jeśli jesteś członkiem tej grupy, będziesz mieć dostęp do pliku z uprawnieniami ustawionymi dla grupy, a powłoka przestanie sprawdzać.
  3. Jeżeli nie jesteś użytkownikiem ani właścicielem grupy, otrzymujesz uprawnienia innego użytkownika.

Aby zobaczyć aktualne przypisania właścicieli, możesz użyć polecenia ls -l. To polecenie pokazuje użytkownika i właściciela grupy. Poniżej możesz zobaczyć ustawienia właściciela katalogów w katalogu /home.

[root@server1 home]# ls -l
total 8
drwx------. 3  bob            bob            74     Feb   6   10:13 bob
drwx------. 3  caroline       caroline       74     Feb   6   10:13 caroline
drwx------. 3  fozia          fozia          74     Feb   6   10:13 fozia
drwx------. 3  lara           lara           74     Feb   6   10:13 lara
drwx------. 5  lisa           lisa           4096   Feb   6   10:12 lisa
drwx------. 14 user           user           4096   Feb   5   10:35 user

Z poleceniem ls możesz wyświetlić właściciela plików w danym katalogu. Czasami przydatne może być uzyskanie listy wszystkich plików w systemie, których właścicielem jest dany użytkownik lub grupa. Do tego możesz użyć odnaleźć. Argument znajdź -użytkownik można wykorzystać w tym celu. Na przykład poniższe polecenie wyświetla wszystkie pliki, których właścicielem jest Linda:

find / -user linda

ы также можете использовать odnaleźć aby wyszukać pliki, których właścicielem jest określona grupa.

Na przykład poniższe polecenie wyszukuje wszystkie pliki należące do grupy Użytkownicy:

find / -group users

Zmiana właściciela

Aby zastosować odpowiednie uprawnienia, pierwszą rzeczą do rozważenia jest własność. Jest na to polecenie chown. Składnia tego polecenia jest łatwa do zrozumienia:

chown кто что

Na przykład następujące polecenie zmienia właściciela katalogu /home/account na użytkownika linda:

chown linda /home/account

Zespół chown ma kilka opcji, z których jedna jest szczególnie przydatna: -R. Możesz się domyślić, co robi, ponieważ ta opcja jest dostępna również dla wielu innych poleceń. Pozwala to na rekurencyjne ustawienie właściciela, co pozwala ustawić właściciela bieżącego katalogu i wszystkiego poniżej. Następujące polecenie zmienia właściciela katalogu /home i wszystkiego, co się w nim znajduje, na użytkownika linda:

Teraz właściciele wyglądają tak:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 account account 62 Sep 25 21:41 account
drwx------. 2 lisa    lisa    62 Sep 25 21:42 lisa

Zróbmy:

[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#

Teraz użytkownik lisa jest właścicielem katalogu kont:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa    62 Sep 25 21:42 lisa

Zmień właściciela grupy

Istnieją dwa sposoby zmiany własności grupy. Można to zrobić za pomocą chown, ale istnieje specjalne polecenie o nazwie chgrp, który spełnia to zadanie. Jeśli chcesz użyć polecenia chown, używać . lub : przed nazwą grupy.

Następujące polecenie zmienia dowolnego właściciela grupy /home/account w grupę kont:

chown .account /home/account

możesz użyć chown zmienić właściciela użytkownika i/lub grupy na kilka sposobów. Oto kilka przykładów:

  • chown lisa mój plik 1 ustawia użytkownika lisa jako właściciela pliku myfile1.
  • chown lisa.sales mój plik ustawia użytkownika lisa jako właściciela pliku myfile, a także ustawia grupę sprzedaży jako właściciela tego samego pliku.
  • chown lisa: mój plik sprzedaży taki sam jak poprzedni zespół.
  • chown .sales mój plik Ustawia grupę sprzedaży jako właściciela pliku myfile bez zmiany właściciela użytkownika.
  • chown: mój plik sprzedaży taki sam jak poprzedni zespół.

Możesz użyć polecenia chgrpzmienić właściciela grupy. Rozważ następujący przykład, w którym możesz użyć chgrp Ustaw właściciela katalogu konta na grupę sprzedażową:

chgrp .sales /home/account

Jak z chown, możesz skorzystać z tej opcji -R с chgrp, a także rekursywnie zmienić właściciela grupy.

Domyślne zrozumienie właściciela

Być może zauważyłeś, że gdy użytkownik tworzy plik, stosowana jest domyślna własność.
Użytkownik tworzący plik automatycznie staje się właścicielem tego pliku, a podstawowa grupa tego użytkownika automatycznie staje się właścicielem tego pliku. Zwykle jest to grupa wymieniona w pliku /etc/passwd jako podstawowa grupa użytkownika. Jeśli jednak użytkownik jest członkiem wielu grup, może zmienić efektywną grupę podstawową.

Aby wyświetlić aktualnie efektywną grupę podstawową, użytkownik może użyć polecenia grupy:

[root@server1 ~]# groups lisa
lisa : lisa account sales

Jeśli bieżący użytkownik Linda chce zmienić efektywną grupę podstawową, użyje polecenia nowa grupapo którym następuje nazwa grupy, którą chce ustawić jako nową efektywną grupę podstawową. Po użyciu polecenia nowa grupa grupa podstawowa będzie aktywna do momentu wprowadzenia polecenia przez użytkownika wyjście lub nie wyloguje się z systemu.

Oto jak użytkownik Linda używa tego polecenia, przy czym podstawową grupą jest sprzedaż:

lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1

Po zmianie bieżącej grupy podstawowej wszystkie nowe pliki utworzone przez użytkownika będą miały tę grupę jako właściciela. Aby powrócić do pierwotnych ustawień grupy podstawowej, użyj wyjście.

Aby móc korzystać z polecenia nowa grupa, użytkownik musi być członkiem grupy, której chce używać jako podstawowej. Dodatkowo za pomocą polecenia można użyć hasła grupowego dla grupy gpasswd. Jeśli użytkownik użyje polecenia nowa grupaale nie jest członkiem grupy docelowej, powłoka pyta o hasło grupy. Po wprowadzeniu prawidłowego hasła grupy zostanie ustawiona nowa efektywna grupa podstawowa.

Zarządzanie prawami podstawowymi

System uprawnień dla Linuksa został wynaleziony w latach 1970-tych. Ponieważ w tamtych latach potrzeby obliczeniowe były ograniczone, podstawowy system uprawnień był dość ograniczony. Ten system uprawnień wykorzystuje trzy uprawnienia, które można zastosować do plików i katalogów. W tej sekcji dowiesz się, jak używać i zmieniać te uprawnienia.

Zrozumienie uprawnień do odczytu, zapisu i wykonywania

Trzy główne uprawnienia umożliwiają odczytywanie, zapisywanie i wykonywanie plików. Efekt tych uprawnień różni się w przypadku zastosowania ich do plików lub katalogów. Po zastosowaniu do pliku uprawnienie do odczytu daje prawo do otwarcia pliku do odczytu. Możesz zatem przeczytać jego zawartość, ale oznacza to, że Twój komputer może otworzyć plik i coś z nim zrobić.

Plik programu wymagający dostępu do biblioteki musi na przykład mieć dostęp do odczytu tej biblioteki. Oznacza to, że uprawnienie do odczytu jest najbardziej podstawowym uprawnieniem potrzebnym do pracy z plikami.

W przypadku zastosowania do katalogu czytanie umożliwia wyświetlenie zawartości tego katalogu. Należy pamiętać, że to uprawnienie nie pozwala na odczyt plików w katalogu. System uprawnień Linuksa nie zna dziedziczenia i jedynym sposobem na odczytanie pliku jest użycie uprawnień do odczytu tego pliku.

Jak zapewne się domyślasz, uprawnienie do zapisu zastosowane do pliku umożliwia zapis do pliku. Innymi słowy, pozwala na zmianę zawartości istniejących plików. Nie pozwala jednak na tworzenie ani usuwanie nowych plików ani zmianę uprawnień do plików. Aby to zrobić, musisz przyznać uprawnienia do zapisu w katalogu, w którym chcesz utworzyć plik. W katalogach to uprawnienie pozwala także na tworzenie i usuwanie nowych podkatalogów.

Aby uruchomić plik, potrzebne jest uprawnienie do wykonywania. Domyślnie nigdy nie zostanie zainstalowany, co czyni Linuksa niemal całkowicie odpornym na wirusy. Tylko osoba posiadająca uprawnienia do zapisu w katalogu może zastosować uprawnienia do wykonywania.

Poniżej podsumowano wykorzystanie podstawowych uprawnień:

Uprawnienia w systemie Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Używając chmod

Aby zarządzać uprawnieniami użyj polecenia chmod... Za pomocą chmod możesz ustawić uprawnienia dla użytkownika, grupy i innych. Tego polecenia można używać w dwóch trybach: względnym i bezwzględnym. W trybie bezwzględnym trzy cyfry służą do ustawienia podstawowych uprawnień.

Uprawnienia w systemie Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Ustawiając uprawnienia, oblicz potrzebną wartość. Jeśli chcesz ustawić odczyt, zapis i wykonanie dla użytkownika, odczyt i wykonanie dla grupy oraz odczyt i wykonanie dla innych w /somefile, użyj następującego polecenia chmod:

chmod 755 /somefile

Kiedy używasz chmod W ten sposób wszystkie bieżące uprawnienia zostaną zastąpione uprawnieniami ustawionymi przez Ciebie.

Jeśli chcesz zmienić uprawnienia w stosunku do bieżących uprawnień, możesz użyć chmod w trybie względnym. Za pomocą chmod w trybie względnym pracujesz z trzema wskaźnikami, aby wskazać, co chcesz zrobić:

  1. Najpierw określ, dla kogo chcesz zmienić uprawnienia. Aby to zrobić, możesz wybrać pomiędzy użytkownikiem (u), Grupa (g) i inni (o).
  2. Następnie użyj tej instrukcji, aby dodać lub usunąć uprawnienia z bieżącego trybu lub ustawić je bezwzględnie.
  3. Na końcu używasz r, w и xaby określić, które uprawnienia chcesz ustawić.

Zmieniając uprawnienia w trybie względnym, możesz pominąć część „do”, aby dodać lub usunąć uprawnienia do wszystkich obiektów. Na przykład to polecenie dodaje uprawnienia do wykonywania dla wszystkich użytkowników:

chmod +x somefile

Pracując w trybie względnym, możesz także używać bardziej złożonych poleceń. Na przykład to polecenie dodaje uprawnienia do zapisu grupie i usuwa uprawnienia do odczytu innym osobom:

chmod g+w,o-r somefile

Podczas korzystania z chmod -R o+rx /dane ustawiasz uprawnienia do wykonywania dla wszystkich katalogów, a także dla plików w katalogu /data. Aby ustawić uprawnienia do wykonywania tylko dla katalogów, a nie plików, użyj chmod -R o+ rX /dane.

Wielkie litery X zapewniają, że pliki nie otrzymają uprawnień do wykonywania, chyba że plik ma już ustawione uprawnienia do wykonywania dla niektórych obiektów. To sprawia, że ​​X jest mądrzejszym sposobem radzenia sobie z uprawnieniami do wykonywania; pozwoli to uniknąć ustawiania tego uprawnienia dla plików, gdzie nie jest ono wymagane.

Rozszerzone prawa

Oprócz podstawowych uprawnień, o których właśnie przeczytałeś, Linux ma także zestaw uprawnień zaawansowanych. Nie są to uprawnienia, które ustawiasz domyślnie, ale czasami stanowią przydatny dodatek. W tej sekcji dowiesz się, czym są i jak je skonfigurować.

Zrozumienie SUID, GUID i rozszerzonych praw do bitów lepkich

Istnieją trzy zaawansowane rozdzielczości. Pierwszym z nich jest uprawnienie Ustaw identyfikator użytkownika (SUID). W niektórych szczególnych przypadkach możesz chcieć zastosować to uprawnienie do plików wykonywalnych. Domyślnie użytkownik uruchamiający plik wykonywalny uruchamia ten plik z własnymi uprawnieniami.

Dla zwykłych użytkowników oznacza to zazwyczaj, że korzystanie z programu jest ograniczone. Jednak w niektórych przypadkach użytkownik potrzebuje specjalnych uprawnień tylko do wykonania określonego zadania.

Rozważmy na przykład sytuację, w której użytkownik musi zmienić swoje hasło. W tym celu użytkownik musi zapisać swoje nowe hasło w pliku /etc/shadow. Jednak ten plik nie może być zapisywany przez użytkowników innych niż root:

root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow

Zezwolenie SUID oferuje rozwiązanie tego problemu. W narzędziu /usr/bin/passwd to uprawnienie jest stosowane domyślnie. Oznacza to, że po zmianie hasła użytkownik tymczasowo uzyskuje uprawnienia roota, co pozwala mu na zapis do pliku /etc/shadow. Możesz zobaczyć uprawnienia SUID za pomocą ls -l jak s w miejscu, w którym normalnie spodziewałbyś się zobaczyć x dla uprawnień niestandardowych:

[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd

Zezwolenie SUID może wydawać się przydatne (i w niektórych przypadkach rzeczywiście takie jest), ale jest również potencjalnie niebezpieczne. W przypadku nieprawidłowego użycia możesz przypadkowo oddać uprawnienia roota. Dlatego zalecam używanie go wyłącznie z zachowaniem szczególnej ostrożności.

Większość administratorów nigdy nie będzie musiała z niego korzystać; zobaczysz to tylko w niektórych plikach, w których system operacyjny powinien ustawić to domyślnie.

Drugim specjalnym uprawnieniem jest identyfikator grupy (SGID). Uprawnienie to ma dwa skutki. Po zastosowaniu do pliku wykonywalnego daje użytkownikowi wykonującemu plik uprawnienia właściciela grupy tego pliku. Zatem SGID może robić mniej więcej to samo co SUID. Jednak SGID jest rzadko używany do tego celu.

Podobnie jak w przypadku uprawnień SUID, SGID jest stosowany do niektórych plików systemowych jako ustawienie domyślne.

Po zastosowaniu do katalogu identyfikator SGID może być przydatny, ponieważ można go użyć do ustawienia domyślnego właściciela grupy dla plików i podkatalogów utworzonych w tym katalogu. Domyślnie, gdy użytkownik tworzy plik, jego efektywna grupa podstawowa jest ustawiana jako właściciel grupy dla tego pliku.

Nie zawsze jest to bardzo przydatne, zwłaszcza że użytkownicy Red Hat/CentOS mają swoją grupę podstawową ustawioną na grupę o tej samej nazwie co użytkownik i której użytkownik jest jedynym członkiem. Dlatego domyślnie pliki utworzone przez użytkownika będą udostępniane grupowo.

Wyobraź sobie sytuację, w której użytkownicy Linda i Lori pracują w księgowości i są członkami grupy konto. Domyślnie ci użytkownicy są członkami prywatnej grupy, której są jedynymi członkami. Jednak obaj użytkownicy są członkami grupy kont, ale także jako parametr grupy dodatkowej.

Domyślna sytuacja jest taka, że ​​gdy którykolwiek z tych użytkowników utworzy plik, jego właścicielem staje się grupa podstawowa. Dlatego domyślnie Linda nie może uzyskać dostępu do plików utworzonych przez Lori i odwrotnie. Jeśli jednak utworzysz współdzielony katalog grupowy (powiedzmy /groups/account) i upewnisz się, że do tego katalogu zastosowano uprawnienia SGID i że konto grupowe jest ustawione na Właściciela grupy dla tego katalogu, wszystkie pliki utworzone w tym katalogu i wszystkie jego podkatalogów, uzyskaj także konto grupowe jako domyślny właściciel grupy.

Z tego powodu uprawnienie SGID jest bardzo przydatnym uprawnieniem do instalacji w publicznych katalogach grupowych.

Uprawnienia SGID zostaną pokazane w wynikach ls -l jak s w miejscu, w którym normalnie można znaleźć pozwolenie na wykonanie grupowe:

[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account

Trzecie ze specjalnych uprawnień jest lepkie. To uprawnienie jest przydatne do ochrony plików przed przypadkowym usunięciem w środowisku, w którym wielu użytkowników ma dostęp do zapisu w tym samym katalogu. Jeśli używany jest bit trwały, użytkownik może usunąć plik tylko wtedy, gdy jest właścicielem pliku lub katalogu zawierającego ten plik. Z tego powodu jest to domyślne uprawnienie dla katalogu /tmp i może być przydatne również w przypadku publicznych katalogów grupowych.

Bez lepkiego bitu, jeśli użytkownik może tworzyć pliki w katalogu, może również usuwać pliki z tego katalogu. W środowisku grupy publicznej może to być denerwujące. Wyobraź sobie użytkowników Lindę i Lori, którzy mają uprawnienia do zapisu w katalogu /data/account i uzyskują te uprawnienia poprzez członkostwo w grupie kont. Dlatego Linda może usuwać pliki utworzone przez Lori i odwrotnie.

Po zastosowaniu bitu lepkiego użytkownik może usuwać pliki tylko wtedy, gdy spełniony jest jeden z następujących warunków:

  • Użytkownik jest właścicielem pliku;
  • Użytkownik jest właścicielem katalogu, w którym znajduje się plik.

Podczas korzystania z ls -l, możesz zobaczyć lepki kawałek t w pozycji, w której zwykle widzisz uprawnienia do wykonywania dla innych:

[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/

Stosowanie rozszerzonych praw

Aby zastosować SUID, SGID i bit lepki, możesz również użyć chmod. SUID ma wartość numeryczną 4, SGID ma wartość numeryczną 2, a bit trwały ma wartość numeryczną 1.

Jeśli chcesz zastosować te uprawnienia, musisz dodać czteroznakowy argument do chmod, którego pierwsza cyfra odnosi się do uprawnień specjalnych. Na przykład następujący wiersz doda uprawnienia SGID do katalogu i ustawi rwx dla użytkownika i rx dla grupy i innych:

chmod 2755 /somedir

Jest to dość niepraktyczne, jeśli przed rozpoczęciem pracy musisz zobaczyć bieżące uprawnienia ustawione chmod w trybie absolutnym. (Jeśli tego nie zrobisz, ryzykujesz nadpisaniem uprawnień.) Dlatego zalecam pracę w trybie względnym, jeśli chcesz zastosować którekolwiek ze specjalnych uprawnień:

  1. Do użytku SUID chmod u+s.
  2. Do użytku SGID chmod g+s.
  3. Do użycia z lepkim bitem chmod +tpo którym następuje nazwa pliku lub katalogu, dla którego chcesz ustawić uprawnienia.

Tabela podsumowuje wszystko, co musisz wiedzieć o zarządzaniu uprawnieniami specjalnymi.

Uprawnienia w systemie Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Przykład pracy z uprawnieniami specjalnymi

W tym przykładzie używasz specjalnych uprawnień, aby ułatwić członkom grupy udostępnianie plików w udostępnionym katalogu grupy. Przypisujesz bit ID ustawionego identyfikatora grupy, a także bit trwały i widzisz, że po ich ustawieniu dodawane są funkcje ułatwiające członkom grupy współpracę.

  1. Otwórz terminal, w którym jesteś użytkownikiem Linda. Możesz utworzyć użytkownika za pomocą polecenia Linda, dodaj hasło hasło Linda.
  2. Za pomocą polecenia utwórz katalog /data w katalogu głównym i podkatalog /data/sales mkdir -p /dane/sprzedaż. Wykonać płyta CD /dane/sprzedażaby przejść do katalogu sprzedaży. Wykonać dotknij Lindy1 и dotknij Lindy2aby utworzyć dwa puste pliki będące własnością Lindy.
  3. Wykonać su-lisa aby przełączyć bieżącego użytkownika na użytkownika Lisa, który jest również członkiem grupy sprzedażowej.
  4. Wykonać płyta CD /dane/sprzedaż i z tego katalogu uruchom ls -l. Zobaczysz dwa pliki utworzone przez użytkownika linda i należące do grupy linda. Wykonać rm -f linda*. Spowoduje to usunięcie obu plików.
  5. Wykonać dotknij Lisy1 и dotknij Lisy2aby utworzyć dwa pliki, których właścicielem jest użytkownik lisa.
  6. Wykonać su- aby zwiększyć swoje uprawnienia do rootowania.
  7. Wykonać chmod g+s,o+t /data/salesaby ustawić bit identyfikatora grupy (GUID), a także bit trwały we współdzielonym katalogu grupowym.
  8. Wykonać su-linda. Więc zrób to dotknij Lindy3 и dotknij Lindy4. Powinieneś teraz zobaczyć, że dwa utworzone pliki są własnością grupy sprzedaży, która jest właścicielem grupy katalogu /data/sales.
  9. Wykonać rm -rf lisa*. Sticky Bit uniemożliwia usunięcie tych plików jako użytkownik Linda, ponieważ nie jesteś właścicielem tych plików. Pamiętaj, że jeśli użytkownik Linda jest właścicielem katalogu /data/sales, i tak może usunąć te pliki!

Zarządzanie listami ACL (setfacl, getfacl) w systemie Linux

Mimo że omówione powyżej zaawansowane uprawnienia dodają użyteczną funkcjonalność do sposobu, w jaki Linux radzi sobie z uprawnieniami, nie pozwalają one na nadawanie uprawnień więcej niż jednemu użytkownikowi lub jednej grupie w jednym pliku.

Listy kontroli dostępu oferują tę funkcjonalność. Umożliwiają także administratorom ustawianie domyślnych uprawnień w złożony sposób, w przypadku gdy ustawione uprawnienia mogą się różnić w zależności od katalogów.

Zrozumienie list ACL

Chociaż podsystem ACL dodaje do serwera doskonałą funkcjonalność, ma jedną wadę: nie wszystkie narzędzia go obsługują. W rezultacie możesz utracić ustawienia ACL podczas kopiowania lub przenoszenia plików, a oprogramowanie do tworzenia kopii zapasowych może nie tworzyć kopii zapasowych ustawień ACL.

Narzędzie tar nie obsługuje list ACL. Aby mieć pewność, że ustawienia ACL nie zostaną utracone podczas tworzenia kopii zapasowej, użyj gwiazda zamiast smoły. gwiazda działa z tymi samymi parametrami co tar; po prostu dodaje obsługę ustawień ACL.

Możesz także wykonać kopię zapasową listy ACL za pomocą getfacl, który można przywrócić za pomocą polecenia setfacl. Aby utworzyć kopię zapasową, użyj getfacl -R /katalog > plik.acls. Aby przywrócić ustawienia z pliku kopii zapasowej, użyj setfacl --restore=plik.acl.

Brak wsparcia dla niektórych narzędzi nie powinien stanowić problemu. Listy ACL są często stosowane do katalogów jako miara strukturalna, a nie do pojedynczych plików.
Dlatego nie będzie ich wiele, a tylko kilka, zastosowanych w inteligentnych miejscach w systemie plików. Dlatego stosunkowo łatwo jest przywrócić oryginalne listy ACL, z którymi pracowałeś, nawet jeśli oprogramowanie do tworzenia kopii zapasowych ich nie obsługuje.

Przygotowanie systemu plików dla list ACL

Przed rozpoczęciem pracy z listami ACL może być konieczne przygotowanie systemu plików do obsługi list ACL. Ponieważ metadane systemu plików wymagają rozszerzenia, nie zawsze jest dostępna domyślna obsługa list ACL w systemie plików. Jeśli podczas konfigurowania list ACL dla systemu plików pojawi się komunikat „operacja nieobsługiwana”, oznacza to, że dany system plików może nie obsługiwać list ACL.

Aby to naprawić, musisz dodać opcję uchwyt acl w pliku /etc/fstab, tak aby system plików był domyślnie montowany z obsługą ACL.

Zmiana i przeglądanie ustawień ACL za pomocą setfacl i getfacl

Aby ustawić listę ACL, potrzebujesz polecenia ustaw. Aby zobaczyć aktualne ustawienia ACL, których potrzebujesz getfacl. Zespół ls -l nie pokazuje żadnych istniejących list ACL; po prostu pokazuje + po liście uprawnień, co wskazuje, że listy ACL mają zastosowanie również do pliku.

Przed skonfigurowaniem list ACL zawsze dobrze jest pokazać bieżące ustawienia ACL getfacl. Poniżej przykład możesz zobaczyć aktualne uprawnienia, jak pokazano ls -l, a także jak pokazano za pomocą getfacl. Jeśli przyjrzysz się wystarczająco uważnie, zobaczysz, że wyświetlane informacje są dokładnie takie same.

[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

W wyniku wykonania polecenia getfacl Poniżej możesz zobaczyć, że uprawnienia są pokazane dla trzech różnych obiektów: użytkownika, grupy i innych. Dodajmy teraz listę ACL, aby nadać grupie sprzedaży uprawnienia do odczytu i wykonywania. Polecenie to brzmi setfacl -mg:sprzedaż:rx /dir. W tej drużynie -m wskazuje, że należy zmienić bieżące ustawienia listy ACL. Po tym g:sprzedaż:rx przekazuje polecenie ustawienia listy ACL do odczytu i wykonania (rx) dla grupy (g) obroty. Poniżej możesz zobaczyć, jak wygląda polecenie, a także wynik polecenia getfacl po zmianie bieżących ustawień listy ACL.

[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x

Teraz, gdy już wiesz, jak ustawić grupową listę ACL, zrozumienie list ACL dla użytkowników i innych użytkowników będzie łatwe. Na przykład polecenie setfacl -mu:linda:rwx /data Daje uprawnienia użytkownikowi Linda w katalogu /data bez uczynienia go właścicielem lub zmiany przypisania bieżącego właściciela.

Zespół ustaw ma wiele funkcji i opcji. Jedna opcja jest szczególnie ważna – parametr -R. Jeśli ta opcja zostanie użyta, ustawienie ACL będzie dotyczyć wszystkich plików i podkatalogów, które aktualnie istnieją w katalogu, w którym ustawisz listę ACL. Zaleca się, aby zawsze używać tej opcji podczas zmiany list ACL dla istniejących katalogów.

Praca z domyślnymi listami ACL

Jedną z zalet korzystania z list ACL jest możliwość przyznania uprawnień wielu użytkownikom lub grupom w katalogu. Kolejną korzyścią jest to, że można włączyć dziedziczenie podczas pracy z domyślną listą ACL.

Ustawiając domyślną listę ACL, określisz uprawnienia, które zostaną ustawione dla wszystkich nowych elementów utworzonych w katalogu. Należy pamiętać, że domyślna lista ACL nie zmienia uprawnień istniejących plików i podkatalogów. Aby je zmienić, musisz także dodać zwykłą listę ACL!

Warto to wiedzieć. Jeśli chcesz użyć listy ACL do skonfigurowania dostępu wielu użytkowników lub grup do tego samego katalogu, musisz ustawić tę listę dwukrotnie. Pierwsze użycie setfacl -R -maby zmienić listę ACL dla bieżących plików. Następnie użyj setfacl -md:zadbać o wszystkie nowe elementy, które również powstaną.

Aby ustawić domyślną listę ACL, wystarczy dodać opcję d po opcji -m (kolejność ma znaczenie!). Więc użyj setfacl -md:g:sprzedaż:rx /danejeśli chcesz, aby sprzedaż grupowa czytała i wykonywała wszystko, co kiedykolwiek zostanie utworzone w katalogu /data.

W przypadku korzystania z domyślnych list ACL przydatne może być także ustawienie list ACL dla innych. Zwykle nie ma to większego sensu, ponieważ możesz także zmienić uprawnienia dla innych użytkowników chmod. Jednak z czym nie można zrobić chmod, polega na określeniu praw, które powinny zostać przyznane innym użytkownikom dla każdego nowego pliku, jaki kiedykolwiek zostanie utworzony. Jeśli chcesz na przykład uniemożliwić innym uzyskanie jakichkolwiek uprawnień do czegokolwiek utworzonego w /data, użyj setfacl -md:o::- /data.

Listy ACL i zwykłe uprawnienia nie zawsze są dobrze zintegrowane. Problemy mogą pojawić się, jeśli zastosujesz domyślną listę ACL do katalogu po dodaniu elementów do tego katalogu, a następnie spróbujesz zmienić normalne uprawnienia. Zmiany dotyczące zwykłych uprawnień nie zostaną dobrze odzwierciedlone w przeglądzie ACL. Aby uniknąć problemów, najpierw ustaw normalne uprawnienia, następnie ustaw domyślne listy ACL (a potem staraj się ich już nie zmieniać).

Przykład zarządzania rozszerzonymi uprawnieniami przy użyciu list ACL

W tym przykładzie będziesz kontynuować pracę z utworzonymi wcześniej katalogami /data/account i /data/sales. W poprzednich przykładach upewniłeś się, że grupa sprzedaży ma uprawnienia do /data/sales, a grupa kont ma uprawnienia do /data/account.

Najpierw upewnij się, że grupa kont ma uprawnienia do odczytu katalogu /data/sales i że grupa sprzedaży ma uprawnienia do odczytu katalogu /data/account.

Następnie ustawiasz domyślne listy ACL, aby mieć pewność, że wszystkie nowe pliki mają poprawnie ustawione uprawnienia do wszystkich nowych elementów.

  1. Otwórz terminal.
  2. Wykonać setfacl -mg:account:rx /data/sales и setfacl -mg:sprzedaż:rx /dane/konto.
  3. Wykonać getfaclaby upewnić się, że uprawnienia zostały ustawione tak, jak chciałeś.
  4. Wykonać setfacl -md:g:account:rwx,g:sales:rx /data/salesaby ustawić domyślną listę ACL dla katalogu sprzedaży.
  5. Dodaj domyślną listę ACL dla katalogu /data/account za pomocą setfacl -md:g:sprzedaż:rwx,g:konto:rx /data/konto.
  6. Sprawdź, czy ustawienia listy ACL obowiązują, dodając nowy plik do /data/sales. Wykonać dotknij /data/sales/newfile i wykonać getfacl /data/sales/newfile aby sprawdzić aktualne uprawnienia.

Ustawianie domyślnych uprawnień za pomocą umask

Powyżej nauczyłeś się, jak pracować z domyślnymi listami ACL. Jeśli nie używasz listy ACL, dostępna jest opcja powłoki, która określa domyślne uprawnienia, które otrzymasz: umaska (odwrotna maska). W tej sekcji dowiesz się jak zmienić domyślne uprawnienia za pomocą umaska.

Być może zauważyłeś, że podczas tworzenia nowego pliku ustawiane są pewne domyślne uprawnienia. Te uprawnienia są określane przez ustawienie umaska. To ustawienie powłoki dotyczy wszystkich użytkowników podczas logowania. W parametrze umaska używana jest wartość liczbowa, którą odejmuje się od maksymalnych uprawnień, które można ustawić automatycznie dla pliku; Maksymalne ustawienie dla plików to 666, a dla katalogów to 777.

Od tej reguły obowiązują jednak pewne wyjątki. Możesz znaleźć pełny przegląd ustawień umaska w poniższej tabeli.

Z numerów użytych w umaska, podobnie jak w przypadku argumentów numerycznych polecenia chmod, pierwsza cyfra odnosi się do uprawnień użytkownika, druga cyfra odnosi się do uprawnień grupy, a ostatnia odnosi się do domyślnych uprawnień ustawionych dla innych. Oznaczający umaska domyślnie 022 daje 644 dla wszystkich nowych plików i 755 dla wszystkich nowych katalogów utworzonych na serwerze.

Pełny przegląd wszystkich wartości liczbowych umaska a ich wyniki w poniższej tabeli.

Uprawnienia w systemie Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Prosty sposób sprawdzenia działania ustawienia umask jest następujący: zacznij od domyślnych uprawnień do plików ustawionych na 666 i odejmij maskę umask, aby uzyskać efektywne uprawnienia. Zrób to samo dla katalogu i jego domyślnych uprawnień 777.

Istnieją dwa sposoby zmiany ustawienia umask: dla wszystkich użytkowników i dla poszczególnych użytkowników. Jeśli chcesz ustawić opcję umask dla wszystkich użytkowników, musisz upewnić się, że ustawienie umask będzie przestrzegane podczas uruchamiania plików środowiska powłoki, jak określono w pliku /etc/profile. Prawidłowe podejście polega na utworzeniu skryptu powłoki o nazwie umask.sh w katalogu /etc/profile.d i określeniu maski umask, której chcesz używać w tym skrypcie powłoki. Jeżeli w tym pliku umask zostanie zmieniony, zostanie on zastosowany do wszystkich użytkowników po zalogowaniu się na serwer.

Alternatywą dla ustawienia umask poprzez /etc/profile i powiązane pliki, jeśli dotyczy to wszystkich logujących się użytkowników, jest zmiana ustawień umask w pliku o nazwie .profile, który jest tworzony w katalogu domowym każdego użytkownika.

Ustawienia zastosowane w tym pliku dotyczą tylko indywidualnego użytkownika; dlatego jest to dobra metoda, jeśli potrzebujesz więcej szczegółów. Osobiście podoba mi się ta funkcja umożliwiająca zmianę domyślnej maski użytkownika root na 027, podczas gdy zwykli użytkownicy pracują z domyślną maską 022.

Praca z rozszerzonymi atrybutami użytkownika

To ostatnia sekcja dotycząca uprawnień systemu Linux.

Podczas pracy z uprawnieniami zawsze istnieje relacja pomiędzy obiektem użytkownika lub grupy a uprawnieniami, jakie te obiekty użytkownika lub grupy mają do pliku lub katalogu. Alternatywną metodą ochrony plików na serwerze Linux jest praca z atrybutami.
Atrybuty wykonują swoją pracę niezależnie od tego, kto uzyskuje dostęp do pliku.

Podobnie jak w przypadku list ACL, może być konieczne włączenie atrybutów plików. uchwyt.

To jest opcja użytkownik_xattr. Jeśli podczas pracy z rozszerzonymi atrybutami użytkownika pojawi się komunikat „operacja nieobsługiwana”, pamiętaj o ustawieniu opcji uchwyt w pliku /etc/fstab.

Wiele atrybutów jest udokumentowanych. Niektóre atrybuty są dostępne, ale jeszcze nie zostały zaimplementowane. Nie używaj ich; nic ci nie przyniosą.

Poniżej znajdują się najbardziej przydatne atrybuty, które możesz zastosować:

A Ten atrybut gwarantuje, że czas dostępu do pliku nie ulegnie zmianie.
Zazwyczaj przy każdym otwarciu pliku czas dostępu do pliku powinien być rejestrowany w metadanych pliku. Ma to negatywny wpływ na wydajność; dlatego w przypadku plików, do których regularnie uzyskuje się dostęp, atrybut A można użyć do wyłączenia tej funkcji.

a Ten atrybut umożliwia dodanie pliku, ale nie jego usunięcie.

c Jeśli używasz systemu plików obsługującego kompresję na poziomie woluminu, ten atrybut pliku gwarantuje, że plik zostanie skompresowany przy pierwszym włączeniu mechanizmu kompresji.

D Ten atrybut gwarantuje, że zmiany w plikach zostaną natychmiast zapisane na dysku, a nie najpierw buforowane. Jest to przydatny atrybut ważnych plików baz danych, zapewniający, że nie zostaną utracone pomiędzy pamięcią podręczną plików a dyskiem twardym.

d Ten atrybut gwarantuje, że plik nie zostanie zapisany w kopiach zapasowych, w których używane jest narzędzie zrzutu.

I Ten atrybut umożliwia indeksowanie katalogu, w którym jest włączony. Zapewnia to szybszy dostęp do plików dla prymitywnych systemów plików, takich jak Ext3, które nie korzystają z bazy danych B-tree w celu szybkiego dostępu do plików.

i Ten atrybut sprawia, że ​​plik jest niezmienny. Dlatego nie można wprowadzać żadnych zmian w pliku, co jest przydatne w przypadku plików wymagających dodatkowej ochrony.

j Ten atrybut zapewnia, że ​​w systemie plików ext3 plik zostanie najpierw zapisany w dzienniku, a następnie w blokach danych na dysku twardym.

s Nadpisz bloki, w których plik został zapisany na 0 s po usunięciu pliku. Dzięki temu po usunięciu pliku nie będzie można go odzyskać.

u Atrybut ten przechowuje informację o usunięciu. Dzięki temu można opracować narzędzie, które będzie wykorzystywać te informacje do ratowania usuniętych plików.

Jeśli chcesz zastosować atrybuty, możesz użyć polecenia czatować. Na przykład użyj chattr +s jakiś plikaby zastosować atrybuty do jakiegoś pliku. Chcesz usunąć atrybut? Następnie użyj chattr -s jakiś pliki zostanie usunięty. Aby uzyskać przegląd wszystkich aktualnie zastosowanych atrybutów, użyj polecenia lsattr.

Streszczenie

W tym artykule dowiedziałeś się, jak pracować z uprawnieniami. Przeczytałeś o trzech uprawnieniach podstawowych, uprawnieniach zaawansowanych i sposobie korzystania z list ACL w systemie plików. Nauczyłeś się także, jak używać parametru umask do stosowania domyślnych uprawnień. Na końcu tego artykułu dowiesz się, jak używać atrybutów rozszerzonych przez użytkownika, aby zastosować dodatkową warstwę zabezpieczeń systemu plików.

Jeśli spodobało Ci się to tłumaczenie, napisz o tym w komentarzach. Będzie większa motywacja do wykonywania przydatnych tłumaczeń.

Poprawiłem kilka literówek i błędów gramatycznych w artykule. Zredukowano niektóre nieporęczne akapity do mniejszych, aby ułatwić czytanie.

Zamiast „Tylko osoba z uprawnieniami administracyjnymi do katalogu może ubiegać się o uprawnienia do wykonywania”. poprawiono na „Tylko osoba z uprawnieniami do zapisu w katalogu może zastosować uprawnienia do wykonywania.”, co byłoby bardziej poprawne.

Dziękuję za komentarze Berez.

Zastąpione:
Jeśli nie jesteś właścicielem użytkownika, powłoka sprawdzi, czy jesteś członkiem grupy, zwanej także grupą pliku.

Do:
Jeśli nie jesteś właścicielem pliku, powłoka sprawdzi, czy jesteś członkiem grupy mającej uprawnienia do pliku. Jeśli jesteś członkiem tej grupy, będziesz mieć dostęp do pliku z uprawnieniami ustawionymi dla grupy, a powłoka przestanie sprawdzać.

Dziękuję za Twój komentarz KryptoPirat

Źródło: www.habr.com

Dodaj komentarz