2.9.9.18 Настройка прав по умолчанию с помощью umask
Синтаксис
Опции
Принцип работы umask на примере 027
Значение маски режима
Настройка через конфигурационные файлы
Настройка через файл /etc/profile
Настройка через файл /etc/bashrc
Настройка через файл /etc/profile.d/custom-umask.sh
Настройка через файл /etc/login.defs
Настройка через файл /etc/pam.d/common-session
Просмотр текущего значения umask
Окружение
- Версия ОС: 7.3
- Конфигурация ОС: Рабочая станция, Сервер графический, Сервер минимальный
Umask (от англ. user file creation mode mask — «маска режима создания файлов») — это стандартный механизм в POSIX-системах, который определяет базовые права доступа для новых файлов и директорий. Umask не задаёт права напрямую, а указывает, какие биты нужно заблокировать. Чем выше цифра в umask, тем строже ограничения.
Можно подробнее ознакомиться с назначением прав доступа к файлам и каталогам, просмотрев наши обучающие видео:
на RuTube:
в Яндекс.Дзен:
в VK Видео:
На наших каналах можно найти много другой полезной информации.
Синтаксис
Синтаксис команды в восьмеричном виде:
umask [опции] <маска_в_восьмеричном_виде>
Синтаксис команды в символьном виде:
umask [опции] u=права,g=права,o=права
Опции
Основные опции команды:| Опция | Описание | Пример команды |
|---|---|---|
-p | Выводит маску в формате, пригодном для повторного использования. | umask -pumask 0022 |
-S | Показывает маску в символьном виде. | umask -Su=rwx,g=rx,o=rx |
Принцип работы umask на примере 027
umask состоит из трёх цифр в восьмеричной системе, каждая из которых отвечает за запрет определённых прав:
0 — права владельца файла,
2 — права группы,
7 — права остальных пользователей.
Каждая цифра указывает, какие биты запрещены.
| Цифра umask | Двоичное | Запрещённые права | Права |
|---|---|---|---|
| 0 | 000 | --- | Ничего не запрещено (все права разрешены). |
| 2 | 010 | -w- | Запрещает запись для группы. |
| 7 | 111 | rwx | Запрещает всё — чтение, запись, выполнение для остальных. |
Алгоритм расчета итоговых прав:
1. Инвертируйте umask (вычтите каждую цифру из 7):
~027 = (7-0)(7-2)(7-7) = 750
2. Примените побитовое И (&) с исходными правами (666 — для файлов, 777 — для директорий):
- для файлов:
666 & 750 = 640
для директорий:
777 & 750 = 750
Результаты можно представить в виде таблицы:
| Тип | Исходные права | umask | ~umask | Итоговые права | Символическая запись |
|---|---|---|---|---|---|
| Файлы | 666 (rw-rw-rw-) | 027 | 750 | 640 | rw-r----- |
| Директории | 777 (rwxrwxrwx) | 027 | 750 | 750 | rwxr-x--- |
Значение маски режима
Значение маски режима можно представить в виде таблицы:
| Восьмеричное | Двоичное | Значение |
|---|---|---|
| 0 | 000 | Нет разрешений (---). |
| 1 | 001 | Только выполнение (--x). |
| 2 | 010 | Только запись (-w-). |
| 3 | 011 | Запись и выполнение (-wx). |
| 4 | 100 | Только чтение (r--). |
| 5 | 101 | Чтение и выполнение (r-x). |
| 6 | 110 | Чтение и запись (rw-). |
| 7 | 111 | Чтение, запись и выполнение (rwx). |
Настройка через конфигурационные файлы
Настройка через файл /etc/profile
umask в /etc/profile влияет на всех пользователей, но только при логине, независимо от оболочки (Bash, Zsh, Ksh и др.). Если пользователь входит в систему (через SSH, консоль, графический логин), этот файл выполнится. Но если пользователь запускает не-логин-shell (например, открывает новый терминал в GUI), /etc/profile не сработает.
sudo nano /etc/profile
Добавьте в конец файла:
umask 027
Или вариант с проверкой:
if [ "$(id -u)" -ge 1000 ]; then
umask 027
else
umask 022
fiгде:
umask 027— для обычных пользователей (UID ≥ 1000);umask 022— для системных пользователей (включая root).
Настройка через файл /etc/bashrc
sudo nano /etc/bashrc
Добавьте проверку, как в /etc/profile:
umask 027
Внесение строки umask 027 в файл /etc/bashrc позволит установить для всех пользователей в системе umask равный 027. Данное значение будет устанавливаться для каждого пользователя, запустившего оболочку bash. Но если пользователь не использует bash, а использует zsh, то данный параметр для него работать не будет.
Настройка через файл /etc/profile.d/custom-umask.sh
Umask в /etc/profile.d/.sh выполняются при загрузке /etc/profile. Если /etc/profile не загружается, то и /etc/profile.d/.sh тоже не сработают. Эффект аналогичен /etc/profile, но удобнее для администрирования (можно добавлять .sh-файлы, не меняя основной конфиг).sudo nano /etc/profile.d/umask.sh
Добавьте:
# Устанавливаем umask 027 для обычных пользователей [ "$(id -u)" -ge 1000 ] && umask 027
Сделайте файл исполняемым:
sudo chmod +x /etc/profile.d/umask.sh
Преимущество:
не требует правки системных файлов,
легко управлять и отключать.
Настройка через файл /etc/login.defs
Umask в /etc/login.defs влияет не только на root, но и на всех пользователей (существующие и создаваемые). UMASK из login.defs применяется только:
при создании новых пользователей (useradd),
при входе в систему через login, sshd и подобные PAM-контролируемые механизмы,
если используется pam_umask.so.
login.defs не гарантирует применение umask, если PAM не настроен.sudo nano /etc/login.defs
Найдите строку:
UMASK 022
Замените на:
UMASK 027
Настройка через файл /etc/pam.d/common-session
umask в /etc/pam.d/common-session и pam_umask.so управляется через модуль pam_umask.so. Он подключается в:
/etc/pam.d/login (для консольных сессий),
/etc/pam.d/sshd (для SSH),
/etc/pam.d/system-auth (общая аутентификация).
sudo nano /etc/pam.d/common-session
Добавьте строку:
session optional pam_umask.so umask=0027
Проверьте, загружен ли модуль pam_umask.so:
grep pam_umask /etc/pam.d/*
Если модуль не используется, добавьте его вручную.
Просмотр текущего значения umask
1. Для текущей сессии пользователя:
umask
2. Для нового пользователя (например, testuser):
su - testuser umask
3. Для файлов и каталогов:
touch testfile # создаёт пустой файл mkdir testdir # создаёт новый каталог
ls -ld testfile testdirdrwxr-xr-x. 2 root root 4096 июл 18 09:44 testdir -rw-r--r--. 1 root root 0 июл 09:44 testfile
Дата последнего изменения: 28.10.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.