Ключ к автоматическому управлению правами доступа в Linux! Практическая настройка и полное руководство по umask

Обзор

Рассматриваются базовые принципы работы umask, определяющей начальные права доступа к создаваемым в Linux файлам и каталогам. Здесь собраны ключевые методы администрирования для практического применения: от вычислений в восьмеричной системе и управления доступом к общим каталогам до постоянной настройки через профили оболочки.

1. Проверка текущей umask и тестирование прав при создании файлов и каталогов по умолчанию

Для создания и перехода в специальный рабочий каталог для настройки umask и тестирования прав выполните команду mkdir -p /tmp/umask-lab && cd /tmp/umask-lab.

mkdir -p /tmp/umask-lab && cd /tmp/umask-lab

Команда umask позволяет просматривать и задавать маску, ограничивающую начальные права доступа для вновь создаваемых файлов и каталогов.
Результат выполнения показывает, что для текущей сессии установлена маска по умолчанию 0022.
⚙️ [Основные параметры]

-S : выводит разрешенные права в удобном символьном виде (u=rwx,g=rx,o=rx), а не числовом значении.
-p : выводит текущую настройку маски в виде восьмеричного числа в формате команды umask, готовой к повторному использованию.

umask

При выполнении команды umask -S можно наглядно увидеть фактически предоставляемые права для владельца (u), группы (g) и остальных пользователей (o) в символьном режиме.
Значение u=rwx,g=rx,o=rx означает, что владельцу по умолчанию разрешены чтение, запись и выполнение, а для группы и остальных пользователей — чтение и выполнение.

umask -S

Чтобы проверить права создания по умолчанию при текущем значении umask (0022), создадим новый файл и каталог с помощью команды touch default_file.txt && mkdir default_dir.

touch default_file.txt && mkdir default_dir

Для проверки фактических прав созданных файла и каталога выполните команду ls -ld default_file.txt default_dir.
Каталог создается с правами 755 (drwxr-xr-x) путем вычитания маски 022 из максимальных прав по умолчанию 777, а обычный файл — с правами 644 (-rw-r--r--) путем вычитания маски 022 из базовых прав 666 (в которых изначально исключено выполнение).

ls -ld default_file.txt default_dir

2. Практика управления правами новых файлов путем временного изменения значения umask

Для подтверждения наличия рабочего пространства и перехода в него выполните команду mkdir -p /tmp/umask-lab && cd /tmp/umask-lab.

mkdir -p /tmp/umask-lab && cd /tmp/umask-lab

Выполните команду umask 027, чтобы временно изменить значение маски текущей сессии на 027.
Эта настройка запрещает право записи для группы и полностью блокирует чтение, запись и выполнение для остальных (прочих) пользователей.

umask 027

Чтобы убедиться, что измененное значение umask (027) корректно применяется к новым объектам, создайте тестовый файл и каталог командой touch secure_file.txt && mkdir secure_dir.

touch secure_file.txt && mkdir secure_dir

Для проверки фактических прав созданных файла и каталога выполните команду ls -ld secure_file.txt secure_dir.
В выводе команды можно проверить подробное состояние прав доступа и информацию о владельце.

ls -ld secure_file.txt secure_dir

После завершения тестирования верните маску сессии к стандартному состоянию по умолчанию с помощью команды umask 022.

umask 022

3. Настройка umask для общих каталогов при командной работе и на веб-серверах

Чтобы создать общий каталог для совместной работы команды и перейти в рабочую директорию, выполните команду mkdir -p /tmp/umask-lab/shared && cd /tmp/umask-lab.

mkdir -p /tmp/umask-lab/shared && cd /tmp/umask-lab

Для обеспечения удобной совместной работы участников группы сохраните права на запись для группы, изменив маску текущей сессии командой umask 002.
Эта конфигурация ограничивает лишь права записи для остальных пользователей, разрешая как чтение, так и запись владельцу и членам группы.

umask 002

Примененная маска umask (002) позволяет создать файлы и каталоги для совместной работы; выполните для этого touch shared/team_doc.txt && mkdir shared/team_project.

touch shared/team_doc.txt && mkdir shared/team_project

Для проверки фактических прав созданных файлов и каталогов выполните ls -ld shared/team_doc.txt shared/team_project.
В выводе отобразятся точные права и данные владельцев каждого созданного элемента в общей директории.

ls -ld shared/team_doc.txt shared/team_project

После завершения проверки совместного доступа верните настройки маски сессии к стандартному безопасному состоянию с помощью umask 022.

umask 022

4. Способы постоянного применения umask на уровне системы и для отдельных пользователей

Чтобы узнать общесистемное значение umask по умолчанию, выполните команду grep -n 'UMASK' /etc/login.defs.
В выводе на 151-й строке видно, что системным значением по умолчанию задано UMASK 022.

grep -n ‘UMASK’ /etc/login.defs

Добавьте комментарий, указывающий на пользовательскую настройку, командой echo '# Custom user umask' >> ~/.bashrc.

echo ‘# Custom user umask’ » ~/.bashrc

Чтобы пользовательские права применялись автоматически при каждом запуске новой сессии оболочки, добавьте настройку с помощью echo 'umask 027' >> ~/.bashrc.

echo ‘umask 027’ » ~/.bashrc

Чтобы убедиться, что директива umask успешно добавлена в конец файла ~/.bashrc, выполните команду tail -n 2 ~/.bashrc.
Вывод подтверждает, что комментарий и строка umask 027 правильно записаны в последних двух строках файла.

tail -n 2 ~/.bashrc

Для применения изменений из обновленного файла ~/.bashrc и проверки итоговой маски выполните команду bash -c 'source ~/.bashrc && umask'.
Результат отражает текущее состояние маски, действующее в данной среде оболочки.

bash -c ‘source ~/.bashrc && umask’

В этом материале мы кратко разобрали базовую концепцию и практическую настройку umask, которая автоматически контролирует права при создании файлов и каталогов в среде Linux.
Применяйте значения umask, соответствующие вашей рабочей среде и политике безопасности, для надежного и структурированного администрирования системы.