- Обзор
- Объяснение umask
- Понимание формирования umask
- Важность umask в многопользовательской среде
- Проверка umask для одного пользователя
- Проверка umask для всех пользователей
- Ручная проверка общесистемных конфигураций
- Использование скрипт для автоматической проверки umask для всех пользователей
- Настройка значения umask для пользователей
Обзор
В среде Linux управление правами доступа к файлам и каталогам имеет решающее значение для обеспечения безопасности и надлежащего контроля доступа.
Одним из ключевых механизмов, контролирующих эти права, является umask.
Системным администраторам и пользователям Linux часто приходится проверять и управлять настройками umask для нескольких пользователей в системе.
В этом руководстве мы рассмотрим, что такое umask, почему он важен, и как проверить настройки umask для одного пользователя и нескольких пользователей в системе Linux.
✈️ Понимание chmod: Разница между u+x и +x
Объяснение umask
Прежде чем перейти к практическим иллюстрациям, нам нужно объяснить и понять, что такое umask, и осознать его важность.
Понимание формирования umask
Umask, сокращение от «user file creation mask», – это команда Linux, определяющая разрешения по умолчанию для вновь создаваемых файлов и каталогов.
В частности, когда пользователь создает новый файл или каталог, система назначает ему набор разрешений по умолчанию, которые затем изменяются с помощью значения umask.
Значение umask вычитается из разрешений по умолчанию, чтобы определить окончательные разрешения для нового файла или каталога.
Разрешения по умолчанию обычно начинаются с 777 для каталогов и 666 для файлов.
Поэтому umask играет важную роль в формировании фактических разрешений.
Например, если umask установлен на 022, то результирующие разрешения для нового каталога будут равны 755, что является математической операцией (777 – 022), а для нового файла – 644 (666 – 022).
Эти разрешения гарантируют, что владелец имеет права на чтение, запись и выполнение, а другие пользователи имеют ограниченный доступ.
Важность umask в многопользовательской среде
В многопользовательских средах Linux настройка umask приобретает особую важность.
Правильно настроенные значения umask могут предотвратить несанкционированный доступ к файлам и каталогам, ограничивая права доступа.
Соответственно, это очень важно для обеспечения безопасности и целостности данных, особенно в средах, где хранится конфиденциальная информация или где пользователи имеют разный уровень доверия и потребности в доступе.
Например, если пользователь по ошибке создаст файл с чрезмерно широкими настройками, такими как umask 000, это может позволить другим пользователям изменять или удалять этот файл, что приведет к потенциальным рискам безопасности.
Поэтому понимание и контроль параметров umask для всех пользователей очень важны для ИБ.
Проверка umask для одного пользователя
Прежде чем перейти к общесистемным проверкам, полезно понять, как проверить umask для отдельного пользователя.
Простейший способ проверки – использование команды umask в оболочке пользователя:
Сначала мы использовали команду su, чтобы переключиться на ранее созданного пользователя по имени john.
После этого мы использовали команду umask, которая ищет значение umask 0022 для этого пользователя.
Из приведенного фрагмента видно, что значение umask установлено в 0022, что означает, что вновь созданные файлы будут иметь разрешения 644, а каталоги – 755.
Если у нас ограниченное количество пользователей, мы можем использовать этот метод вручную для проверки значения umask.
Другими словами, перед использованием команды umask нам нужно будет последовательно переключиться на каждого пользователя.
Следует отметить, что на некоторых серверах RHEL оболочка по умолчанию для некоторых пользователей – halt или shutdown, что может стать препятствием при использовании этого метода.
Чтобы проверить это, мы можем выполнить следующую команду:
Как видно из приведенного фрагмента, в файле /etc/passwd содержится такая информация.
В данном контексте пользователь shutdown – это специальная системная учетная запись, которую система использует для выключения или остановки системы, как правило, без полного пользовательского окружения или интерактивной оболочки.
Более того, такие учетные записи напрямую выполняют соответствующие системные команды при их вызове.
Наконец, пользователь shutdown не предназначен для интерактивного входа в систему.
По сути, эта учетная запись является частью более широкого набора системных учетных записей, которые выполняют такие важные функции, как запуск и остановка системы, подобно пользователям halt и reboot.
Проверка umask для всех пользователей
Теперь, когда мы поняли, как проверить umask для одного пользователя, давайте рассмотрим методы проверки umask для всех пользователей в системе.
Ручная проверка общесистемных конфигураций
Начнем с того, что общесистемные конфигурационные файлы часто содержат настройки umask по умолчанию, которые применяются ко всем пользователям.
Кроме того, к таким файлам относятся /etc/profile, /etc/bashrc и иногда /etc/login.defs.
Просмотрев эти файлы, мы можем определить настройки umask по умолчанию, которые влияют на всех пользователей.
Мы можем использовать команду grep для поиска термина umask в этих конфигурационных файлах:
Как видно из приведенного выше результата, эта команда вернет строки, содержащие umask, из указанных файлов.
В этом примере мы видим, что по умолчанию umask установлен на 022 как в /etc/profile, так и в /etc/bashrc/
Соответственно, эти настройки применяются ко всем пользователям, если они не отменены в их личных конфигурационных файлах.
Использование скрипт для автоматической проверки umask для всех пользователей
Ручная проверка каждого конфигурационного файла для каждого пользователя в системе может занять много времени, особенно в системах с большим количеством пользователей.
С другой стороны, мы можем автоматизировать этот процесс, написав скрипт на Bash, который перебирает все учетные записи пользователей и проверяет их настройки umask.
Помимо проверки глобальных конфигурационных файлов, мы также должны проверить файлы конфигурации конкретного пользователя, расположенные в его домашнем каталоге.
К ним относятся ~/.bashrc, ~/.profile, ~/.bash_profile и другие, в зависимости от используемой оболочки.
Давайте посмотрим на пример такого Bash-скрипта:
#!/bin/bash
# List all user home directories
for user in $(cut -d: -f1 /etc/passwd); do
home_dir=$(eval echo ~$user)
echo "Checking umask settings for user: $user"
# Check for umask in all potential config files
for file in $home_dir/.bashrc $home_dir/.profile $home_dir/.bash_profile; do
if [ -f "$file" ]; then
grep -i umask $file
fi
done
done
Этот скрипт просматривает домашний каталог каждого пользователя, проверяет файлы .bashrc и .profile и ищет в них любые настройки umask.
Разница между .bashrc, .profile, .bash_profile, …?
После этого скрипт выводит результаты, которые могут выглядеть примерно так для разных пользователей нашей системы:
Checking umask settings for user: root
/root/.bashrc: umask 022
/root/.bash_profile: umask 002
Checking umask settings for user: user1
/home/user1/.bashrc: umask 027
Checking umask settings for user: user2
/home/user2/.profile: umask 007
Этот метод позволяет не пропустить пользовательские настройки umask, которые пользователи могли указать в различных конфигурационных файлах.
Здесь мы можем настроить вывод для разных файлов.
Например, у user1 мы видим, что значение umask, установленное для ~/.bashrc, равно 027, а у user2 значение umask, установленное для ~/.profile, равно 007.
Настройка значения umask для пользователей
После того как мы определили настройки umask для всех пользователей, нам может понадобиться скорректировать их в соответствии с политикой безопасности организации.
Чтобы установить или изменить umask для отдельного пользователя, мы можем отредактировать его личные файлы конфигурации оболочки, такие как ~/.bashrc или ~/.profile.
Давайте рассмотрим пример установки umask 027 для пользователя:
Мы также можем установить umask по умолчанию для всей системы, отредактировав глобальные конфигурационные файлы/
Например, добавив или изменив параметр umask в файле /etc/profile:
Такой подход гарантирует, что каждый пользователь в системе унаследует безопасное значение umask, если только он не переопределит его в своих личных настройках.
см. также:
- 🐧 Как удалить все файлы и каталоги, принадлежащие определенному пользователю или группе Linux
- 🖧 Использование Curl для создания Telnet-соединения
- 🖧 Как изменить диапазон портов, доступный для автоматического назначения
- ☸️ Как поддерживать контейнер в рабочем состоянии на Kubernetes
- 🐧 Копирование файлов и каталогов с сохранением контекста SELinux на Linux