Listy kontroli dostępu (znane również jako ACL) są cechą jądra Linux, która pozwala zdefiniować bardziej szczegółowe prawa dostępu do plików i katalogów niż te określone przez zwykłe ugo/rwx uprawnienia.
Na przykład standard ugo/rwx uprawnienia nie pozwalają na ustawienie różnych uprawnień dla różnych indywidualnych użytkowników lub grup. Z listami ACL jest to stosunkowo łatwe, jak zobaczymy w tym artykule.
Aby upewnić się, że Twoje systemy plików obsługują aktualnie listy ACL, powinieneś sprawdzić, czy zostały one zamontowane za pomocą opcji acl. Aby to zrobić, użyjemy tune2fs dla systemów plików ext2/3/4, jak wskazano poniżej. Zastępować /dev/sda1 z urządzeniem lub systemem plików, który chcesz sprawdzić:
# tune2fs -l /dev/sda1 | grep "Domyślne opcje montowania:"
Notatka: Z XFS, Listy kontroli dostępu są obsługiwane po wyjęciu z pudełka.
W następującym wew4 system plików, widzimy, że listy ACL zostały włączone dla /dev/xvda2:
# tune2fs -l /dev/xvda2 | grep "Domyślne opcje montowania:"
Jeśli powyższe polecenie nie wskazuje, że system plików został podłączony z obsługą list ACL, najprawdopodobniej jest to spowodowane noacli opcja obecna w /etc/fstab.
W takim przypadku usuń go, odmontuj system plików, a następnie zamontuj go ponownie lub po prostu zrestartuj system po zapisaniu zmian w /etc/fstab.
Aby zilustrować, jak działają listy ACL, użyjemy grupy o nazwie programiści i dodaj użytkowników walterwhite oraz saulgoodman (tak, jestem fanem Breaking Bad!).:
# groupdodaj programistów. # useradd walterwhite. # useradd saulgoodman. # usermod -a -G programiści walterwhite. # usermod -a -G deweloperzy saulgoodman.
Zanim przejdziemy dalej, sprawdźmy, czy obaj użytkownicy zostali dodani do grupy deweloperów:
# id. # identyfikator saulgoodmana.
Stwórzmy teraz katalog o nazwie test w /mnti plik o nazwie acl.txt wewnątrz (/mnt/test/acl.txt).
Następnie ustawimy właściciela grupy na programiści i zmień jego wartość domyślną ugo/rwx uprawnienia rekursywnie do 770 (w ten sposób nadanie uprawnień do odczytu, zapisu i wykonywania nadanych zarówno właścicielowi, jak i właścicielowi grupy pliku):
# mkdir /mnt/test. # dotknij /mnt/test/acl.txt. # chgrp -R programiści /mnt/test. # chmod -R 770 /mnt/test.
Zgodnie z oczekiwaniami możesz napisać do /mnt/test/acl.txt NS walterwhite lub saulgoodman:
# su - biała. # echo "Nazywam się Walter White" > /mnt/test/acl.txt. # Wyjście. # su - saulgoodman. # echo "Nazywam się Saul Goodman" >> /mnt/test/acl.txt. # Wyjście.
Na razie w porządku. Jednak wkrótce zobaczymy problem, gdy będziemy musieli przyznać dostęp do zapisu do /mnt/test/acl.txt dla innego użytkownika, który nie należy do grupy deweloperów.
Standard ugo/rwx uprawnienia wymagałyby dodania nowego użytkownika do grupy deweloperów, ale to dałoby mu te same uprawnienia do wszystkich obiektów należących do grupy. Właśnie tam przydają się listy ACL.
Istnieją dwa rodzaje list ACL: dostęp do list ACL są (które są stosowane do pliku lub katalogu) i domyślne (opcjonalne) listy ACL, który można zastosować tylko do katalogu.
Jeśli pliki znajdują się w katalogu, w którym domyślna lista ACL zostały ustawione, nie mają własnej listy ACL, dziedziczą domyślną listę ACL swojego katalogu nadrzędnego.
Dajmy użytkownikowi gakanepa dostęp do odczytu i zapisu do /mnt/test/acl.txt. Zanim to zrobimy, przyjrzyjmy się aktualnym ustawieniom ACL w tym katalogu z:
# getfacl /mnt/test/acl.txt.
Następnie zmień listy ACL w pliku, użyj ty:
po którym następuje nazwa użytkownika i :rw
aby wskazać uprawnienia do odczytu / zapisu:
# setfacl -m u: gacanepa: rw /mnt/test/acl.txt.
I biegnij getfacl ponownie w pliku w celu porównania. Poniższy obraz przedstawia "Przed" oraz "Po":
# getfacl /mnt/test/acl.txt.
Następnie musimy dać innym uprawnienia do wykonywania na /mnt/test informator:
# chmod +x /mnt/test.
Pamiętaj, że aby uzyskać dostęp do zawartości katalogu, zwykły użytkownik musi mieć uprawnienia do wykonywania w tym katalogu.
Użytkownik gakanepa powinien być teraz w stanie zapisywać do pliku. Przełącz się na to konto użytkownika i wykonaj następujące polecenie, aby potwierdzić:
# echo "Nazywam się Gabriel Cánepa" >> /mnt/test/acl.txt.
Aby ustawić domyślną listę ACL na katalog (który odziedziczy jego zawartość, chyba że zostanie nadpisany inaczej), dodaj D:
przed regułą i określ katalog zamiast nazwy pliku:
# setfacl -m d: o: r /mnt/test. # getfacl /mnt/test/
Powyższa lista ACL pozwoli użytkownikom spoza grupy właścicieli na dostęp do odczytu przyszłej zawartości /mnt/test informator. Zwróć uwagę na różnicę w wyjściu getfacl /mnt/test przed i po zmianie:
Aby usunąć określoną listę ACL, zamień -m
w powyższych poleceniach z -x
. Na przykład,
# setfacl -x d: o /mnt/test.
Alternatywnie możesz również użyć -b
możliwość usunięcia WSZYSTKICH list ACL w jednym kroku:
# setfacl -b /mnt/test.
Aby uzyskać więcej informacji i przykładów korzystania z list ACL, zapoznaj się z rozdział 10, sekcja 2, z Przewodnik bezpieczeństwa openSUSE (dostępny również do bezpłatnego pobrania w formacie PDF).
Przestrzeń dyskowa to kolejny zasób, który należy uważnie wykorzystywać i monitorować. Aby to zrobić, limity można ustawić na podstawie systemu plików, albo dla pojedynczych użytkowników, albo dla grup.
W ten sposób nałożony jest limit wykorzystania dysku dozwolonego dla danego użytkownika lub określonej grupy i możesz mieć pewność, że Twoje dyski nie zostaną zapełnione do pełna przez nieostrożnego (lub nieudolnego) użytkownika.
Pierwszą rzeczą, którą musisz zrobić, aby włączyć limity w systemie plików, jest zamontowanie go z opcjami usrquota lub grpquota (odpowiednio dla limitów użytkowników i grup) w /etc/fstab.
Na przykład włączmy limity oparte na użytkownikach /dev/vg00/vol_backups i limity grupowe na /dev/vg00/vol_projects.
Zwróć uwagę, że UUID służy do identyfikacji każdego systemu plików.
UUID=f6d1eba2-9aed-40ea-99ac-75f4be05c05a /home/projects ext4 defaults, grpquota 0 0. UUID=e1929239-5087-44b1-9396-53e09db6eb9e /home/backups ext4 defaults, usrquota 0 0.
Odmontuj i ponownie zamontuj oba systemy plików:
# odmontuj /home/projekty. # odmontuj /home/backups. # mount -o przemontuj /home/projects. # mount -o remount /home/backups
Następnie sprawdź, czy opcje usrquota i grpquota są obecne w danych wyjściowych mount (zobacz wyróżnione poniżej):
# mocowanie | grep vg00.
Na koniec uruchom następujące polecenia, aby zainicjować i włączyć przydziały:
# kontrola kwot -avugc. # Quoteon -vu /home/backups. # Quoteon -vg /home/projekty.
To powiedziawszy, przypiszmy teraz limity do nazwy użytkownika i grupy, o której wspomnieliśmy wcześniej. Możesz później wyłączyć limity za pomocą przydział.
Zacznijmy od włączenia listy ACL /home/backups dla użytkownika gakanepa, co da mu uprawnienia do odczytu, zapisu i wykonywania w tym katalogu:
# setfacl -m u: gacanepa: rwx /home/backups/
Następnie z
# edquota -u gacanepa.
Sprawimy, że miękkie granica=900 i trudno limit=1000 Bloki (1024 bajty/blok * 1000 bloków = 1024000 bajtów = 1 MB) wykorzystania miejsca na dysku.
Możemy również postawić limit 20 oraz 25 jako miękkie i twarde limity liczby plików, które może utworzyć ten użytkownik.
Powyższe polecenie uruchomi edytor tekstu ($EDYTOR) z plikiem tymczasowym, w którym możemy ustawić wspomniane wcześniej limity:
Te ustawienia spowodują wyświetlenie ostrzeżenia użytkownikowi gakanepa kiedy albo osiągnął 900-blok lub 20-i-węzłowy limity dla domyślnego 7-dniowego okresu karencji.
Jeśli Powyżej kwoty sytuacja nie została do tego czasu wyeliminowana (np. przez usunięcie plików), miękki limit będzie stań się sztywnym limitem, a ten użytkownik nie będzie mógł wykorzystywać więcej miejsca ani tworzyć więcej akta.
Aby przetestować, niech użytkownik gacanepa spróbuje utworzyć pustą 2 MB plik o nazwie test1 wewnątrz /home/backups:
# dd if=/dev/zero of=/home/backups/test1 bs=2M count=1. # ls -lh /home/kopie zapasowe/test1.
Jak widać, plik operacji zapisu kończy się niepowodzeniem z powodu przekroczenia limitu dysku. Ponieważ dopiero pierwszy 1000 KB są zapisywane na dysku, w takim przypadku najprawdopodobniej będzie to uszkodzony plik.
Podobnie możesz utworzyć listę ACL dla grup programistów, aby dać członkom tej grupy dostęp rwx do /home/projects:
# setfacl -m g: programiści: rwx /home/projekty/
I ustaw limity kwot za pomocą:
# programiści edquota -g.
Tak jak zrobiliśmy z użytkownikiem gakanepa wcześniej.
Okres prolongaty można określić na dowolną liczbę sekund, minut, godzin, dni, tygodni lub miesięcy, wykonując.
# edquota -t.
i aktualizowanie wartości poniżej Okres karencji bloku i okres karencji i-węzła.
W przeciwieństwie do użycia bloku lub i-węzła (które jest ustawiane na podstawie użytkownika lub grupy), okres prolongaty jest ustawiany dla całego systemu.
Aby zgłosić limity, możesz użyć limitu -u [użytkownik]
lub przydział -g [grupa]
po szybką listę lub repquota -v [/ścieżka/do/systemu plików]
aby uzyskać bardziej szczegółowy (pełny) i ładnie sformatowany raport.
Oczywiście będziesz chciał wymienić [użytkownik]
, [Grupa]
, oraz [/ścieżka/do/systemu plików]
z określonymi nazwami użytkowników / grup i systemem plików, który chcesz sprawdzić.
W tym artykule wyjaśniliśmy, jak ustawić Listy kontroli dostępu oraz przydziały dyskowe dla użytkowników i grup. Korzystając z obu, będziesz mógł efektywniej zarządzać uprawnieniami i wykorzystaniem dysku.
Jeśli chcesz dowiedzieć się więcej o limitach, możesz zapoznać się z Mini-poradnik dotyczący limitu w Projekcie Dokumentacji Linuksa.
Nie trzeba dodawać, że możesz również liczyć na to, że odpowiemy na pytania. Po prostu prześlij je za pomocą poniższego formularza komentarzy, a my z przyjemnością rzucimy okiem.