Что такое umask в Linux?
UMASK в системах Linux или Unix известен как маска пользователя или также называется маской создания файла пользователя. Это базовое разрешение или разрешение по умолчанию при создании нового файла или папки на компьютере с Linux.
Он используется несколькими командами в Linux, такими как mkdir, touch, tee и другими командами, которые создают файлы и каталоги. Он участвует в каждом шаге, когда создается новый файл или каталог.
Права доступа к файлам:
Прежде чем мы перейдем к более глубокому погружению и пониманию umask, давайте сначала кратко разберемся с правами доступа к файлам.
Linux известен своей безопасностью. Каждый файл или каталог в Linux имеет определенный набор разрешений и прав собственности. Давайте посмотрим на класс пользователя ниже.
Каждый файл в Linux будет иметь менее трех связанных с ним пользовательских классов.
- Пользователь — пользователь, которому принадлежит файл. По умолчанию это указывает, кто создал файл, если вы не измените его.
- Группа. Это указывает на то, что людям в группе будут назначены права доступа к файлу.
- Другое — это ограничивает других пользователей, не являющихся владельцем или не входящих в назначенную группу.
Существует три типа доступа к файлам для каждого упомянутого выше класса пользователей.
- r - права на чтение - возможность читать содержимое файла
- w — разрешение на запись — возможность изменить содержимое файла
- x - разрешение на выполнение - возможность запускать файл как программу
Вышеупомянутая концепция говорит вам, кому разрешено читать содержимое файла, изменять содержимое файла или выполнять программу.
Просмотр разрешений — символьный режим:
Давайте посмотрим на владение файлом ниже. Вы можете получить информацию о вашем Linux-компьютере, набрав команду ls -l.
Первый символ на изображении выше показывает тип файла. В Linux могут быть разные типы файлов, как показано ниже.
- |
Indicates the simple regular file with different extensions like .txt, .json, .sh, .py, .rb, and so on |
d |
Indicates directory/folder |
l |
Indicates a symbolic link or symlink or soft link |
c |
Indicates character device file |
b |
Indicates block device file |
Следующие девять символов разделены на три части, как показано ниже.
rwx |
The file owner can read the content, modify the contents and execute the file as a program |
r-x |
Members in the group “users” can read the content and execute the file as a program but cannot modify the file contents |
r-x |
The one who is not the owner also not the member of the group i.e. other, can also read the contents of the file and execute the file as a program but cannot modify the file contents |
Просмотр разрешений — числовой режим:
Существует дополнительный способ представления разрешений с использованием чисел, который называется числовым режимом.
Давайте посмотрим на диаграмму прав доступа к числовым файлам ниже.
0 |
--- |
No permission |
1 |
--x |
Only Execute permission |
2 |
-w- |
Only write permission |
3 |
-wx |
Write and Execute permission |
4 |
r-- |
Only read permission |
5 |
r-x |
Read and Execute permission |
6 |
rw- |
Read and Write permission |
7 |
rwx |
Read, Write and Execute permission |
Если я сошлюсь на эту числовую таблицу разрешений и применю ее к тому же каталогу, что и на изображении выше, разрешение будет выглядеть так, как показано ниже.
rwx |
4+2+1 |
7 |
r-x |
4+0+1 |
5 |
r-x |
4+0+1 |
5 |
Следовательно, числовое разрешение каталога testdir равно 755.
Понимание UMASK:
Давайте создадим новый файл и новый каталог, выполнив приведенную ниже команду.
$ touch testfile
$ mkdir testdir
Давайте просмотрим разрешения для тестового файла и тестового каталога, выполнив команду ls -l.
$лс -л
Output:
drwxr-xr-x 2 niteshb users 4096 Mar 21 22:43 testdir
-rw-r--r-- 1 niteshb users 0 Mar 21 22:43 testfile
Вы обратили внимание на разрешения? Они разные, да? Это связано со значением umask по умолчанию, которое установлено на компьютере с Linux.
По умолчанию на компьютере с Linux разрешение на создание файла по умолчанию равно 666, что дает разрешение на чтение и запись владельцу, группе и другим пользователям, и 777 для каталога, что означает разрешение на чтение, запись и выполнение владельцу, группе и другим пользователям. другие.
Как мы знаем, каталоги не могут быть исполняемыми. Тогда зачем каталогу нужно разрешение на выполнение? Что ж, разрешение на выполнение для каталога должно разрешить доступ к содержимому в каталоге. Если с помощью команды chmod мы изменим разрешение каталога на 666 и попытаемся войти в каталог с помощью команды cd, вы получите ошибку отказа в доступе.
В большинстве дистрибутивов Linux общесистемное значение по умолчанию устанавливается в pam_umask.so или в файле /etc/profile. Добавив значение в файл ~/.bashrc в домашнем каталоге пользователя, мы можем сделать значение umask специфичным для пользователя.
Чтобы проверить значение umask, выполните команду umask.
$umask
Вывод:
0022
Мы можем пока игнорировать самые первые 0 из четырех чисел. Это часть расширенного разрешения в Linux. Что может предотвратить изменение файла, даже если у вас есть разрешение на запись, или мы можем предотвратить удаление файла, даже если вы являетесь пользователем root. В этом блоге мы сосредоточимся только на трех других числах.
Чтобы изменить текущее значение umask сеанса, выполните приведенную ниже команду, за которой следует желаемое значение.
$umask 0044
Как файлы и каталоги получают свои разрешения:
Значение, связанное с umask, НЕ является разрешением, которое вы получаете для своих файлов и каталогов.
Есть очень простой расчет. Как мы упоминали выше, значение по умолчанию для файла — 666, а для каталога — 777. Чтобы рассчитать биты разрешений для новых файлов или каталогов, вычтите значение umask из значения по умолчанию.
Например, давайте посчитаем, как повлияет новое разрешение на файл или каталог из-за umask.
- Файлы: 666 - 022=644. В соответствии с разрешением владелец может читать и выполнять файл. Группы и другие пользователи могут читать файл.
- Каталог: 777 - 022=755. Это означает, что владелец будет иметь все права на чтение, запись и доступ к каталогу. Группа и другие могут читать и перечислять содержимое каталога и переходить к каталогу.
Вы также можете просмотреть значение umask в числовой форме, выполнив следующую команду.
$umask
Вывод:
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
в текстовом редакторе и измените или добавьте следующую строку в начало файла:
umask 0027
Чтобы изменения вступили в силу, выполните следующую исходную команду или выйдите из системы и войдите в нее:
$source /etc/profile
Чтобы проверить новые настройки, мы создадим один новый файл и каталог, используя приведенные ниже команды.
$mkdir newtestdir
$touch newtestfile
Если вы проверите права доступа с помощью команды ls, вы заметите, что новый файл имеет права доступа 640
и новый каталог 750
, как мы и хотели:
drwxr-xr-- 2 niteshb users 4096 Mar 21 22:43 newtestdir
-rw-r----- 1 niteshb users 0 Mar 21 22:43 newtestfile
Другой способ установить маску создания файла — использовать символьную запись. Например, umask u=rwx,g=rx,o=
совпадает с umask 027
.
Заключение:
В этом руководстве мы объяснили разрешения Linux и то, как использовать команду umask
для установки битов разрешений для вновь созданных файлов или каталогов.
Для получения дополнительной информации введите приведенную ниже команду в своем терминале.
$man umask