Поиск по сайту:

Что такое umask в Linux и как его использовать?


В Linux все каталоги и файлы имеют права доступа. Вы можете использовать chmod, чтобы установить предпочтительные права доступа для разных пользователей. Но что определяет их разрешения по умолчанию ? Давайте поговорим о umask.

Разрешения на доступ

Все каталоги и файлы имеют флаги биты режима , которые определяют, можно ли их читать, записывать или выполнять. Исполнение файла означает запуск его как программы или скрипта. Для каталога вы должны иметь возможность «выполнить» каталог для cd в него. В совокупности настройки битового режима называются разрешениями для каталога или файла.

Есть три набора разрешений. Один набор предназначен для владельца каталога или файла. Если право собственности не было изменено с помощью chown, владельцем является лицо, создавшее каталог или файл.

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

Есть третий и последний набор разрешений для «других». Это универсальный набор для всех, кто не входит в первые два набора.

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

Биты режима

Вы можете просмотреть права доступа к файлам с помощью команды ls и параметра -l (длинный формат).

ls -l any*

Мы также рассмотрим каталог, добавив параметр -d (каталог). Без этой опции ls будет просматривать файлы внутри каталога, а не сам каталог.

ls -ld

В начале каждой записи в списке ls находится набор из 10 символов. Вот крупный план этих символов для файла и каталога.

Файл — верхняя строка, каталог — нижняя строка. Самый первый символ говорит нам, смотрим ли мы на каталог или файл. «d» указывает на каталог, а тире «-» указывает на файл.

Три набора разрешений обозначаются каждой группой из трех символов. Слева направо это разрешения для владельца, группы и других. В каждом наборе разрешений три символа слева направо указывают настройку разрешения на чтение «r», разрешения на запись «w» и разрешения на выполнение «x». Буква означает, что разрешение установлено. Дефис «-» означает, что разрешение не установлено.

Для нашего примера файла 10 символов означают:

  • : это файл, а не каталог.
  • rwx: владелец может читать, записывать и выполнять этот файл.
  • rw-: другие члены той же группы, которой назначен этот файл, могут читать и писать в файл, но не могут его выполнять.
  • r–: все остальные могут только читать файл.

Для нашего примера каталога 10 символов означают:

  • d: это каталог.
  • rwx: владелец может читать, записывать и выполнять (cd в) этот каталог.
  • rwx: другие члены той же группы могут читать, записывать и cd в этот каталог.
  • r-x: все остальные могут перейти в этот каталог, но они могут только читать файлы. Они не могут удалять файлы, редактировать файлы или создавать новые файлы.

Разрешения хранятся в битах режима в метаданных каталога или файла. Каждый бит режима имеет числовое значение. Все они имеют нулевое значение, если они не установлены.

  • r: бит чтения имеет значение 4, если он установлен.
  • w: бит записи имеет значение 2, если он установлен.
  • x: бит выполнения имеет значение 1, если он установлен.

Набор из трех разрешений может быть представлен суммой битовых значений. Максимальное значение — 4+2+1=7, при котором все три разрешения в наборе будут включены. Это означает, что все перестановки всех трех наборов могут быть записаны в виде трехзначного восьмеричного (основание 8) значения.

Взяв наш пример файла выше, владелец имеет права на чтение, запись и выполнение, то есть 4+2+1=7. Другие члены группы, в которой находится файл, имеют права на чтение и запись, то есть 4+2=6. Категория «другие» имеет только набор разрешений на чтение, то есть просто 4.

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

Используя ту же схему, разрешения для каталога будут 775. Вы можете увидеть восьмеричное представление разрешений с помощью команды stat.

Команда chmod (change mode bits) — это инструмент, используемый для установки разрешений для каталогов и файлов. Но это не определяет, какие разрешения устанавливаются для каталога или файла при его создании. Для этого используется набор разрешений по умолчанию.

Разрешения по умолчанию и umask

Разрешения по умолчанию для каталога — 777, а разрешения по умолчанию для файла — 666. Это дает каждому пользователю полный доступ ко всем каталогам и возможность читать и записывать любой файл. Бит выполнения не установлен для файлов. Вы не можете создать файл, в котором уже установлен бит выполнения. Это может привести к угрозе безопасности.

Однако, если вы создадите новый каталог и новый файл и посмотрите на их разрешения, они не будут установлены на 777 и 666. Мы создадим файл и каталог, а затем воспользуемся stat конвейером. через grep, чтобы извлечь строку с восьмеричным представлением их разрешений.

touch umask-article.txt
mkdir howtogeek
stat umask-article.txt | grep "Access: ("
stat howtogeek | grep "Access: ("

Они установлены на 775 для каталога и 664 для файла. Для них не установлены глобальные разрешения по умолчанию, потому что их изменяет другое значение, называемое значением umask.

Значение umask

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

umask

И для корня:

umask

Разрешения для вновь созданного каталога или файла являются результатом изменения значения umask глобальных разрешений по умолчанию.

Как и биты режима, значение umask представляет те же три набора разрешений — владельца, группы и других — и представляет их в виде трех восьмеричных цифр. Иногда вы увидите, что они записываются в виде четырех цифр, где первая цифра — ноль. Это сокращенный способ сказать «это восьмеричное число». Учитываются самые правые три цифры.

Значение umask не может добавлять разрешения. Он может только удалять или маскировать разрешения. Вот почему разрешения по умолчанию настолько либеральны. Они предназначены для уменьшения до разумных уровней путем применения значения umask.

Один набор разрешений по умолчанию не подходит ни для всех пользователей, ни для всех сценариев. Например, для каталогов и файлов, созданных пользователем root, потребуются более строгие разрешения, чем для обычного пользователя. И даже средний пользователь не хочет, чтобы все в категории «другие» могли видеть и изменять свои файлы.

Как umask маскирует разрешения

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

Значения umask работают как инверсия обычных значений разрешений.

  • 0: разрешения не удаляются.
  • 1: бит выполнения не установлен в разрешениях.
  • 2: бит записи не установлен в разрешениях.
  • 4: бит чтения не установлен в разрешениях.

Разрешения по умолчанию 777 для каталогов и 666 для файлов были изменены значением umask 002, чтобы получить возможные разрешения 775 и 664 для нашего тестового каталога и файла.

stat umask-article.txt | grep "Access: ("
stat howtogeek | grep "Access: ("

Это удаляет разрешение на запись из категории «другие» как в каталоге, так и в файле.

если root создает каталог, применяется их значение umask 022. Разрешение на запись удалено для категории «Другие», а также для категории «Группа».

sudo mkdir root-dir
stat howtogeek | grep "Access: ("

Мы видим, что разрешения по умолчанию 777 были уменьшены до 755.

Изменение значения umask по умолчанию

Существуют разные значения umask для оболочек входа в систему и оболочек без входа в систему. Оболочки входа — это оболочки, которые позволяют вам входить в систему локально или удаленно через SSH. Оболочка без входа — это оболочка внутри окна терминала, когда вы уже вошли в систему.

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

В Ubuntu и Manjaro настройки umask можно найти в следующих файлах:

  • Маска оболочки входа в систему: значение umask по умолчанию для оболочки входа в систему: /etc/profile
  • Оболочка без входа в систему: значение umask по умолчанию для оболочки без входа в систему: /etc/bash.bashrc

В Fedora настройки umask можно найти в следующих файлах:

  • Маска входа в оболочку: для входа в оболочку значение umask по умолчанию: /etc/profile
  • Оболочка без входа в систему. Значение umask по умолчанию для оболочки без входа в систему: /etc/bashrc

Если у вас нет острой необходимости менять их, лучше оставить их в покое.

Предпочтительным способом является установка нового значения umask для любых отдельных учетных записей пользователей, которое должно отличаться от значения по умолчанию. Новую настройку umask можно поместить в файл «.bashrc» пользователя в его домашнем каталоге.

gedit .bashrc

Добавьте настройку umask вверху файла.

Сохраните файл и закройте редактор. откройте новое окно терминала и проверьте значение umask с помощью команды umask.

umask

Новое значение активно.

Краткосрочные изменения в umask

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

Вы можете установить значение umask равным 077, а затем проверить, активно ли новое значение.

umask 077
umask

Установка маски со значением 7 в группе и других категориях означает, что все разрешения удаляются из этих категорий. Никто, кроме вас (и root), не сможет войти в новые каталоги, прочитать и отредактировать ваши файлы.

mkdir secure-dir
ls -ld secure-dir

Единственные разрешения для владельца каталога.

mkdir secure-file.txt
ls -ld secure-file.txt

Файл защищен от слежки со стороны любых других пользователей. Закрытие окна терминала отменяет временную настройку umask.

Другие способы использования umask

Linux позволяет некоторым процессам наследовать системные значения umask или получать собственные настройки umask. Например, useradd использует параметр umask для создания домашних каталогов новых пользователей.

Значение umask также может быть применено к файловой системе.

less /etc/fstab

На этом компьютере к файловой системе «/boot/efi» применяется параметр umask 077.

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

ls /boot/efi -ld

umask и разрешения нужны друг другу

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