🐧 Как проверить Umask для всех пользователей на Linux |

🐧 Как проверить Umask для всех пользователей на Linux

Мануал

Обзор

В среде 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 password:
umask 0022

Сначала мы использовали команду su, чтобы переключиться на ранее созданного пользователя по имени john.

После этого мы использовали команду umask, которая ищет значение umask 0022 для этого пользователя.

Из приведенного фрагмента видно, что значение umask установлено в 0022, что означает, что вновь созданные файлы будут иметь разрешения 644, а каталоги – 755.

Если у нас ограниченное количество пользователей, мы можем использовать этот метод вручную для проверки значения umask.

Другими словами, перед использованием команды umask нам нужно будет последовательно переключиться на каждого пользователя.

Следует отметить, что на некоторых серверах RHEL оболочка по умолчанию для некоторых пользователей – halt или shutdown, что может стать препятствием при использовании этого метода.

Чтобы проверить это, мы можем выполнить следующую команду:

cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
user1:x:1000:1000:User One,,,:/home/user1:/bin/bash

Как видно из приведенного фрагмента, в файле /etc/passwd содержится такая информация.

В данном контексте пользователь shutdown – это специальная системная учетная запись, которую система использует для выключения или остановки системы, как правило, без полного пользовательского окружения или интерактивной оболочки.

Более того, такие учетные записи напрямую выполняют соответствующие системные команды при их вызове.

Наконец, пользователь shutdown не предназначен для интерактивного входа в систему.

По сути, эта учетная запись является частью более широкого набора системных учетных записей, которые выполняют такие важные функции, как запуск и остановка системы, подобно пользователям halt и reboot.

Проверка umask для всех пользователей

Теперь, когда мы поняли, как проверить umask для одного пользователя, давайте рассмотрим методы проверки umask для всех пользователей в системе.

Ручная проверка общесистемных конфигураций

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

Кроме того, к таким файлам относятся /etc/profile, /etc/bashrc и иногда /etc/login.defs.

Просмотрев эти файлы, мы можем определить настройки umask по умолчанию, которые влияют на всех пользователей.

Мы можем использовать команду grep для поиска термина umask в этих конфигурационных файлах:

grep -i umask /etc/profile /etc/bashrc /etc/login.defs
/etc/profile:umask 022
/etc/bashrc:umask 022
/etc/login.defs:UMASK 022

Как видно из приведенного выше результата, эта команда вернет строки, содержащие 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 для пользователя:

echo "umask 027" >> ~/.bashrc

Мы также можем установить umask по умолчанию для всей системы, отредактировав глобальные конфигурационные файлы/

Например, добавив или изменив параметр umask в файле /etc/profile:

echo "umask 027" >> /etc/profile

Такой подход гарантирует, что каждый пользователь в системе унаследует безопасное значение umask, если только он не переопределит его в своих личных настройках.

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий