
В Linux права доступа к файлам, атрибуты и права собственности определяют уровень доступа системных процессов и пользователей к файлам. Это гарантирует, что только авторизованные пользователи и процессы смогут получить доступ к определённым файлам и каталогам.
Права доступа к файлам Linux
Базовая модель прав доступа Linux работает, связывая каждый системный файл с владельцем и группой и назначая права доступа трем различным классам пользователей:
- Владелец файла.
- Члены группы.
- Другие (все остальные).
Изменить владельца файла можно с помощью команд chown и chgrp .
К каждому классу пользователей применяются три типа разрешений на доступ к файлам:
- Разрешение на чтение.
- Разрешение на запись.
- Разрешение на выполнение.
Эта концепция позволяет контролировать, какие пользователи могут читать файл, записывать в файл или выполнять файл.
Чтобы просмотреть права доступа к файлу, используйте команду ls :
ls -l file_name
-rw-r--r-- 12 linuxize users 12.0K Apr 28 10:10 file_name |[-][-][-]- [------] [---] | | | | | | | | | | | | | +-----------> 7. Group | | | | | +-------------------> 6. Owner | | | | +--------------------------> 5. Alternate Access Method | | | +----------------------------> 4. Others Permissions | | +-------------------------------> 3. Group Permissions | +----------------------------------> 2. Owner Permissions +------------------------------------> 1. File Type
Первый символ указывает тип файла. Это может быть обычный файл ( - ), каталог ( d ), символическая ссылка ( l ) или другие специальные типы файлов. Следующие девять символов представляют права доступа к файлу – три триплета по три символа в каждом. Первый триплет показывает права владельца, второй – права группы, а последний – права всех остальных.
В приведенном выше примере ( rw-r--r-- ) означает, что владелец файла имеет разрешения на чтение и запись ( rw- ), группа и другие имеют только разрешения на чтение ( r-- ).
Разрешения к файлам имеют разное значение в зависимости от типа файла.
Каждый из трех триплетов разрешений может быть составлен из следующих символов и иметь различные эффекты в зависимости от того, установлены ли они для файла или для каталога:
Влияние разрешений на файлы
| Разрешение | Характер | Значение в файле |
|---|---|---|
| Читать | - |
Файл не читается. Вы не можете просмотреть его содержимое. |
r |
Файл доступен для чтения. | |
| Писать | - |
Файл не может быть изменен или модифицирован. |
w |
Файл может быть изменен или модифицирован. | |
| Выполнять | - |
Файл не может быть выполнен. |
x |
Файл может быть выполнен. | |
s |
Если он найден в user триплете, он устанавливает бит setuid . Если он найден в group триплете, он устанавливает бит setgid . Это также означает, что установлен флаг x .Если для исполняемого файла установлены флаги setuid или setgid , файл выполняется с привилегиями владельца файла и/или группы. |
|
S |
То же, что и s , но флаг x не установлен. Этот флаг редко используется для файлов. |
|
t |
Если он обнаружен в others триплетах, он устанавливает sticky бит.Это также означает, что установлен флаг x Этот флаг бесполезен для файлов. |
|
T |
То же, что и t , но флаг x не установлен. Этот флаг бесполезен для файлов. |
Влияние разрешений на каталоги (папки)
Каталоги — это особые типы файлов, которые могут содержать другие файлы и каталоги.
| Разрешение | Характер | Значение в справочнике |
|---|---|---|
| Читать | - |
Содержимое каталога не может быть отображено. |
r |
Содержимое каталога можно отобразить. (например, вы можете вывести список файлов внутри каталога с помощью ls .) |
|
| Писать | - |
Содержимое каталога не может быть изменено. |
w |
Содержимое каталога можно изменить. (например, вы можете создавать новые файлы , удалять файлы и т. д.) |
|
| Выполнять | - |
Невозможно изменить каталог. |
x |
Перемещаться по каталогу можно с помощью cd . |
|
s |
Если он найден в триплете user , он устанавливает бит setuid . Если он найден в триплете group , он устанавливает бит setgid . Это также означает, что установлен флаг x . Когда для каталога установлен флаг setgid , новые файлы, создаваемые в нём, наследуют идентификатор группы каталога (GID) вместо основного идентификатора группы пользователя, создавшего файл.setuid не влияет на каталоги. |
|
S |
То же, что и s , но флаг x не установлен. Этот флаг бесполезен для каталогов. |
|
t |
Если он обнаружен в others триплетах, он устанавливает sticky бит.Это также означает, что установлен флаг x . Когда для каталога установлен бит фиксации, удалять или переименовывать файлы в этом каталоге может только владелец файла, владелец каталога или администратор. |
|
T |
То же, что и t , но флаг x не установлен. Этот флаг бесполезен для каталогов. |
Изменение прав доступа к файлу
Права доступа к файлу можно изменить с помощью команды chmod . Изменять права доступа к файлу может только пользователь root, владелец файла или пользователь с привилегиями sudo. Будьте особенно осторожны при использовании chmod , особенно при рекурсивном изменении прав доступа. Команда может принимать в качестве аргументов один или несколько файлов и/или каталогов, разделённых пробелом.
Разрешения можно указать с помощью символьного режима, числового режима или справочного файла.
Символический (текстовый) метод
Синтаксис команды chmod при использовании символического режима имеет следующий формат:
chmod [ OPTIONS ] [ ugoa… ][ -+ =] perms… [ ,… ] FILE...
Первый набор флагов ( [ugoa…] ), флаги пользователей, определяют классы пользователей, для которых изменяются разрешения на доступ к файлу.
-
u— Владелец файла. -
g— Пользователи, являющиеся членами группы. -
o— Все остальные пользователи. -
a— Все пользователи, идентичныugo.
Если флаг пользователя не указан, по умолчанию a .
Второй набор флагов ( [-+=] ), флаги операции, определяют, следует ли удалять, добавлять или устанавливать разрешения:
-
-— Удаляет указанные разрешения. -
+— Добавляет указанные разрешения. -
=— изменяет текущие разрешения на указанные. Если после символа=разрешения не указаны, все разрешения указанного класса пользователей удаляются.
Разрешения ( perms... ) задаются явно с использованием нуля или одной или нескольких из следующих букв: r , w , x , X , s и t . При копировании разрешений из одного класса пользователей в другой используйте одну букву из набора u , g и o .
При настройке разрешений для более чем одного класса пользователей ( [,…] ) используйте запятые (без пробелов) для разделения символических режимов.
Вот несколько примеров использования команды chmod в символическом режиме:
-
Предоставьте членам группы разрешение на выполнение файла, но не на чтение и запись в него:
chmod g=x filename -
Удалить разрешение на запись для всех пользователей:
chmod aw filename -
Рекурсивно удалить разрешение на выполнение для других пользователей:
chmod -R ox dirname -
Удалите разрешение на чтение, запись и выполнение для всех пользователей, кроме владельца файла:
chmod og-rwx filenameТого же самого можно добиться, используя следующую форму:
chmod og= filename -
Предоставьте разрешение на чтение, запись и выполнение владельцу файла, разрешение на чтение группе файла и не предоставляйте никаких разрешений всем остальным пользователям:
chmod u=rwx,g=r,o= filename
Числовой метод
Синтаксис команды chmod при использовании символического режима имеет следующий формат:
chmod [ OPTIONS ] NUMBER FILE...
При использовании числового режима вы можете установить разрешения для всех трех классов пользователей (владелец, группа и все остальные) одновременно.
Номер разрешения может быть трёх- или четырёхзначным. В трёхзначном случае первая цифра обозначает права владельца файла, вторая — группу, к которой принадлежит файл, а третья — всех остальных пользователей.
Каждое разрешение на запись, чтение и выполнение имеет следующее числовое значение:
-
r(чтение) = 4 -
w(писать) = 2 -
x(выполнить) = 1 - нет разрешений = 0
Число разрешений определенного класса пользователей представлено суммой значений разрешений для этой группы.
Чтобы узнать права доступа к файлу в числовом режиме, просто подсчитайте их для всех классов пользователей. Например, чтобы предоставить владельцу файла права на чтение, запись и выполнение, группе, к которой принадлежит файл, — права на чтение и выполнение, а всем остальным пользователям — только права на чтение, выполните следующие действия:
- Владелец: rwx=4+2+1=7
- Группа: rx=4+0+1=5
- Другие: rx=4+0+0=4
Используя описанный выше метод, мы приходим к числу 754 , которое представляет собой желаемые разрешения.
Чтобы настроить флаги setuid , setgid и sticky bit , используйте четырехзначное число.
При использовании четырехзначного номера первая цифра имеет следующее значение:
- setuid=4
- setgid=2
- липкий=1
- без изменений = 0
Следующие три цифры имеют то же значение, что и при использовании трехзначного числа.
Если первая цифра — 0, её можно опустить, и режим можно представить тремя цифрами. Числовой режим 0755 аналогичен 755 .
Для вычисления числового режима можно использовать и другой метод (двоичный), но он немного сложнее. Большинству пользователей достаточно знать, как вычислить числовой режим с помощью 4, 2 и 1.
Проверить права доступа к файлу в числовом формате можно с помощью команды stat :
stat -c "%a" file_name
Вот несколько примеров использования команды chmod в числовом режиме:
-
Предоставьте владельцу файла права на чтение и запись, а членам группы и всем остальным пользователям — только права на чтение:
chmod 644 dirname -
Предоставьте владельцу файла разрешения на чтение, запись и выполнение, разрешения на чтение и выполнение членам группы и не предоставляйте разрешений всем остальным пользователям:
chmod 750 dirname -
Предоставить права на чтение, запись и выполнение, а также бит закрепления для указанного каталога:
chmod 1777 dirname -
Рекурсивно установить разрешения на чтение, запись и выполнение для владельца файла и не дать разрешений всем остальным пользователям в данном каталоге:
chmod -R 700 dirname
Заключение
В Linux доступ к файлам ограничивается правами доступа, атрибутами и владельцем. Чтобы изменить права доступа к файлу, используйте команду chmod .
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства