Введение
В операционных системах 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