В операционных системах 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
и измените или добавьте следующую строку в начало файла:
umask 027
Чтобы изменения вступили в силу, выполните следующую source
команду или выйдите из системы и войдите в систему:
source /etc/profile
Чтобы проверить новые настройки, мы создадим один новый файл и каталог с помощью mkdir
и touch
:
mkdir newdir
touch 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
.
Добавить комментарий