Umask - Umask
Эта статья нужны дополнительные цитаты для проверка.Март 2017 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Пример маска команда | |
изначальный выпуск | 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).
В разрешения применяются к разным классам пользователей:
Письмо | Учебный класс | Описание |
---|---|---|
ты | Пользователь | владелец |
грамм | группа | пользователи, которые являются членами группы файла |
о | другие | пользователи, которые не являются владельцами файла или участниками группы |
а | все | все три из вышеперечисленных, так же, как уго . (По умолчанию, если нет буквы класса пользователя указаны в маска.) |
В оператор указывает, как должны быть настроены режимы разрешений маски.
Оператор | Влияние на маску |
---|---|
+ | указанные разрешения включены, не указанные разрешения не изменяются. |
- | Указанные разрешения запрещены для включения, не указанные разрешения не изменяются. |
= | указанные разрешения включены, не указанные разрешения запрещены. |
В символы-разрешения укажите, какие настройки разрешений файла должны быть разрешены или запрещены маской.
Символ | Имя | Описание |
---|---|---|
р | читать | рчитать файл или выводить список содержимого каталога |
ш | записывать | шобряд в файл или каталог |
Икс | выполнять | еИксизвлечь файл или рекурсивно просмотреть дерево каталогов |
Икс | специальное исполнение | Видеть Символьные режимы. |
s | setuid / gid | Видеть Права доступа к файлам. |
т | липкий | См. Разрешения для файлов. |
Например:
маска u-w
Запретить шобряд разрешения на то, чтобы быть установленным для тысер. Остальные флажки в маске не изменились.
Пример нескольких изменений:
маска u-w, g=г, о + г
Это установит маску так, чтобы она:
- запретить шобряд разрешения на то, чтобы быть установленным для тыser, а остальные флаги оставить без изменений;
- позволить рразрешение ead для включения граммгруппа, запрещая шобряд и еИксвыдать разрешение на граммroup;
- позволить рразрешение 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 |
F | F | F |
Как наносится маска
Восьмеричная цифра вмаска команда | Двоичный вход маска | Отрицание маски | Логическое И с запросом "rwx"[5] |
---|---|---|---|
0 | 000 | 111 | rwx |
1 | 001 | 110 | rw- |
2 | 010 | 101 | r-x |
3 | 011 | 100 | р-- |
4 | 100 | 011 | -wx |
5 | 101 | 010 | -w- |
6 | 110 | 001 | --Икс |
7 | 111 | 000 | --- |
Программно маска применяется ОС, сначала отрицая (дополняя) маску, а затем выполняя логическое И с запрошенным файловым режимом. В [вероятно] первом руководстве 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
.
Смотрите также
Рекомендации
- ^ "Руководство по 7-му изданию UNIX, Bell Labs UNIX". Руководство. AT&T лаборатории. Получено 2019-05-14.
- ^ Ольчак, Анатоль (9.06.2019). «Korn Shell: Руководство по программированию для Unix и Linux». Oreilly. Эддисон-Уэсли Профессионал. Получено 2013-01-14.
- ^ "umask", Единая спецификация UNIX, версия 2 (руководство), The Open Group, 1997, получено 2013-01-14
- ^ Примечание: Некоторые языки программирования требуют наличия префикса перед восьмеричной системой записи, например цифры 0 или букв o или q. В
маска
команда не использует этот тип префиксной записи - используются только восьмеричные цифры. - ^ Примечание: Операционные системы обычно также отключают права на выполнение для вновь создаваемых файлов.
- ^ "Руководство по 8-му изданию UNIX, Bell Labs UNIX". Руководство. AT&T лаборатории. Получено 2013-01-14.
- ^ "umask (2)", Руководство программиста Linux, выпуск 3.32 (руководство), проект man-страниц Linux, 9 января 2008 г., получено 2013-01-01