Что такое Umask в Linux и как его эффективно использовать?

Umask (сокращение от user-file creation mode mask) – это команда Linux, которая устанавливает разрешения для файлов или каталогов, создаваемых пользователями. Linux использует эту фундаментальную команду для установки разрешений по умолчанию. При создании нового файла или каталога команда umask определяет начальный уровень доступа. Мы можем рассматривать umask как функцию, устанавливающую маску, которая известна как маска режима создания файла.

Как работает Umask и что такое синтаксис?

Umask работает таким образом, что маска представляет собой группу битов, каждый из которых ограничивает соответствующие разрешения при создании нового файла или каталога. Биты в команде umask можно изменить, вызвав команду umask. Синтаксис команды umask следующий:

umask [OPTION]... [MODE]

Выполнение этой команды без аргументов и опций вернет текущее значение. Давайте реализуем это:

umask

Вы должны получить вывод с такими битами:

0022

Это значение маски по умолчанию во многих дистрибутивах Linux, и если вы раньше ничего не знали о команде umask, то, вероятно, не знали бы, как изменить его, чтобы вернуть значение ошибки.

Понимание значения Umask

Теперь давайте подробнее объясним значение 0022 и то, что оно на самом деле означает. Когда создается файл, разрешения по умолчанию устанавливаются на 644; когда создается каталог, разрешения устанавливаются на 755.

Значение umask – это трехзначное число, каждая цифра которого представляет собой комбинацию разрешений:

0: read, write, and execute
1: read and write
2: read and execute
3: read only
4: write and execute
5: write only
6: execute only
7: no permissions

Полные разрешения для файлов – 666 (чтение/запись для всех), а для каталогов – 777 (чтение/запись/исполнение). Таким образом, если umask имеет значение по умолчанию, мы вычитаем полное разрешение и число umask:

для файлов:  666 - 022 = 644
для директорий: 777 - 022 = 755

Теперь, когда это стало понятно, мы можем рассказать, как можно изменить значение umask по умолчанию. Чтобы изменить значение umask на 027, выполните следующую команду:

umask 027

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

0027

Первый бит мы называем «липким». Это первый ноль, а остальные 027 – восьмеричные значения umask для файла или каталога.

Давайте создадим файл после того, как изменим значение umask по умолчанию.

touch example.txt

После создания перечислите файл:

ls -alh example.txt

Вы получите следующий результат:

root@host:~# ls -alh example.txt 
-rw-r----- 1 root root 0 Oct  2  example.txt

Как видите, разрешения 640(rw-r—), потому что (666 – 027 = 639 ~ 640).

Теперь создадим директорию:

mkdir test
ls -alh test/

Вы должны получить следующий результат:

root@host:~# ls -alh test/
total 8.0K
drwxr-x--x 2 root root 4.0K Oct  2 .

Разрешения равны *750*(rwxr-x-), потому что (777 – 027 = 750).

Обратите внимание, что допустимые значения umask могут варьироваться от 000 до 777. Например, это недопустимое значение umask:

umask 800

Вы получите следующее сообщение:

root@host:~# umask 800
-bash: umask: 800: octal number out of range

Ниже приведена таблица с кратким объяснением значения и смысла разрешения.

Разрешения Двоичное значение Восьмиричное значение Описание
- 000 0 Нет разрешений
-x 001 1 выполнить
-w- 010 2 записать
-wx 011 3 записать и выполнить
r- 100 4 читать
r-x 101 5 прочитать и выполнить
rw- 110 6 чтение и запись
rwx 111 7 чтение, запись и выполнение

Подробнее о команде Umask

Если вы хотите узнать больше о команде Umask, вы можете выполнить следующую команду:

man umask
Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Похожие статьи

Комментарии (0)

Опубликовать