Umask - Umask

маска
Пример команды umask
Пример маска команда
изначальный выпуск1978; 42 года назад (1978)
Операционная системаUnix и Unix-подобный
ТипКоманда

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

Обзор

В Unix-подобный В системах каждый файл имеет набор атрибутов, которые определяют, кто может его читать, писать или выполнять. Когда программа создает файл, права доступа к файлу ограничиваются маской. Если в маске установлен бит «1», то соответствующее исходное разрешение файла будет отключен. Бит, установленный на "0" в маске, означает, что соответствующее разрешение будет определяется программой и файловая система. Другими словами, маска действует как фильтр последней ступени, который удаляет разрешения при создании файла; каждый бит, установленный в "1", удаляет соответствующее разрешение. Разрешения могут быть изменены позже пользователями и программами, использующими chmod.

Каждая программа (технически называемая процесс ) имеет собственную маску и может изменять свои настройки с помощью вызова функции. Когда процесс ракушка, маска задается маска команда. Когда оболочка или процесс запускает новый процесс, дочерний процесс наследует маску от своего родительского процесса. Как правило, маска влияет только на права доступа к файлам во время создания новых файлов и не действует, когда права доступа к файлам изменяются в существующих файлах; Тем не менее chmod Команда проверит маску, если параметры режима указаны с использованием символического режима и не указана ссылка на класс пользователей.

Маска хранится как группа битов. Его можно представить как двоичный, восьмеричный или же символический обозначение. В маска позволяет установить восьмеричную маску (например, 0754) или символические (например, u =, g = w, o = wx) обозначение.

В маска команда используется с Unix-подобный операционные системы и маска функция определена в POSIX.1 Технические характеристики.

История

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

Команда оболочки

В оболочке маска устанавливается с помощью маска команда. Синтаксис команды:[2]

маска [-S ] [маска]

(Пункты в скобках необязательны.)

Отображение текущей маски

Если маска Команда вызывается без аргументов, она отображает текущую маску. Выход будет в любом восьмеричный или же символический обозначение, в зависимости от ОС.[3]

В большинстве снаряды, но не Оболочка C, то -S аргумент (т.е. umask -S) проинструктирую маска для отображения с использованием символьной записи. Например:

$ маска         # отображать текущее значение (в восьмеричном формате)0022$ маска -S # отображать текущее значение символическиты=rwx, г=rx, o=rx

Установка маски с использованием восьмеричной записи

Если маска Команда вызывается с восьмеричным аргументом, она напрямую устанавливает биты маски для этого аргумента:

$ маска 007    # установить маску на 007$ маска        # отобразить маску (в восьмеричном формате)0007           # 0 - специальные разрешения (setuid | setgid | sticky)               # 0 - (u) ser / владелец части маски               # 0 - (g) групповая часть маски               # 7 - (o) часть маски, не входящая в группу$ маска -S # отображать маску символическиты=rwx, г=rwx, o=

Если введено менее 4 цифр, предполагаются ведущие нули. Ошибка возникнет, если аргумент не является допустимым восьмеричным числом или если он содержит более 4 цифр.[4] Три крайние правые восьмеричные цифры относятся к классам пользователей «владелец», «группа» и «другие» соответственно. Если присутствует четвертая цифра, крайняя левая (старшая) цифра относится к трем дополнительным атрибутам: бит setuid, то бит setgid и липкий кусочек.

Восьмеричные коды

Восьмеричная цифра в
маска команда
Разрешения маска будет
запретить установку при создании файла
0может быть установлено любое разрешение (чтение, запись, выполнение)
1установка разрешения на выполнение запрещена (чтение и запись)
2установка разрешения на запись запрещена (чтение и выполнение)
3установка прав на запись и выполнение запрещена (только чтение)
4установка разрешения на чтение запрещена (запись и выполнение)
5установка разрешения на чтение и выполнение запрещена (только запись)
6установка разрешения на чтение и запись запрещена (только выполнение)
7все разрешения запрещены к установке (нет разрешений)

Установка маски с использованием символьной записи

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

[буквы класса пользователя] оператор символы-разрешения

Обратите внимание, что этот синтаксис не работает при использовании Оболочка C из-за разного поведения встроенного маска команда.

Несколько maskExpressions разделены запятыми.

Пробел завершает маска(s).

В разрешения применяются к разным классам пользователей:

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

В оператор указывает, как должны быть настроены режимы разрешений маски.

ОператорВлияние на маску
+указанные разрешения включены, не указанные разрешения не изменяются.
-Указанные разрешения запрещены для включения, не указанные разрешения не изменяются.
=указанные разрешения включены, не указанные разрешения запрещены.

В символы-разрешения укажите, какие настройки разрешений файла должны быть разрешены или запрещены маской.

СимволИмяОписание
рчитатьрчитать файл или выводить список содержимого каталога
шзаписыватьшобряд в файл или каталог
ИксвыполнятьеИксизвлечь файл или рекурсивно просмотреть дерево каталогов
Иксспециальное исполнениеВидеть Символьные режимы.
ssetuid / gidВидеть Права доступа к файлам.
тлипкийСм. Разрешения для файлов.

Например:

маска u-w

Запретить шобряд разрешения на то, чтобы быть установленным для тысер. Остальные флажки в маске не изменились.

Пример нескольких изменений:

маска u-w, g=г, о + г

Это установит маску так, чтобы она:

  1. запретить шобряд разрешения на то, чтобы быть установленным для тыser, а остальные флаги оставить без изменений;
  2. позволить рразрешение ead для включения граммгруппа, запрещая шобряд и еИксвыдать разрешение на граммroup;
  3. позволить рразрешение ead для включения оthers, оставив остальную часть офлаги не изменились.

Примеры командной строки

Вот еще примеры использования маска команда для изменения маски:

маска команда выданаКак маска повлияет на разрешения впоследствии созданные файлы / каталоги
umask a + rпозволяет разрешить чтение для всех классов пользователей; остальные биты маски неизменны
umask a-xзапрещает включение разрешения на выполнение для всех классов пользователей; остальные биты маски неизменны
umask a + rwпозволяет разрешить чтение или запись для всех классов пользователей; остальные биты маски неизменны
umask + rwxпозволяет разрешить чтение, запись или выполнение для всех классов пользователей. (Примечание: на некоторых платформах UNIX это восстановит маску до значения по умолчанию.)
umask u = rw, go =разрешить разрешение на чтение и запись для владельца, но запретить разрешение на выполнение для владельца; запретить включение любых разрешений для группы и других
umask u + w, go-wразрешить разрешение на запись для владельца; запретить разрешение на запись для группы и других пользователей;
umask -Sотображать текущую маску в символьном виде
umask 777запретить чтение, запись и выполнение для всех (вероятно, бесполезно, потому что даже владелец не может читать файлы, созданные с этой маской!)
umask 000разрешить чтение, запись и выполнение для всех (потенциальная угроза безопасности)
umask 077разрешить чтение, запись и выполнение для владельца файла, но запретить чтение, запись и выполнение для всех остальных
umask 113разрешить разрешение на чтение или запись для владельца и группы, но не на выполнение; разрешить доступ на чтение для других, но не разрешение на запись или выполнение
маска 0755эквивалентно u-rwx, go = w. (The 0 указывает, что специальные режимы (setuid, setgid, sticky) могут быть включены.)

Пример, показывающий эффект маска:

$ маска -S # Показать настройку (часто начальную) u = rwx, g = rx, o = rx$ gcc hello.c # скомпилировать и создать исполняемый файл a.out$ ls -l a.out -rwxr-xr-x 1 я разработчик 6010 10 июля 17:10 a.out $ # umask запрещено Разрешение на запись для группы и других$ ls> listOfMyFiles # выходной файл, созданный перенаправлением, не пытается установить eXecute$ ls -l listOfMyFiles-rw-r - r-- 1 я разработчик 6010 10 июля, 17:14 listOfMyFiles $ # umask запрещено Разрешение на запись для группы и других$ ############################################################$ маска u-w # удалить права записи пользователя из umask$ маска -Su = rx, g = rx, o = rx$ ls> protectedListOfFiles$ ls -l protectedListOfFiles-r - r - r-- 1 я разработчик 6010 10 июля 17:15 protectedListOfFiles $ rm protectedListOfFilesпереопределить r - r - r-- меня / разработчика для protectedListOfFiles? $ # предупреждение о том, что protectedListOfFiles не доступен для записи, ответ Y удалит файл$ #####################################################################################$ маска г-р, или-р # удалено чтение группы и другое чтение из маски$ маска -Su = rx, g = x, o = x$ ls> secretListOfFiles$ ls -l secretListOfFiles-r -------- 1 я разработчик 6010 10 июля, 17:16 secretListOfFiles

Эффект маски

Маска применяется всякий раз, когда создается файл. Если для маски установлен бит "1", это означает, что соответствующее разрешение файла всегда будет отключен при последующем создании файлов. Бит, установленный на "0" в маске, означает, что соответствующее разрешение будет определяется процессом запроса и Операционные системы при последующем создании файлов. Другими словами, маска действует как фильтр последней ступени, который удаляет разрешения при создании файла; каждый бит, установленный в «1», удаляет соответствующее разрешение для файла.

Таблица истинности

Здесь таблица истинности для логики маскировки. Каждый бит в режиме разрешения файла запрашивающего процесса обрабатывается маской, используя эту логику для получения режима разрешений, который применяется к файлу по мере его создания. ('p' - это бит в запрашиваемом режиме разрешений файла процесса, создающего файл; 'q' - бит в маске; 'r' - результирующий бит в режиме разрешений созданного файла)

пqр
ТТF
ТFТ
FТF
FFF

Как наносится маска

Как восьмеричный в маска Команда появляется в маске и в конечном итоге влияет на запрос программы на создание файла, например, полный (rwx) разрешения
Восьмеричная цифра в
 маска команда
Двоичный вход
маска
Отрицание
маски
Логическое И
с запросом "rwx"[5] 
0000111rwx
1001110rw-
2010101r-x
3011100р--
4100011-wx
5101010-w-
6110001--Икс
7111000---

Программно маска применяется ОС, сначала отрицая (дополняя) маску, а затем выполняя логическое И с запрошенным файловым режимом. В [вероятно] первом руководстве UNIX, описывающем его функции,[6] в руководстве сказано:

фактический режим ... вновь созданного файла является логическим и заданным режимом и дополнением аргумента. Участвуют только 9 младших битов маски (биты защиты). Другими словами, маска показывает [указывает] биты, которые должны быть отключены при создании файлов.

— UNIX Eighth Edition Manual, Bell Labs UNIX (руководство), AT&T Laboratories

В логическая логика применение маски можно представить в виде:C: (P & (~ Q))

Это говорит о том, что режим разрешения файла (C) является результатом логического И операция между отрицание маски (Q), и параметр запрашиваемого процесса разрешения (P).

Исключения

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

Маска обычно применяется только к функциям, создающим новый файл; однако бывают исключения. Например, при использовании UNIX и GNU версии chmod чтобы установить разрешения для файла, и используется символическая нотация, и пользователь не указывается, то маска применяется к запрошенным разрешениям перед их применением к файлу. Например:

$ маска 0000$ chmod + rwx имя файла$ ls -l имя файла-rwxrwxrwx имя файла$ маска 0022$ chmod + rwx имя файла$ ls -l имя файла-rwxr-xr-x имя файла

Процессы

Каждый процесс имеет собственную маску, которая применяется всякий раз, когда процесс создает новый файл. Когда оболочка или любой другой процесс порождает новый процесс, дочерний процесс наследует маску от своего родительского процесса.[7] Когда процесс ракушка, маска меняется на маска команда. Как и в случае с другими процессами, любой процесс, запущенный из оболочки, наследует маску этой оболочки.

Вариант крепления

в Ядро Linux, то толстый, hfs, hpfs, NTFS, и udf файловая система драйверы поддерживают маска вариант крепления, который определяет, как информация о диске сопоставляется с разрешениями. Это не то же самое, что маска для каждого процесса, описанная выше, хотя разрешения рассчитываются аналогичным образом. Некоторые из этих драйверов файловой системы также поддерживают отдельные маски для файлов и каталогов, используя такие параметры монтирования, как fmask.

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

Рекомендации

  1. ^ "Руководство по 7-му изданию UNIX, Bell Labs UNIX". Руководство. AT&T лаборатории. Получено 2019-05-14.
  2. ^ Ольчак, Анатоль (9.06.2019). «Korn Shell: Руководство по программированию для Unix и Linux». Oreilly. Эддисон-Уэсли Профессионал. Получено 2013-01-14.
  3. ^ "umask", Единая спецификация UNIX, версия 2 (руководство), The Open Group, 1997, получено 2013-01-14
  4. ^ Примечание: Некоторые языки программирования требуют наличия префикса перед восьмеричной системой записи, например цифры 0 или букв o или q. В маска команда не использует этот тип префиксной записи - используются только восьмеричные цифры.
  5. ^ Примечание: Операционные системы обычно также отключают права на выполнение для вновь создаваемых файлов.
  6. ^ "Руководство по 8-му изданию UNIX, Bell Labs UNIX". Руководство. AT&T лаборатории. Получено 2013-01-14.
  7. ^ "umask (2)", Руководство программиста Linux, выпуск 3.32 (руководство), проект man-страниц Linux, 9 января 2008 г., получено 2013-01-01