Команда Umask в Linux

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

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

Разрешения Linux

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

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

  • владелец файла.
  • члены группы.
  • все остальные.

К каждому классу применяются три типа разрешений:

  • разрешение на чтение.
  • разрешение на запись.
  • разрешение на выполнение.

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

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

ls -l dirname
drwxr-xr-x 12 linuxize users 4.0K Apr  8 20:51 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
  • Группа: rx = 4+0+1 = 5
  • Другое: rx = 4+0+1 = 5

В числовом представлении права доступа могут иметь три или четыре восьмеричных цифры (0-7). Первая цифра представляет особые разрешения, а если она не указана, это означает, что для файла не установлены специальные разрешения. В нашем случае 755 совпадает с 0755 . Первая цифра может быть комбинацией 4 для setuid , 2 для setgid и 1 для Sticky Bit .

Права доступа к файлам можно изменить с помощью команды chmod а владельца — с помощью команды chown .

Понимание umask

По умолчанию в системах Linux разрешения на создание по умолчанию составляют 666 для файлов, что дает права на чтение и запись пользователю, группе и другим лицам, и 777 для каталогов, что означает разрешение на чтение, запись и выполнение для пользователя, группы и другие. Linux не позволяет создавать файлы с разрешениями на выполнение.

Разрешения на создание по умолчанию можно изменить с помощью утилиты umask .

umask влияет только на текущую среду оболочки. В большинстве дистрибутивов Linux общесистемное значение umask по умолчанию устанавливается в pam_umask.so или /etc/profile .

Если вы хотите указать другое значение для каждого пользователя, отредактируйте файлы конфигурации оболочки пользователя, такие как ~/.bashrc или ~/.zshrc . Вы также можете изменить значение umask текущего сеанса, запустив umask за которым следует желаемое значение.

Чтобы просмотреть текущее значение маски, просто введите umask без аргументов:

umask

Вывод будет включать

022

Значение umask содержит биты прав доступа, которые НЕ будут устанавливаться для вновь созданных файлов и каталогов.

Как мы уже упоминали, права на создание по умолчанию для файлов — 666 а для каталогов — 777 . Чтобы вычислить биты прав доступа для новых файлов, вычтите значение umask из значения по умолчанию.

Например, чтобы рассчитать, как umask 022 повлияет на вновь созданные файлы и каталоги, используйте:

  • Файлы: 666 - 022 = 644 . Владелец может читать и изменять файлы. Группа и другие могут только читать файлы.
  • Каталоги: 777 - 022 = 755 755. Владелец может перейти в каталог и просмотреть список для чтения, изменения, создания или удаления файлов в каталоге. Группа и другие могут cd в каталог и список и читать файлы.

Вы также можете отобразить значение маски в символьной нотации, используя параметр -S :

umask -S
u=rwx,g=rx,o=rx

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

Установка значения маски

Маска создания файла может быть задана с использованием восьмеричной или символьной записи. Чтобы сделать изменения постоянными, установите новое значение umask в глобальном файле конфигурации, таком как /etc/profile file, который повлияет на всех пользователей, или в файлах конфигурации оболочки пользователя, таких как ~/.profile , ~/.bashrc или ~/.zshrc которые затронет только пользователя. Пользовательские файлы имеют приоритет над глобальными файлами.

Прежде чем вносить изменения в значение umask убедитесь, что новое значение не представляет потенциальной угрозы безопасности. Значения менее строгие, чем 022 следует использовать с большой осторожностью. Например, umask 000 означает, что любой пользователь будет иметь права на чтение, запись и выполнение для всех вновь созданных файлов.

Допустим, мы хотим установить более строгие разрешения для вновь создаваемых файлов и каталогов , так что другие не смогут cd справочников и читать файлы. Нам нужны разрешения 750 для каталогов и 640 для файлов.

Чтобы вычислить значение umask просто вычтите желаемые разрешения из значения по умолчанию:

Значение 777-750 = 027 : 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 linuxize users 4096 Jul  4 18:14  newdir
-rw-r----- 1 linuxize users    0 Jul  4 18:14  newfile

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

Выводы

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

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

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

Оставьте комментарий