Как использовать команду Umask в Linux

12 set 2022 4 min di lettura
Как использовать команду Umask в Linux
Indice dei contenuti

Введение

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

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

Разрешения Linux

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

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

  • владелец файла.
  • Участники группы.
  • все остальные.

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

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

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

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

ls -l dirname
drwxr-xr-x 12 noviello users 4.0K Sep 8 17:22 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
  • Группа: гх = 4 + 0 + 1 = 5
  • Другое: гх = 4 + 0 + 1 = 5

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

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

Скрыть команду

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

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

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

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

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

umask

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

022

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

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

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

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

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

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

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

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

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

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

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

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

Значение Uмаски: 777-750 = 027

Желаемое значение umask, представленное в числовом представлении, равно 027.

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

sudo nano /etc/profile

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

umask 027

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

source /etc/profile

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

mkdir new_dir
touch newfile

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

drwxr-x--- 2 noviello users 4096 Sep 9 05:01 new_dir
 -rw-r----- 1 noviello users 0 Sep 9 05:01 new_file

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

Вывод

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

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

 man umask

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.