Jump to content

маска

маска
Оригинальный автор(ы) AT&T Bell Laboratories
Разработчик(и) Различные с открытым исходным кодом и коммерческие разработчики разработчики
Первоначальный выпуск 1978 год ; 46 лет назад ( 1978 )
Операционная система Unix и Unix-подобные
Платформа Кросс-платформенный
Тип Команда

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

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

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

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

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

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

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

[ редактировать ]

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

umask [-S ] [maskExpression]

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

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

[ редактировать ]

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

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

$ umask         # display current value (as octal)
0022
$ umask -S      # display current value symbolically
u=rwx,g=rx,o=rx

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

[ редактировать ]

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

$ umask 007    # set the mask to 007
$ umask        # display the mask (in octal)
0007           #   0 - special permissions (setuid | setgid | sticky )
               #   0 - (u)ser/owner part of mask
               #   0 - (g)roup part of mask
               #   7 - (o)thers/not-in-group part of mask
$ umask -S     # display the mask symbolically
u=rwx,g=rwx,o=

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

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

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

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

[ редактировать ]

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

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

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

Несколько выражений маски разделяются запятыми.

Пробел завершает выражение(я) маски .

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

Письмо Сорт Описание
u пользователь владелец
g группа пользователи, являющиеся членами группы файла
o другие пользователи, не являющиеся владельцами файла или членами группы
a все все три вышеперечисленных, то же самое, что и ugo. (Значение по умолчанию, если буквы пользовательского класса не указаны в MaskExpression .)

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

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

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

Символ Имя Описание
r читать прочитать файл или просмотреть содержимое каталога
w писать записать в файл или каталог
x выполнять выполнить каталогов файл или рекурсивно просмотреть дерево
X специальная казнь См. Символические режимы .
s setuid/гид См. Разрешения для файлов .
t липкий См. Разрешения для файлов.

Например:

umask u-w

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

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

umask u-w,g=r,o+r

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

  1. запретить пользователя установку разрешения на запись для , оставив остальные флаги неизменными;
  2. разрешить , разрешение на чтение для группы запретив при этом на запись и выполнение разрешение для группы ;
  3. разрешить других разрешение на чтение для , оставив остальные флаги неизменными.

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

[ редактировать ]

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

umask команда отдана Как маска повлияет на права создаваемых впоследствии файлов/каталогов
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 разрешить разрешение на чтение или запись для владельца и группы, но не разрешение на выполнение; разрешить разрешение на чтение для других, но не разрешение на запись или выполнение
umask 0755 эквивалентно u-rwx,go=w. ( 0 указывает, что специальные режимы (setuid, setgid, Sticky) могут быть включены.)

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

$ umask -S       # Show the (frequently initial) setting 
u=rwx,g=rx,o=rx
$ gcc hello.c      # compile and create executable file a.out
$ ls -l a.out 
-rwxr-xr-x  1 me  developer  6010 Jul 10 17:10 a.out 
$ # the umask prohibited Write permission for Group and Others
$ ls  > listOfMyFiles    # output file created by redirection does not attempt to set eXecute
$ ls -l listOfMyFiles
-rw-r--r--  1 me  developer  6010 Jul 10 17:14 listOfMyFiles 
$ # the umask prohibited Write permission for Group and Others
$ ############################################################
$ umask u-w  # remove user write permission from umask
$ umask -S
u=rx,g=rx,o=rx
$ ls > protectedListOfFiles
$ ls -l protectedListOfFiles
-r--r--r--  1 me  developer  6010 Jul 10 17:15 protectedListOfFiles 
$ rm protectedListOfFiles
override r--r--r-- me/developer for protectedListOfFiles? 
$ # warning that protectedListOfFiles is not writable, answering Y will remove the file
$ #####################################################################################
$ umask g-r,o-r  # removed group read and other read from mask
$ umask -S
u=rx,g=x,o=x
$ ls > secretListOfFiles
$ ls -l secretListOfFiles
-r--------  1 me  developer  6010 Jul 10 17:16 secretListOfFiles

Эффект маски

[ редактировать ]

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

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

[ редактировать ]
Как цифры в umask Команда появляется в маске и в конечном итоге влияет на запрос программы на создание файла, например, полного ( rwx) разрешения
цифра
 umask команда
Двоичный вход
маска
Отрицание
маски
Логическое И
с запросом "rwx" [5]  
0 000 111 rwx
1 001 110 рв-
2 010 101 прием
3 011 100 р--
4 100 011 -wx
5 101 010 -В-
6 110 001 --х
7 111 000 ---

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

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

- Руководство по UNIX, восьмое издание, Bell Labs UNIX (руководство), AT&T Laboratories

Исключения

[ редактировать ]

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

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

$ umask 0000
$ chmod +rwx filename
$ ls -l filename
-rwxrwxrwx filename
$ umask 0022
$ chmod +rwx filename
$ ls -l filename
-rwxr-xr-x filename

Процессы

[ редактировать ]

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

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

[ редактировать ]

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

См. также

[ редактировать ]
  1. ^ «Руководство по UNIX, 7-е издание, Bell Labs UNIX» . Руководство . Лаборатории AT&T . Проверено 14 мая 2019 г.
  2. ^ Ольчак, Анатоль (09.06.2019). «Korn Shell: Руководство по программированию для Unix и Linux» . Орейли . Аддисон-Уэсли Профессионал . Проверено 14 января 2013 г.
  3. ^ «umask» , Единая спецификация UNIX, версия 2 (руководство), The Open Group, 1997 г. , получено 14 января 2013 г.
  4. ^ Примечание. В некоторых языках программирования перед восьмеричной записью требуется префиксный символ, например цифра 0 или буквы o или q. umask Команда не использует этот тип префиксной записи — используются только восьмеричные цифры.
  5. ^ Примечание. Операционные системы обычно также лишают разрешений на выполнение вновь созданных файлов.
  6. ^ «Руководство по UNIX, 8-е издание, Bell Labs UNIX» . Руководство . Лаборатории AT&T . Проверено 14 января 2013 г.
  7. ^ «umask(2)» , Руководство программиста Linux, выпуск 3.32 (руководство), проект справочных страниц Linux, 9 января 2008 г. , получено 1 января 2013 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a096fa29f6c8220a1f836d4ddcd4a04e__1719041520
URL1:https://arc.ask3.ru/arc/aa/a0/4e/a096fa29f6c8220a1f836d4ddcd4a04e.html
Заголовок, (Title) документа по адресу, URL1:
umask - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)