UMASK, dziedziczenie uprawnień
Damian Stlemach
Omawiając tematykę uprawnień nie sposób nie wspomnieć o mechanizmie ich dziedziczenia. W przeciwieństwie do systemów Windows, w Ubuntu oraz innych systemach opartych na jądrze Linux, domyślnie zjawisko dziedziczenia uprawnień nie występuje. To znaczy pliki i katalogi, które tworzone są w zasobie z określonymi uprawnieniami takich samach uprawnień nie będą mieć. Każdy pliki i katalog tworzony w katalogu domowym użytkownika ma uprawnienia domyślne 775
dla katalogów oraz 664
dla plików. W przypadku katalogu domowego użytkownika ROOT, a także katalogu głównego, uprawniania są ustawione na 755
dla katalogów oraz 644
dla plików. Jeśli chcemy, aby nowo tworzone zasoby w danym katalogu miały inne uprawniania no to możemy zastosować mechanizm zwany umask
. Umask definiuje domyślne uprawnienia dla zasobów tworzonych w katalogu.
Jeśli chcemy sprawdzić jaką maskę mamy ustawioną w danym katalogu, wykonujemy po prostu polecenie umask
. W przypadku umask
mamy do czynienia z odwrotnością liczb określających uprawnienia. Jeśli maska jest ustawiona na 0002
to znaczy, że właściciel ma pełne prawa do zasobu (0002
: od 7
odjęto 0
, co daje 7
), analogicznie grupa (0002
: od 7
odjęto 0
, co daje 7
), a pozostali mają odczyt i wykonanie (0002
: od 7
odjęto 2
co daje 5
). Pierwsze0
od lewej strony to bity specjalne, ich tutaj nie bierzemy pod uwagę. W przypadku plików uprawnienia domyślne są na poziomie 664
, bo domyślnie dla plików systemy z jądrem Linux nie dają prawa execute przy tworzeniu, tak więc pomimo ustawionej maski pliki domyślnie mają uprawnienia 664
. Maskę oczywiście można zmodyfikować wydając polecenie umask
.
Przykłady użycia:
Pełne uprawnienia dla wszystkich:
umask 000
Pełne uprawnienia dla właściciela, dla grupy oraz pozostałych brak uprawnień:
umask 077
Pełne uprawnienia dla właściciela, grupy, dla pozostałych brak uprawnień:
umask 007
Pełne uprawnienia dla wszystkich, dla grupy tylko odczyt i wykonanie, dla pozostałych tylko odczyt:
umask 026
Jeśli ustawimy konkretną maskę dla katalogu i w tym katalogu utworzymy kolejne podkatalogi to tutaj dziedziczenie będzie działać, ale tylko jeśli podkatalogi będzie tworzył użytkownik, który ustawił maskę, bo co ważne maska nie jest ustawieniem dostępnym dla innych użytkowników. To znaczy, że kiedy na tym katalogu będzie pracował inny użytkownik to dla niego maska nie będzie taka jak ustalił użytkownik tworzący katalog (właściciel), tylko domyślna. Należy o tym pamiętać! Ustawiona maska działa też tylko podczas aktywnej sesji, to znaczy jeśli użytkownik zamknie połączenie i zaloguje się ponownie to maska powróci do domyślnych uprawnień.
Pojawia się teraz pytanie czy da się zrobić tak, aby zawsze nowo tworzone zasoby w jakimś katalogu miały te same prawa dla wszystkich użytkowników. No pewnie, jest to możliwe i co ważne bardzo często używane. Chmod to bardzo stary system nadawania uprawnień. Nieco mało elastyczny i przy bardziej zaawansowanych ustawieniach czy zadaniach niesprawdzający się zbyt dobrze. Na szczęście istnieje również bardziej rozbudowany systemu uprawnień oparty na listach kontroli dostępu do plików i katalogów (setfacl).
Jeśli chcemy skonfigurować katalog tak, aby wszystkie tworzone w nim zasoby miały, np. zawsze pełne prawa dla wszystkich no to możemy wykonać takie polecenia:
chmod 777 nazwa_katalogu (lub ścieżka)
a dalej
setfacl –R –d –m u::rwx nazwa_katalogu (lub ścieżka)
Pomóż dzieciom
Polska Akcja Humanitarna od wielu lat dożywia dzieci. Prosimy, poświęć teraz dosłownie chwilę i pomóż klikając w oznaczony strzałką zielony brzuszek Pajacyka. Dziękujemy!
Komentarze
Czy macie jakieś pytania, sugestie, uwagi? A może zauważyliście literówkę albo błąd? Dajcie koniecznie znać w komentarzach! Dziękujemy Wam za poświęcony na to czas!