Команда Umask в Linux
Команда Umask в Linux
Umask Command in Linux
В операционных системах Linux и Unix все новые файлы создаются с набором разрешений по умолчанию. umask

Утилита позволяет просматривать и устанавливать маску режима создания файла, который определяет разрешения для вновь создаваемых файлов или каталогов.
Он используется командами mkdir, touch, tee и другими, которые создают новые файлы и каталоги.
Разрешения Linux
Прежде чем идти дальше, давайте кратко объясним модель разрешений Linux.
В Linux каждый файл связан с владельцем и группой и ему назначены права доступа для трех разных классов пользователей:
- владелец файла.
- члены группы.
- все остальные.
Существует три типа разрешений, которые применяются к каждому классу:
- разрешение на чтение.
- разрешение на запись.
- разрешение на выполнение.
Эта концепция позволяет вам указать, каким пользователям разрешено читать файл, записывать в файл или выполнять файл.
Чтобы просмотреть права доступа к файлу, используйте ls
команду:
ls -l dirname
drwxr-xr-x 12 baksdev users 4.0K Apr 8 20:51 dirname
|[-][-][-] [------] [---]
| | | | | |
| | | | | +-----------> Group
| | | | +-------------------> Owner
| | | +----------------------------> Others Permissions
| | +-------------------------------> Group Permissions
| +----------------------------------> Owner Permissions
+------------------------------------> File Type
Первый символ представляет тип файла, который может быть обычным file ( -
), directory ( d
), символической ссылкой ( l
) или любым другим специальным типом файла.
Следующие девять символов представляют разрешения, три набора по три символа в каждом. Первый набор показывает права владельца, второй - права группы, а последний набор - права доступа для всех остальных.
Символ r
с восьмеричным значением 4
стоит для чтения, w
с восьмеричным значением 2
для записи, x
с восьмеричным значением 1
для разрешения на выполнение и ( -
) с восьмеричным значением 0
для без разрешений.
Есть также три типа разрешений специального файла: setuid
, setgid
и Sticky Bit
.
В приведенном выше примере ( rwxr-xr-x
) означает, что владелец имеет разрешения на чтение, запись и выполнение ( rwx
), группа и другие пользователи имеют разрешения на чтение и выполнение.
Если мы представим права доступа к файлу с помощью числовой записи, мы подойдем к числу 755
:
- Владелец:
rwx
=4+2+1 = 7
- Группа:
r-x
=4+0+1 = 5
- Другое:
r-x
=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
Владелец может перейти в каталог и просмотреть список, изменить, создать или удалить файлы в каталоге. Группа и другие могут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 baksdev users 4096 Jul 4 18:14 newdir
-rw-r----- 1 baksdev users 0 Jul 4 18:14 newfile
Другой способ установить маску создания файла - использовать символическую запись. Например так umask u=rwx,g=rx,o=
же, как umask 027
.
Вывод
В этом руководстве мы объяснили права доступа Linux и как использовать umask
команду для установки битов разрешений для вновь создаваемых файлов или каталогов.
Для получения дополнительной информации введите man umask
в своем терминале.