Команда 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 Переменная
umask Переменная

Итак, первая цифра в 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 означает, что ничего не удалено из Владелец.

Распределение переменных umask
Распределение переменных umask

Итак, допустим, мы создаем новый каталог в файловой системе.

По умолчанию 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, и у вас есть идеи о том, как вы можете использовать это в своем рабочем процессе.

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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *