Права доступа к файлам в GNU/Linux #
Васильев Андрей Михайлович, 2024
Версии презентации
Операции над файлами #
Следующие операции являются предметом авторизации действий пользователя
Операции над обычными файлами #
- Чтение данных из файла
- Запись данных в файл
- Запуск файлов на исполнение
Операции над каталогами #
Каталоги являются специальными видами файлов
- Просмотр содержимого каталога
- Изменение содержимого каталога
- Создание новых файлов в каталоге
- Перемещение файла в каталог
Операции просмотра и изменения могут быть выполнены только, если пользователь может запускать приложения в данном каталоге
Файл на файловой системе #
- Файл принадлежит конкретному пользователю, связан с его уникальным идентификатором, который записан в атрибутах файла
- Файл относится к конкретной группе, связан с её уникальным идентификатором
Проверка прав доступа обычного пользователя #
Проверка возможности чтения данных из файла
$ file /etc/shadow
/etc/shadow: regular file, no read permission
$ file /etc/passwd
/etc/passwd: ASCII text
Проверка возможности изменения содержимого файла
$ touch /etc/shadow
touch: невозможно выполнить touch для '/etc/shadow': Отказано в доступе
$ touch /tmp/data
Права доступа к файлам #
Создадим файл и проверим права доступа
$ touch test
$ ls -l test
-rw-r--r-- 1 andrey andrey 0 окт 5 14:55 test
- первый столбец описывает атрибуты файла
- второй столбец — количество физических ссылок
- третий столбец — владелец файла
- четвёртый столбец — группа файла
Атрибуты файлов #
- первый элемент описывает тип файлов
- далее группами по 3 символа описываются права доступа к файлу
Типы файлов #
-
— обыкновенный файлb
— специальный файл блочного устройства, например жёсткого дискаc
— специальный файл символьного устройства, например клавиатуры или терминалаd
— каталогl
— символическая ссылка, не имеет собственных прав доступаn
— сетевой файлp
— файл FIFO для организации взаимодействия потоковs
— файл socket для организации псевдосетевого взаимодействия
Права доступа #
Последняя часть атрибутов описывает права доступа
Права для файлов #
r
позволяет читать содержимое файловw
позволяет переписывать содержимое файлов, но не позволяет их удалять или переименовыватьx
позволяет выполнять запуск файла, скриптовые файлы должны быть также доступны на чтение
Права для каталогов #
r
просматривать содержимое каталогов, если ещё установлен флагx
w
позволяет создавать, удалять, переименовывать файлы в каталоге, если ещё установлен флагx
x
позволяет пользователю заходить внутрь каталога
Чтение прав #
Права записываются в порядке: владелец-группа-остальные
-rw-r--r--
,-
обычный файлrw-
, владелец может читать и записывать в файлr--
, группа может считывать из файлаr--
, все остальные могут считывать из файла
-rwx------
,-
обычный файлrwx
, владелец может выполнять любые операции---
, все остальные, включая группу не могут ничего делать с файлом
lrwxrwxrwx
— файл является символической ссылкой, которую могут прочитать все, а права будут браться из файла, на которую она ссылается
Авторизация операций #
- Учитываются права на конкретную операцию
- Если UID у пользователя и файла совпадают, тогда применяются права владельца
- Если пользователь принадлежит к группе, к которой принадлежит и файл, то применяются права группы
- Если ничего выше не сработало, то применяются права для остальных
Права на операции в каталогах #
Права каталогов влияют на доступ к файлам в этом каталоге
- Если у пользователя нет прав на исполнение в каталоге, то
- он не сможет выполнять операции над файлами: читать, записывать и выполнять
- он не сможет установить данный каталог своим рабочим каталогом
- Если у пользователя нет прав на чтение в каталоге, то он не сможет
узнать список файлов в данном каталоге
- Без операции исполнения взаимодействовать с содержимым файлов не сможет
- Если у пользвоателя нет прав на запись в каталоге, то он не сможет добавить новый файл в каталог или переименовать существующий файл
Выставления прав исключительно на файлы не достаточно, чтобы обеспечить полноценную работу с данными в каталоге
Упрощённая рекомендация:
- Если необходим доступ к файлам на чтение, то устанавливайте права на чтение и исполнение
- Если необходим доступ на запись к файлам в каталоге, то давайте все права
Списки прав доступа #
Access Control Lists, ACLs, — расширенные списки доступа к файлам
Иногда прав доступа в классической схеме недостаточно, в этом случае можно применить расширенные списки прав доступа
getfactl
— приложение для получение текущего списка правsetfactl
— управление списком прав доступа
В большинстве случаев вам должно хватить базовой схемы предоставления прав доступа:
- Создайте отдельную группу для решения задачи
- Добавьте в эту группу нужных пользователей
- Предоставьте разрешения группе на выполнение указанных действий