umask (Русский)

Утилита umask используется для управления маской режима (mode mask), которая определяет начальное значение битов разрешений (permission bits) для создаваемых файлов. Поведение этой утилиты стандартизировано POSIX и описано в POSIX Programmer's Manual. Поскольку umask влияет на среду текущей командной оболочки, она обычно реализуется как встроенная команда оболочки.

Состояние перевода: На этой странице представлен перевод статьи umask. Дата последней синхронизации: 10 февраля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Значение маски режима

Маска режима содержит биты разрешений, которые не должны устанавливаться для создаваемого файла, поэтому она является логическим отрицанием битов разрешений, устанавливаемых для создаваемого файла. Если какой-либо бит в маске установлен в 1, соответствующее разрешение для создаваемого файла будет сброшено. Таким образом, маска действует как фильтр для удаления битов разрешений и помогает установить доступ к файлам по умолчанию.

Итоговое значение битов разрешений для вновь создаваемого файла вычисляется с помощью инверсии импликации (material nonimplication), которая может быть выражена в логической нотации:

R: (D & (~M))

Итоговое значение — это конъюнкция разрешений по умолчанию D и побитового отрицания маски режима M.

Примечание:
  • Linux не позволяет создавать файлы сразу с битами выполнения. Разрешения по умолчанию для каталога — 777, а для файла — 666.
  • В Linux учитываются только биты разрешений — смотрите umask(2). Биты suid, sgid и sticky в маске игнорируются.

Для примера возьмём маску 027. Значения каждой цифры таковы:

  • 0 указывает, какие биты разрешений пользователя (user) не будут установлены у файла
  • указывает, какие биты разрешений группы (group) не будут установлены у файла
  • указывает, какие биты разрешений остальных (other) не будут установлены у файла

С учётом информации из таблицы ниже, это означает, что для создаваемого файла, например, принадлежащего пользователю и группе , имеет все возможные разрешения (восьмеричное значение ) на созданный файл, другие пользователи группы не имеют прав на запись (восьмеричное значение 5), а любой другой пользователь не имеет никаких прав (восьмеричное значение 0) на созданный файл. Таким образом, с маской 027 в данном примере файлы будут создаваться с разрешениями .

ВосьмеричноеДвоичноеЗначение
0нет разрешений
1только выполнение
только запись
запись и выполнение
100только чтение
5чтение и выполнение
6чтение и запись
чтение, запись и выполнение

Просмотр текущего значения маски

Просто выполните команду без аргументов. Конкретный стиль вывода зависит от реализации, но обычно выводится значение маски в восьмеричной системе счисления:

С опцией , которая стандартизована в POSIX, маска будет отображаться с использованием символьной нотации. Однако значение символьной нотации всегда будет логическим отрицанием восьмеричного значения маски, то есть отображаются биты разрешений, которые будут установлены для вновь создаваемого файла:

Установка значения маски

Изменить маску можно с помощью команды umask. Строка, задающая маску режима, подчиняется тем же синтаксическим правилам, что и аргумент mode в chmod (подробности смотрите в POSIX Programmer's Manual).

Общесистемное значение маски можно прописать в или в стандартный файл конфигурации командной оболочки, например /etc/bash.bashrc. Многие дистрибутивы Linux, в том числе Arch, используют по умолчанию 022 (смотрите /etc/profile). Можно также указать маску с помощью , но это может быть переопределено в и других подобных местах.

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

Смотрите также

gollark: I can't help you with naming because I don't know what they are.
gollark: Bob, Jeremy, Kyle...
gollark: Also, the variable names are awful and I don't understand this.
gollark: I don't know what a "token" is.
gollark: Yes I do.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.