W poprzednim artykule opisaliśmy listy dostępu ACL. Czas na część praktyczną.
Podczas testu korzystam z systemu Linux Ubuntu w wersji 18.04 LTS.
Na potrzeby artykułu proponuje utworzyć użytkownika test i korzystać z jego katalogu domowego – w tym przypadku będzie to /home/test
Dodajemy użytkownika
$ adduser test
Po dodaniu użytkownika przelogujemy się na niego poleceniem:
$ su test
Po przelogowaniu pozostajemy w katalogu root a chcemy pracować w katalogu domowym użytkownika więc wpisujemy w linii poleceń:
$ cd ..
$ cd home/test/
W pierwszej kolejności utwórzmy katalog o nazwie aclki, na którym będziemy pracować. Wpisz poniższe polecenie:
$ mkdir aclki
Przejdź do utworzonego katalogu poleceniem:
$ cd aclki/
Umieść w nim dwa pliki. Mogą to być pliki tekstowe zawierające choćby przykładowe ciągi znaków.
$ seq 15 >przyklad1.txt
$ seq 20 >przyklad2.txt
Powyższe polecenia utworzą pliki zapisane cyframi.
Sprawdź czy mają przypisane już jakieś listy dostępu. Wpisz polecenie:
$ ls -l
![](https://blog.forpsi.pl/wp-content/uploads/2022/09/bez-acl.png)
W powyższym wyniku nie widzimy by którykolwiek z plików posiadał na końcu znak plusa, co oznacza, że ACL’ka nie jest ustawiona.
Stworzymy teraz grupy oraz przypiszemy do nich użytkowników, wcześniej jednak należy przelogować się na użytkownika z właściwymi uprawnieniami:
$ su -
Grupę dodajemy poprzez polecenie groupadd:
$ sudo groupadd dyrekcja
$ sudo groupadd ksiegowosc
Następnie dodamy użytkownika bocian, który zostanie przypisany do grupy dyrekcja:
$ useradd bocian -m -G dyrekcja
$ passwd bocian
Parametr -m utworzy automatycznie katalog domowy użytkownika
Dodajmy kolejnego użytkownika, kawka:
$ useradd kawka -m -G ksiegowosc
$ passwd kawka
kolejnym niech będzie sowa, która jest w dyrekcji oraz zna się na księgowości w związku z czym przypiszemy ją do obu grup:
$ useradd sowa -m -G dyrekcja,ksiegowosc
$ passwd sowa
Przetestujmy teraz ACLkę. Wcześniej zalogujemy się na użytkownika test:
$ su test
Jeśli nie znajduje się we właściwym katalogu należy przejść do home/test/aclki
Nadajemy prawa np. zapisu użytkownikowi bocian do drugiego pliku. Posłuży nam do tego polecenie setfacl
$ setfacl -m u:bocian:w przyklad2.txt
Przeanalizujmy powyższe polecenie.
Parametr -m służy do dodawania lub modyfikacji wpisu, u: to użytkownik, :w określa jakie prawo nadajemy. W tym przypadku jest to write – prawo zapisu
Sprawdźmy teraz czy faktycznie zostały wprowadzone jakieś zmiany.
$ ls -l
![](https://blog.forpsi.pl/wp-content/uploads/2022/09/jest-acl.png)
Jak widać na powyższym obrazie został dodany symbol plus (oznaczony w czerwonej ramce) w pliku przyklad2.txt, czyli została utworzona lista dostępu.
Wyświetlimy listę dostępu dla tego pliku poleceniem getfacl
$ getfacl przyklad2.txt
![](https://blog.forpsi.pl/wp-content/uploads/2022/09/acl-sprawdzenie.png)
Jak widać na powyższym znajduje się tam wpis dotyczący użytkownika bocian z prawami zapisu.
UWAGA – bardzo istotną kwestią jest to, że użytkownika, który znajduje się na liście ACL nie obowiązują już żadne inne wpisy, a jedynie te podane na liście. W tym przypadku tylko i wyłącznie jest możliwy zapis, pomimo tego, że użytkownik należy do grupy posiadającej prawa zarówno do odczytywania jak i zapisywania.
Sprawdźmy zatem czy faktycznie tak jest. Przelogujemy się na użytkownika bocian:
$ su bocian
Następnie wejdźmy do katalogu home/test/aclki/ i wyświetlmy jego zawartość:
$ ls -l
Zobaczmy czy uda się wyświetlić plik przykład2.txt:
$ vim przyklad2.txt
![](https://blog.forpsi.pl/wp-content/uploads/2022/09/permision-denied.jpg)
Jak widać zawartość się nie wyświetliła a Vim poinformował nas o braku dostępu.
By wyjść z vim’a wpisujemy:
$ :q [enter]
Co się w takim razie stanie w przypadku drugiego pliku, któremu nie zmieniliśmy uprawnień?
$ vim przyklad1.txt
Vim wyświetlił zawartość z jednoczesną informacją [readolny] zgodną z uprawnieniami pliku, stało się tak, ponieważ dla niego nie przydzieliliśmy list dostępu.
Skoro użytkownik bocian ma nadane prawa zapisu do pliku przyklad2.txt spróbujmy coś zapisać:
$ seq 4 >> przyklad2.txt
Polecenie nie wyrzuciło błędów.
Możemy sprawdzić czy faktycznie tak się stało. Wychodzimy z użytkownika bocian
$ exit
Przechodzimy do użytkownika test i właściwego katalogu, wyświetlamy vim’em plik przyklad2.txt. Powinny być widoczne dopisane 4 cyfry na końcu pliku, jak na poniższym screenie.
![](https://blog.forpsi.pl/wp-content/uploads/2022/09/4dodane.jpg)
ACL dla GRUPY
W podobny sposób jak w przypadku użytkowników przydzielamy grupy do list. Zamieniamy jedynie parametr u na g (grupa).
Będąc na użytkowniku test wpisz:
$ setfacl -m g:dyrekcja:r przyklad1.txt
$ setfacl -m g:ksiegowosc:w przyklad1.txt
$ setfacl -m g::0 przyklad1.txt
Przydzieliliśmy grupie dyrekcja prawo zapisu do pliku przyklad1.txt oraz księgowości prawo odczytu. Ostatni wpis g::0 spowoduje, że wszystkie grupy, które nie zostały zadeklarowane na liście ACL zostaną pozbawione wszelkich praw.
Sprawdźmy:
$ getfacl przyklad1.txt
Powinniśmy otrzymać wynik jak na poniższym obrazie
![](https://blog.forpsi.pl/wp-content/uploads/2022/09/acl-grupy.jpg)
W celu weryfikacji przelogujemy się na użytkownika bocian należącego do grupy dyrekcja. Powinien posiadać uprawnienia zgodne z grupą, czyli prawo do odczytu. Nie zapomnijmy przejść do właściwego katalogu. Następnie spróbujmy wyświetlić i zapisać coś w pliku przyklad1.txt
$ su bocian
Przy próbie dopisania kolejnych pozycji do pliku poleceniem
$ seq 3 >> przyklad1.txt
otrzymujemy błąd permission denided. Natomiast próba odczytu vim’em wykonuje się bez najmniejszego problemu, przy czym od razu otrzymamy komunikat, że posiadamy jedynie prawo do odczytu pliku.
![](https://blog.forpsi.pl/wp-content/uploads/2022/09/acl-readonly-1.jpg)
Możemy teraz przetestować użytkownika kawka, który przypisany jest do grupy ksiegowosc mającej nadane prawa jedynie do zapisu.
Próba odczytu vim’em pliku kończy się błędem permission denided
![](https://blog.forpsi.pl/wp-content/uploads/2022/09/przyklad1-denied.jpg)
Zapis natomiast powinien przejść bez problemu:
$ seq 8 >> przyklad1.txt
Ostatni z użytkowników, sowa, należy do obu grup w związku z czym powinien mieć dostęp zarówno do odczytu jak i zapisu do pliku.
Zalogujemy się na niego, nie zapominając o przejściu do właściwego katalogu.
$ su sowa
$ cd ..
$ cd home/test/aclki
Następnie wyświetlimy i edytujemy plik przyklad1.txt
$ vim przyklad1.txt
Dopisujemy cokolwiek, a następnie by wyjść z zapisaniem wpisujemy:
$ :wq [enter]
Wszystko powinno przejść bez najmniejszego problemu.
Pozostała nam ostatnia część, czyli uprawnienia domyślne przypisane do katalogu. Tworzymy je, dodając parametr -d. Należy pamiętać, że ustawienie tego parametru spowoduje odziedziczenie po nim uprawnień dla elementów w nim zawartych.
Będąc na użytkowniku test, w katalogu aclki utworzymy kolejny podkatalog domyslne:
$ mkdir domyslne
Przypisujemy do list ACL:
$ setfacl -d -m u:sowa:rw domyslne/
$ setfacl -d -m g:dyrekcja:rwx domyslne/
Dla dyrekcji dodaliśmy kolejny parametr x oznaczający, że grupa oprócz zapisywania i odczytywania również ma prawo do wykonywania plików.
Sprawdźmy jak wygląda w tej chwili lista dla katalogu:
$ getfacl domyslne/
![](https://blog.forpsi.pl/wp-content/uploads/2022/09/acl-domyslne.jpg)
W wyniku widzimy dodatkowy opis w postaci słów default, zgodny z przypisanymi uprawnieniami. Sprawdźmy tworząc w katalogu domyślne dwa pliki:
$ cd domyslne
$ touch plik1.txt plik2.txt
$ ls -l
Zostały utworzone dwa pliku z przypisanymi od razu ACL’kami.
Sprawdźmy jeden z plików jakie prawa zostały nadane:
$ getfacl plik1.txt
![](https://blog.forpsi.pl/wp-content/uploads/2022/09/acl-uprawnieniazkatalogu.jpg)
Widać, że prawa zostały nadane zgodnie z prawami katalogu.
W tym artykule to już wszystko, ale proponujemy byś sam sprawdził jakie możliwości dają listy ACL. Skorzystaj z naszych serwerów VPS Classic.
Zachęcamy do regularnego odwiedzania naszego blogu.