Wyszukiwanie w witrynie

Seria RHCSA: Korzystanie z list ACL (list kontroli dostępu) i montowanie udziałów Samba/NFS - część 7


W ostatnim artykule (seria RHCSA, część 6) zaczęliśmy wyjaśniać, jak skonfigurować lokalną pamięć systemową przy użyciu parted i ssm.

Omówiliśmy także, jak tworzyć i montować zaszyfrowane woluminy za pomocą hasła podczas uruchamiania systemu. Ponadto ostrzegaliśmy Cię, abyś unikał wykonywania krytycznych operacji zarządzania pamięcią masową na zamontowanych systemach plików. Mając to na uwadze, przeanalizujemy teraz najczęściej używane formaty systemów plików w Red Hat Enterprise Linux 7, a następnie przejdziemy do omówienia tematów ręcznego montowania, używania i odmontowywania i automatycznie sieciuj systemy plików (CIFS i NFS), wraz z implementacją list kontroli dostępu dla Twojego systemu.

Warunki wstępne

Zanim przejdziesz dalej, upewnij się, że masz dostępny serwer Samba i serwer NFS (pamiętaj, że NFSv2 nie jest już obsługiwany w RHEL 7).

W tym przewodniku będziemy używać komputera z IP 192.168.0.10 z uruchomionymi na nim obiema usługami jako serwerem oraz urządzenia RHEL 7 jako klienta z adresem IP 192.168 .0.18. W dalszej części artykułu dowiemy się, które pakiety należy zainstalować na kliencie.

Formaty systemu plików w RHEL 7

Począwszy od RHEL 7, XFS został wprowadzony jako domyślny system plików dla wszystkich architektur ze względu na jego wysoką wydajność i skalowalność. Obecnie obsługuje maksymalny rozmiar systemu plików wynoszący 500 TB, co wynika z najnowszych testów przeprowadzonych przez firmę Red Hat i jej partnerów dla głównego nurtu sprzętu.

Ponadto XFS włącza user_xattr (rozszerzone atrybuty użytkownika) i acl (listy kontroli dostępu POSIX) jako domyślne opcje montowania, w przeciwieństwie do ext3 lub ext4 (ext2 jest uważany za przestarzały od wersji RHEL 7), co oznacza, że nie musisz jawnie określać tych opcji ani w wierszu poleceń, ani w /etc/fstab podczas montowania systemu plików XFS (jeśli chcesz wyłącz takie opcje w tym ostatnim przypadku, musisz jawnie użyć no_acl i no_user_xattr).

Należy pamiętać, że rozszerzone atrybuty użytkownika można przypisać do plików i katalogów w celu przechowywania dowolnych dodatkowych informacji, takich jak typ MIME, zestaw znaków lub kodowanie pliku, podczas gdy uprawnienia dostępu do atrybutów użytkownika są definiowane przez zwykłe bity uprawnień do plików.

Listy kontroli dostępu

Ponieważ każdy administrator systemu, zarówno początkujący, jak i ekspert, dobrze zna zwykłe uprawnienia dostępu do plików i katalogów, które określają pewne uprawnienia (odczyt, zapis i wykonywanie ) dla właściciela, grupy i „świata” (wszystkich pozostałych). Jeśli jednak chcesz trochę odświeżyć pamięć, możesz zapoznać się z częścią 3 serii RHCSA.

Ponieważ jednak standardowy zestaw ugo/rwx nie pozwala na konfigurowanie różnych uprawnień dla różnych użytkowników, wprowadzono listy ACL, aby zdefiniować bardziej szczegółowe prawa dostępu do plików i katalogów niż te określone w zwykłych uprawnieniach.

W rzeczywistości uprawnienia zdefiniowane przez listę ACL stanowią nadzbiór uprawnień określonych przez bity uprawnień do plików. Zobaczmy, jak to wszystko przekłada się na zastosowanie w prawdziwym świecie.

1. Istnieją dwa typy list ACL: listy ACL dostępu, które można zastosować do określonego pliku lub katalogu) oraz >domyślne listy ACL, które można zastosować tylko do katalogu. Jeśli zawarte w nich pliki nie mają ustawionej listy ACL, dziedziczą domyślną listę ACL ze swojego katalogu nadrzędnego.

2. Na początek listy ACL można skonfigurować dla użytkownika, grupy lub użytkownika niebędącego właścicielem pliku.

3. Listy ACL są ustawiane (i usuwane) za pomocą setfacl, z -m lub - x odpowiednio opcje.

Na przykład utwórzmy grupę o nazwie tecmint i dodajmy do niej użytkowników johndoe i davenull:

groupadd tecmint
useradd johndoe
useradd davenull
usermod -a -G tecmint johndoe
usermod -a -G tecmint davenull

Sprawdźmy też, czy obaj użytkownicy należą do dodatkowej grupy tecmint:

id johndoe
id davenull

Utwórzmy teraz katalog o nazwie plac zabaw w /mnt i wewnątrz plik o nazwie testfile.txt. Ustawimy właściciela grupy na tecmint i zmienimy jej domyślne uprawnienia ugo/rwx na 770 (uprawnienia do odczytu, zapisu i wykonywania przyznane obu właściciel i właściciel grupy pliku):

mkdir /mnt/playground
touch /mnt/playground/testfile.txt
chmod 770 /mnt/playground/testfile.txt

Następnie zmień użytkownika na johndoe i davenull, w tej kolejności, i zapisz do pliku:

echo "My name is John Doe" > /mnt/playground/testfile.txt
echo "My name is Dave Null" >> /mnt/playground/testfile.txt

Jak na razie dobrze. Teraz poprośmy użytkownika gacanepa o zapis do pliku – a operacja zapisu zakończy się niepowodzeniem, czego można było się spodziewać.

Ale co, jeśli faktycznie potrzebujemy, aby użytkownik gacanepa (który nie jest członkiem grupy tecmint) miał uprawnienia do zapisu w pliku /mnt/playground/testfile.txt?< Pierwszą rzeczą, która może przyjść Ci do głowy, jest dodanie tego konta użytkownika do grupy tecmint. Ale to da mu uprawnienia do zapisu WSZYSTKICH plików, w których bit zapisu jest ustawiony dla grupy, a tego nie chcemy. Chcemy tylko, aby mógł pisać do /mnt/playground/testfile.txt.

touch /mnt/playground/testfile.txt
chown :tecmint /mnt/playground/testfile.txt
chmod 777 /mnt/playground/testfile.txt
su johndoe
echo "My name is John Doe" > /mnt/playground/testfile.txt
su davenull
echo "My name is Dave Null" >> /mnt/playground/testfile.txt
su gacanepa
echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt

Dajmy użytkownikowi gacanepa dostęp do odczytu i zapisu w pliku /mnt/playground/testfile.txt.

Uruchom jako root,

setfacl -R -m u:gacanepa:rwx /mnt/playground

i pomyślnie dodasz listę ACL, która umożliwia gacanepie zapisywanie w pliku testowym. Następnie przełącz się na użytkownika gacanepa i spróbuj ponownie zapisać do pliku:

echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt

Aby wyświetlić listy ACL dla określonego pliku lub katalogu, użyj getfacl:

getfacl /mnt/playground/testfile.txt

Aby ustawić domyślną listę ACL na katalog (który jej zawartość będzie dziedziczyć, chyba że zostanie nadpisana w inny sposób), dodaj d: przed regułą i określ katalog zamiast nazwy pliku:

setfacl -m d:o:r /mnt/playground

Powyższa lista ACL umożliwi użytkownikom spoza grupy właścicieli dostęp do odczytu przyszłej zawartości katalogu /mnt/playground. Zwróć uwagę na różnicę w wynikach getfacl /mnt/playground przed i po zmianie:

Rozdział 20 w oficjalnym podręczniku administrowania pamięcią masową RHEL 7 zawiera więcej przykładów ACL i gorąco polecam Ci się z nim zapoznać i mieć go pod ręką jako odniesienie.