Поиск по сайту:

Что такое umask в Linux?


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

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

Права доступа к файлам:

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

Linux известен своей безопасностью. Каждый файл или каталог в Linux имеет определенный набор разрешений и прав собственности. Давайте посмотрим на класс пользователя ниже.

Каждый файл в Linux будет иметь менее трех связанных с ним пользовательских классов.

  1. Пользователь — пользователь, которому принадлежит файл. По умолчанию это указывает, кто создал файл, если вы не измените его.
  2. Группа. Это указывает на то, что людям в группе будут назначены права доступа к файлу.
  3. Другое — это ограничивает других пользователей, не являющихся владельцем или не входящих в назначенную группу.

Существует три типа доступа к файлам для каждого упомянутого выше класса пользователей.

  1. r - права на чтение - возможность читать содержимое файла
  2. w — разрешение на запись — возможность изменить содержимое файла
  3. 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