Linux ma określone zasady nadawania uprawnień nowo tworzonym plikom i katalogom. W momencie utworzenia system przypisuje im właściciela, grupę oraz początkowe prawa dostępu. Właścicielem nowego pliku lub katalogu zostaje zwykle użytkownik, który go utworzył, a przypisana grupa to najczęściej jego podstawowa grupa. Same uprawnienia wynikają natomiast z wartości domyślnych, które są następnie ograniczane przez umask.
Jak działa umask
Umask to maska określająca, jakie uprawnienia mają zostać odebrane nowym plikom i katalogom przy ich tworzeniu. Najczęściej spotykaną wartością dla umask jest 022, a jej działanie polega na ograniczeniu początkowych praw dostępu przypisywanych przez system.
Domyślne ustawienia umask
Dla zwykłych plików system przyjmuje zazwyczaj maksymalny zestaw uprawnień, z wartością początkową 666, natomiast dla katalogów 777. Następnie od tych wartości odejmowany jest umask, a końcowy wynik wyznacza rzeczywiste uprawnienia nowego pliku lub katalogu. Dzięki temu system automatycznie nadaje bardziej bezpieczne i przewidywalne ustawienia dostępu.
Przykładowo przy ustawieniu umask 022 nowy plik otrzyma uprawnienia 644, a nowy katalog 755. Dzięki temu tylko właściciel może modyfikować plik, natomiast inni użytkownicy mogą go jedynie odczytywać. To sprawia, że nowo dodawane pliki i katalogi mają od razu bezpieczniejsze ustawienia i nie są domyślnie dostępne do modyfikacji dla wszystkich użytkowników.
Zmiana umask
Tymczasowa zmiana
Wartość umask można zmienić tymczasowo dla bieżącej sesji powłoki za pomocą polecenia:
umask [nowa_wartość]
Taka zmiana działa tylko do momentu zamknięcia terminala lub zakończenia sesji.
Trwała zmiana dla powłoki
Aby ustawić umask na stałe dla uruchamianej powłoki, można dodać polecenie umask do jednego z plików startowych shella, na przykład ~/.bashrc.
umask 027
Dzięki temu wybrana wartość będzie ustawiana automatycznie przy każdym nowym uruchomieniu sesji terminalowej.
Trwała zmiana dla całego systemu lub logowania użytkownika
Jeśli chcesz zmienić umask w sposób bardziej ogólny, tak aby wpływał także na inne programy i nowe sesje graficzne, zwykle robi się to w pliku /etc/login.defs. Po takiej zmianie może być konieczne wylogowanie i ponowne zalogowanie się, aby nowe ustawienia zaczęły obowiązywać.
Opcja USERGROUPS_ENAB
Jak wspomniano wyżej, domyślną wartość umask można zmienić w konfiguracji systemu, najczęściej w pliku /etc/login.defs. To ustawienie decyduje o tym, jakie uprawnienia będą domyślnie odbierane nowo tworzonym plikom i katalogom. Domyślna wartość to zwykle 022.
W tym samym pliku można spotkać także opcję USERGROUPS_ENAB. Gdy ma ona wartość yes, a podstawową grupą użytkownika jest grupa o tej samej nazwie co jego login, system zakłada, że grupa ta w praktyce należy tylko do tego jednego użytkownika i traktuje ją jako „prywatną” grupę. Dzięki temu wartość umask stosowana dla podstawowej grupy użytkownika może zostać zmieniona, na przykład z 022 na 002 albo z 077 na 007. W efekcie podstawowa grupa użytkownika zachowuje więcej uprawnień do nowo tworzonych plików i katalogów i może otrzymać takie same uprawnienia jak właściciel, co ułatwia pracę z plikami tworzonymi w ramach własnej grupy.
Umask pełni ważną rolę w kontroli bezpieczeństwa i prywatności danych, ponieważ pozwala administratorowi lub użytkownikowi ustalić domyślny poziom dostępu do nowych plików bez konieczności ręcznego ustawiania uprawnień za każdym razem.
Author: Joanna
Piszę kody, które (zazwyczaj) działają. Tresuję Wordpressa, kodzę z Reactem, zgłębiam świat DevOps i klikam w konsoli Linuxa. Hobbystycznie optymalizuję kod, bo lenistwo to najczystsza forma produktywności. Staram się nie zwariować między bugiem a deadlinem.