ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Команда Umask в Linux

Команда Umask в Linux

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

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

 

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

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

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

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

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

ls -l dirname
drwxr-xr-x 12 andreyex 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:

Когда они представлены в цифровом формате, разрешения могут иметь три или четыре восьмеричных цифры (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 повлияет на вновь созданные файлы и каталоги, используйте:

Вы также можете отобразить значение маски в символической записи, используя опцию -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 newdirtouch newfile

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

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

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

 

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

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

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

Exit mobile version