Команда Umask в Linux с примерами
В этом уроке мы поговорим о том, как работать с разрешениями Linux по умолчанию (команда umask).
В своих предыдущих статьях я объяснил следующие концепции и прошу вас сначала прочитать это руководство.
Разрешения Linux по умолчанию
Возможно, вы заметили, что всякий раз, когда вы создаете новый файл или новый каталог в файловой системе Linux, для этого файла или каталога автоматически назначается набор разрешений по умолчанию.
Теперь поймите, что по умолчанию Linux назначает read
, write
к Владелец, read
, write
к Группа а также read
, write
к Другие всякий раз, когда файл создается в файловой системе.
И мы представляем эти разрешения в числовом виде как 666
.
Если вы создадите новый каталог в файловой системе, то по умолчанию Linux назначит read
, write
а также execute
в каталог Владелец, read
, write
, а также execute
к Группа владельцев а также read
, write
, execute
все Другие пользователи в системе.
Теперь имейте в виду, что на самом деле это не настоящие разрешения, которые файл или каталог получит, когда вы создадите его в файловой системе.
Давайте посмотрим на пример.
Итак, предположим, что я должен был создать новый каталог в моем домашнем каталоге, и мы назовем его мои данные.
И в этом каталоге я собираюсь создать новый файл с именем file.txt.
Теперь, основываясь на том, что мы только что рассмотрели, мои данные каталог должен иметь режим drwx-rwx-rwx
и file.txt файл должен иметь режим -rw-rw-rw-
.
Но обратите внимание, что это не так.
# touch file.txt
# mkdir mydata
# ls -l
-rw-r--r--. 1 root root 0 Mar 22 00:15 file.txt
drwxr-xr-x. 2 root root 6 Mar 22 00:16 mydata
Обратите внимание, что мои данные каталог имеет режим read
, write
, execute
к Владелец, read
а также execute
к Группа владельцев а также read
а также execute
к Другие что по сути является режимом 755
.
Для file.txt мы даем read
а также write
разрешения на Владелец и мы даем read
разрешения на Группа а также Другие.
Понимание umask
Теперь вы должны были заметить, что это не те разрешения по умолчанию, которые Linux должен был назначить этому файлу и каталогу.
Почему это случилось?
Важно помнить, что права по умолчанию, которые Linux хочет назначить файлам и каталогам при их создании в файловой системе, слишком либеральны.
Если задуматься, режим каталогов по умолчанию позволит любому в системе войти в любой каталог в файловой системе и удалить любые файлы, которые они захотят.
Точно так же файловый режим по умолчанию позволит любому пользователю в системе изменять созданные им файлы.
Подумайте о кошмарной ситуации, которая может возникнуть с точки зрения безопасности.
Чтобы повысить общую безопасность системы, Linux использует переменную с именем umask
для автоматического удаления разрешений из режима по умолчанию, который Linux хочет назначать всякий раз, когда файл или каталог создается в файловой системе.
Как проверить значение umask
Теперь стоимость umask
представляет собой трехзначное число, и вы можете просмотреть его, выполнив команду umask в приглашении оболочки.
$ umask
0022
В качестве альтернативы вы можете использовать прописные буквы -S
вариант с командой umask для отображения umask
значение в символической записи.
# umask -S
u=rwx,g=rx,o=rx
И когда вы это сделаете, вы на самом деле увидите четыре цифры, игнорируйте первую для наших целей сегодня, мы хотим сосредоточиться на последних трех цифрах, которые 022
.
Теперь, в зависимости от вашего дистрибутива Linux, значение по умолчанию umask
будет либо 022
или 002
.
Я видел оба б / у. Помните, что каждая цифра представляет собой числовое разрешение, которое будет удалено из разрешений по умолчанию, назначенных Linux.

Итак, первая цифра в umask
переменная представляет разрешения, которые будут удалены из файла или каталога, которые владелец представит как u
.
Вторая цифра, как вы могли догадаться, представляет собой разрешения, которые будут удалены из группы владельцев.
И последняя цифра представляет разрешения, которые будут удалены с Других в системе.
Пример того, как umask
здесь показаны работы.
### Effect of umask on Directories ###
Default Mode: rwxrwxrwx
Minus permissions removed by umask: ----w--w-
Effective permissions assigned: rwxr-xr-x
### Effect of umask on Files ###
Default Mode: rw-rw-rw-
Minus permissions removed by umask: ----w--w-
Effective permissions assigned: rw-r--r--
Теперь дистрибутив, в котором я ранее запускал команду umask, имел umask
переменная 022
.
Что означает write
(2
) разрешение удалено из Группа а также Другие а также 0
означает, что ничего не удалено из Владелец.



Итак, допустим, мы создаем новый каталог в файловой системе.
По умолчанию Linux хочет предоставить read
, write
, а также execute
каждому объекту: пользователю, группе и другим.
Но из-за ценности umask
, мы вычитаем w
(Запись) разрешение от Группы и других. Результирующий режим с действующими разрешениями, которые затем будут назначены, показан здесь:
- У нас есть
read
,write
, а такжеexecute
предоставляется Владельцу. - Но поскольку мы вычли
w
разрешение черезumask
, Группа и другие получают толькоread
а такжеexecute
.
Аналогичным образом, если мы создадим файл в файловой системе, Linux снова захочет решить read
а также write
разрешения на этот файл для владельца, группы и других.
Но из-за ценности umask
мы собираемся удалить write
разрешение от Группы и других. Тогда действующее разрешение read
а также write
для собственника и только read
для группы и других.
Как изменить значения umask по умолчанию
Теперь значение по умолчанию umask
обычно работает для большинства администраторов Linux.
Но могут быть ситуации, когда вам, скорее всего, потребуется либо ужесточить, либо, возможно, ослабить, скорее всего, разрешения, которые назначаются файлам или каталогам при их создании в файловой системе.
Для этого вы просто меняете значение, присвоенное umask
.
Это можно сделать двумя разными способами.
Как временно изменить значение umask
Во-первых, если вам нужно только временно изменить umask
вы просто входите umask
в приглашении оболочки, за которым следуют числовые разрешения, которые вы хотите вычесть из разрешений по умолчанию, которые будут автоматически назначены как для файлов, так и для каталогов.
Пример # 1
если бы мы хотели удалить read
(4
), write
(2
), а также execute
(1
) разрешение, которое автоматически назначается Другие всякий раз, когда создается новый каталог, мы указываем 7
на последнем месте.
# umask 027
Теперь с этим новым значением umask
то есть 027
, Я создал новую папку с именем мои данные в приглашении оболочки, и вот результат.
# ls -l
drwxr-x---. 2 root root 6 Mar 22 09:53 mydata
В качестве альтернативы вы также можете использовать символьную нотацию вместо числовой нотации, чтобы установить umask
ценить. Вот пример.
# umask u=rwx,g=rx,o=
Вышеупомянутая команда похожа на umask 027
.
Пример # 2
Далее предположим, что мы хотим удалить read
(4
) а также write
(2
) разрешение, которое автоматически назначается группе всякий раз, когда вы создаете новый файл или каталог в файловой системе, мы бы указали 6
во втором месте.
Но мы не хотим касаться Владельца, мы хотим, чтобы разрешения по умолчанию, назначенные Владельцу, оставались неизменными, поэтому мы будем использовать 0
для первого значения в режиме.
# umask 067
Это вызовет read
разрешение, имеющее ценность 4
а также write
разрешение, имеющее значение 2
которые в сумме равны 6
быть удаленным из Группа при создании файла или каталога.
И он также удалит read
который имеет ценность 4
, write
который имеет ценность 2
а также execute
который имеет значение 1
которые в сумме равны 7
из Другие.
Теперь с этим новым значением umask
помню в 067
, Я создал новую папку и новый файл в приглашении оболочки.
# ls -l
-rw-------. 1 root root 0 Mar 22 10:06 file.txt
drwx--x---. 2 root root 6 Mar 22 10:06 mydata
Теперь обратите внимание, что действующие разрешения, назначенные этому каталогу и папке, отличаются от прежних.
Теперь у нас все еще есть 0
поэтому для владельца никакие разрешения не вычитаются из разрешений по умолчанию для каталога или файла.
Как навсегда изменить значение umask
Теперь этот метод изменения umask
переменная отлично работает, но имейте в виду, что она не постоянна.
Если бы я перезапустил систему, то umask
вернется к своим исходным значениям.
Это потому что umask
обычно устанавливается автоматически при каждой загрузке системы с помощью umask
в любом из этих файлов в зависимости от того, какой дистрибутив вы используете.
/etc/profile
/etc/login.defs
Итак, если вы хотите внести изменения в umask
постоянный, вам нужно войти и отредактировать соответствующий файл конфигурации в текстовом редакторе и установить значение umask
до желаемого значения.
Вы можете посетить следующие веб-сайты, чтобы получить дополнительную информацию о umask
.
Заключение
Я надеюсь, что теперь вы хорошо понимаете, как работает umask, и у вас есть идеи о том, как вы можете использовать это в своем рабочем процессе.
Если у кого-то есть какие-либо вопросы о том, что мы рассмотрели в этом руководстве, не стесняйтесь спрашивать в разделе комментариев ниже, и я постараюсь ответить на них.