Команда Umask в Linux

Команда Linux Umask

В операционных системах Linux и Unix все новые файлы создаются с набором прав доступа по умолчанию. Утилита umask позволяет просматривать или задавать маску режима создания файлов, которая определяет биты прав доступа для вновь создаваемых файлов или каталогов.

Он используется командами mkdir, touch, tee и другими, которые создают новые файлы и каталоги.

Разрешения Linux

Прежде чем двигаться дальше, давайте кратко объясним модель прав доступа Linux.

В Linux каждый файл связан с владельцем и группой, а также ему назначаются права доступа для трех различных классов пользователей:

  • Владелец файла.
  • Члены группы.
  • Все остальные.

К каждому классу применяются три типа разрешений:

  • Разрешение на чтение.
  • Разрешение на запись.
  • Разрешение на выполнение.

Эта концепция позволяет указать, каким пользователям разрешено читать файл, записывать в файл или выполнять файл.

Чтобы просмотреть права доступа к файлу, используйте команду ls :

 ls -l dirname
 drwxr-xr-x 12 linuxize users 4.0K Apr 8 20:51 dirname |[-][-][-] [------] [---] | | | | | | | | | | | +-----------> Group | | | | +-------------------> Owner | | | +----------------------------> Others Permissions | | +-------------------------------> Group Permissions | +----------------------------------> Owner Permissions +------------------------------------> File Type

Первый символ представляет тип файла, который может быть обычным файлом ( - ), каталогом ( d ), символической ссылкой ( l ) или любым другим специальным типом файла.

Следующие девять символов представляют разрешения, три набора по три символа в каждом. Первый набор отображает разрешения владельца, второй — разрешения группы, а последний — разрешения всех остальных.

Символ r с восьмеричным значением 4 обозначает чтение, w с восьмеричным значением 2 — запись, x с восьмеричным значением 1 — разрешение на выполнение и ( - ) с восьмеричным значением 0 — отсутствие разрешений.

Существуют также три других специальных типа разрешений файлов: setuid , setgid, и Sticky Bit .

В приведенном выше примере ( rwxr-xr-x ) означает, что владелец имеет разрешения на чтение, запись и выполнение ( rwx ), группа и другие имеют разрешения на чтение и выполнение.

Если представить права доступа к файлу с помощью числовой записи, то получим число 755 :

  • Владелец: rwx = 4+2+1 = 7
  • Группа: rx = 4+0+1 = 5
  • Другое: rx = 4+0+1 = 5

В числовой форме разрешения могут состоять из трёх или четырёх восьмеричных цифр (0–7). Первая цифра обозначает особые разрешения, и её отсутствие означает, что для файла не установлены никакие особые разрешения. В нашем примере 755 соответствует 0755 Первая цифра может представлять собой комбинацию из 4 для setuid , 2 для setgid и 1 для Sticky Bit .

Права доступа к файлу можно изменить с помощью команды chmod , а владельца — с помощью команды chown .

Понимание umask

По умолчанию в системах Linux разрешения на создание файлов составляют 666 , что даёт право на чтение и запись пользователю, группе и другим пользователям, и 777 для каталогов, что даёт право на чтение, запись и выполнение пользователю, группе и другим пользователям. Linux не позволяет создавать файлы с разрешением на выполнение.

Разрешения на создание по умолчанию можно изменить с помощью утилиты umask .

umask влияет только на текущую среду оболочки. В большинстве дистрибутивов Linux системное значение umask по умолчанию задаётся в файле pam_umask.so или /etc/profile .

Если вы хотите указать другое значение для каждого пользователя, отредактируйте файлы конфигурации оболочки пользователя, например ~/.bashrc или ~/.zshrc . Вы также можете изменить значение umask текущего сеанса, выполнив umask а затем указав нужное значение.

Чтобы просмотреть текущее значение маски, просто введите umask без каких-либо аргументов:

 umask

Выходные данные будут включать в себя

 022

Значение umask содержит биты разрешений, которые НЕ будут установлены для вновь создаваемых файлов и каталогов.

Как мы уже упоминали, разрешения на создание файлов по умолчанию — 666 , а каталогов 777 Чтобы рассчитать биты разрешений новых файлов, вычтите значение umask из значения по умолчанию.

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

  • Файлов: 666 - 022 = 644 Владелец может читать и изменять файлы. Группа и другие пользователи могут только читать файлы.
  • Каталоги: 777 - 022 = 755 Владелец может войти в каталог, используя cd , и просматривать, читать, изменять, создавать или удалять файлы в нём. Группа и другие пользователи могут войти в каталог, cd , и просматривать и читать файлы.

Вы также можете отобразить значение маски в символьной форме, используя опцию -S :

 umask -S
 u=rwx,g=rx,o=rx

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

Установка значения маски

Маску создания файла можно задать с помощью восьмеричной или символьной записи. Чтобы изменения стали постоянными, установите новое значение umask в глобальном файле конфигурации, например, /etc/profile , который будет применяться ко всем пользователям, или в файлах конфигурации оболочки пользователя, например, ~/.profile , ~/.bashrc или ~/.zshrc , которые будут применяться только к пользователю. Пользовательские файлы имеют приоритет над глобальными.

Прежде чем изменять значение umask , убедитесь, что новое значение не представляет потенциальной угрозы безопасности. Значения менее строгие, чем 022 следует использовать с большой осторожностью. Например, umask 000 означает, что любой пользователь имеет права на чтение, запись и выполнение всех вновь создаваемых файлов.

Допустим, мы хотим установить более строгие права доступа для вновь создаваемых файлов и каталогов, чтобы другие пользователи не могли cd к ним и читать файлы. Нам нужны права доступа 750 для каталогов и 640 для файлов.

Чтобы рассчитать значение umask , просто вычтите желаемые разрешения из разрешений по умолчанию:

Значение Umask: 777-750 = 027

Требуемое значение umask , представленное в числовой форме, равно 027 .

Чтобы навсегда установить новое значение для всей системы, откройте файл /etc/profile в текстовом редакторе:

 sudo nano /etc/profile

и измените или добавьте следующую строку в начале файла:

/etc/profile

 umask 027

Чтобы изменения вступили в силу, выполните следующую source команду или выйдите из системы и войдите в систему:

 source /etc/profile

Для проверки новых настроек создадим один новый файл и каталог с помощью mkdir и touch :

 mkdir newdir touch newfile

Если вы проверите права доступа с помощью команды ls , то заметите, что новый файл имеет права доступа 640 , а новый каталог 750 , как мы и хотели:

 drwxr-x--- 2 linuxize users 4096 Jul 4 18:14 newdir -rw-r----- 1 linuxize users 0 Jul 4 18:14 newfile

Другой способ задать маску создания файла — использовать символическую запись. Например umask u=rwx,g=rx,o= соответствует umask 027 .

Заключение

В этом руководстве мы объяснили, что такое права доступа Linux и как использовать команду umask для установки битов прав доступа для вновь создаваемых файлов или каталогов.

Для получения дополнительной информации введите man umask в терминале.

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

терминал umask

Связанные руководства

Источник

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

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