Команда Umask в Linux

Команда Umask в Linux

5 Января 2020 | Терминал

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

Команда Umask в Linux

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

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

Разрешения Linux 

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

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

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


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

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


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

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

ls -l dirname
drwxr-xr-x 12 baksdev users 4.0K Apr  8 20:51 dirname
|[-][-][-]    [------] [---]
| |  |  |        |       |       
| |  |  |        |       +-----------> Group
| |  |  |        +-------------------> Owner
| |  |  +----------------------------> Others Permissions
| |  +-------------------------------> Group Permissions
| +----------------------------------> Owner Permissions
+------------------------------------> File Type



   Первый символ представляет тип файла, который может быть обычным file ( -), directory ( d), символической ссылкой ( l) или любым другим специальным типом файла.

Следующие девять символов представляют разрешения, три набора по три символа в каждом. Первый набор показывает права владельца, второй - права группы, а последний набор - права доступа для всех остальных.

Символ с восьмеричным значением стоит для чтения, с восьмеричным значением для записи, с восьмеричным значением для разрешения на выполнение и ( -) с восьмеричным значением для без разрешений.

Есть также три типа разрешений специального файла: setuid, setgid и Sticky Bit.

В приведенном выше примере ( rwxr-xr-x) означает, что владелец имеет разрешения на чтение, запись и выполнение ( rwx), группа и другие пользователи имеют разрешения на чтение и выполнение.

Если мы представим права доступа к файлу с помощью числовой записи, мы подойдем к числу 755:

  • Владелец: rwx=4+2+1 = 7
  • Группа: r-x=4+0+1 = 5
  • Другое: r-x=4+0+1 = 5


   Когда они представлены в цифровом формате, разрешения могут иметь три или четыре восьмеричных цифры (0-7). Первая цифра представляет специальные разрешения, а если она опущена, это означает, что никаких специальных разрешений для файла не установлено. В нашем случае так 755 же, как 0755. Первая цифра может быть комбинацией для setuid, для setgid и для 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 Владелец может перейти в каталог и просмотреть список, изменить, создать или удалить файлы в каталоге. Группа и другие могут cd в каталог и список и читать файлы.

Вы также можете отобразить значение маски в символической записи, используя -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 baksdev users 4096 Jul  4 18:14  newdir
-rw-r----- 1 baksdev users    0 Jul  4 18:14  newfile


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


Вывод

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

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


    Комментарии

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

Загрузка комментариев...