Понимание прав доступа к файлам в Linux

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

В 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 .

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

терминал chmod

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *