Команда UMASK: задаем маску прав для файлов и каталогов в Linux

Права доступа к файлам и директориям в LinuxКоманда UMASK (англ. user file creation mode mask — маска режима создания пользовательских файлов) позволяет задать маску прав пользователя для новых файлов и каталогов в Linux.

Каждый раз, когда пользователь Linux создаёт новый файл или каталог, операционная система запрашивает маску прав для того, чтобы установить корректные права файлу или папке. В цифровом представлении значение маски по умолчанию 002 или 022 в зависимости от дистрибутива Linux. Например, в Ubuntu оно 002, а в Debian 022. Установка прав на файл или папку производится по следующей формуле: от максимальных прав отнимается маска, полученное число и будет правами на файл или каталог.

Для файлов это: 666 — 002 = 664;

Для каталогов: 777 — 002 = 775.

А если маска 022? Тогда права будут высчитаны следующим образом:

Для файлов: 666 — 022 = 644;

Для каталогов: 777 — 022 = 755.

Аналогично и для других значений пользовательской маски.

Так как права на файлы устанавливаются на основе прав 666 (-rw-rw-rw-), то задать права на выполнение файлов с помощью маски не получится. С каталогами такого ограничения нет, так как там права выставляются на основе прав 777 (drwxrwxrwx). Ещё одно ограничение заключается в том, что команда umask действует в рамках одной сессии терминала.

Синтаксис команды выглядит следующим образом:

UMASK [-p] [-S] [маска_в_цифровом_представлении]

или

UMASK [-p] [-S] u=<права>,g=<права>,o=<права>

Как видим, нам доступно всего два параметра:

-p — вывести текущее значение маски в цифровом представлении, пригодное для повторного использования;

-S — вывести текущее значение маски в символьном представлении.

Примеры использования команды umask:

Просмотр текущего значения маски:

umask

Просмотр текущего значения маски в символьном представлении:

umask -S
Команда UMASK: задаем маску прав для файлов и каталогов в Linux
Просмотр значения пользовательской маски в Debian.

Возможно вы задались вопросом, почему на скриншоте значение маски отображается как 0022. Обычно первую цифру отбрасывают, если только не устанавливаются специальные атрибуты.

Задать маску 002:

umask 002

или

umask 0002
Команда UMASK: задаем маску прав для файлов и каталогов в Linux
Изменение значения пользовательской маски в Debian.

Если вы привыкли к символьному отображению прав, то задать маску можно и иначе:

umask u=rwx,g=rx,o=

Команда UMASK: задаем маску прав для файлов и каталогов в Linux

Здесь есть один тонкий момент, который нужно разъяснить. В начале этой статьи мы рассматривали примеры расчётов прав на файлы и каталоги. Напомню, что они получались путём вычитания маски. Таким образом, пользовательская маска представляет собой запреты. Та же маска 002 не накладывает запретов на владельца файла или каталога и группу, которая сопоставлена файлу/каталогу, но для остальных пользователей накладывается запрет на редактирование содержимого файла или каталога. Но, если мы задаём маску через символьное отображение, то мы прописываем права, а не запреты.

Группы прав можно объединять:

umask ug=rwx,o=

В примере выше мы выставили одни и те же права владельцу и группе. Если нужно задать одинаковые права всем, то можно использовать параметр a (all):

umask a=rwx

Команда UMASK: задаем маску прав для файлов и каталогов в Linux

Прописывать все права досконально не обязательно. Если нужно разрешить или запретить определённые действия, то нужно просто указать что и для кого мы разрешаем (+) или запрещаем (-).

Пример добавления разрешения:

umask o+x

Пример добавления запрета:

umask a-w

Можно даже комбинировать описанные выше способы:

umask ug=rwx,o-rw

В этом примере мы дали полный доступ владельцу и группе, одновременно с этим лишив остальных пользователей прав на чтение и редактирование.

Команда UMASK: задаем маску прав для файлов и каталогов в Linux

Все эти манипуляции изменяют значение пользовательской маски только в текущей сессии терминала. Можно ли изменить значение маски по умолчанию? Да. Если хотите изменить значение маски для пользователя, отредактируйте файл конфигурации оболочки пользователя: ~/.bashrc или ~/.zshrc.

Команда UMASK: задаем маску прав для файлов и каталогов в Linux
Прописываем пользователю test новое значение umask по умолчанию.

Можно изменить и общее для всей операционной системы значение umask. Обычно требуется отредактировать один из следующих файлов: /etc/bash.bashrc, pam_umask.so или /etc/profile. Зависит от дистрибутива. Учтите, что значение маски для пользователя имеет приоритет над общесистемным значением.

Добавить комментарий

Ваш адрес email не будет опубликован.