Права доступа к файлам в 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просматривать содержимое каталогов, если ещё установлен флагxwпозволяет создавать, удалять, переименовывать файлы в каталоге, если ещё установлен флагxxпозволяет пользователю заходить внутрь каталога
Чтение прав #
Права записываются в порядке: владелец-группа-остальные
-rw-r--r--,-обычный файлrw-, владелец может читать и записывать в файлr--, группа может считывать из файлаr--, все остальные могут считывать из файла
-rwx------,-обычный файлrwx, владелец может выполнять любые операции---, все остальные, включая группу не могут ничего делать с файлом
lrwxrwxrwx— файл является символической ссылкой, которую могут прочитать все, а права будут браться из файла, на которую она ссылается
Авторизация операций #
- Учитываются права на конкретную операцию
- Если UID у пользователя и файла совпадают, тогда применяются права владельца
- Если пользователь принадлежит к группе, к которой принадлежит и файл, то применяются права группы
- Если ничего выше не сработало, то применяются права для остальных
Права на операции в каталогах #
Права каталогов влияют на доступ к файлам в этом каталоге
- Если у пользователя нет прав на исполнение в каталоге, то
- он не сможет выполнять операции над файлами: читать, записывать и выполнять
- он не сможет установить данный каталог своим рабочим каталогом
- Если у пользователя нет прав на чтение в каталоге, то он не сможет
узнать список файлов в данном каталоге
- Без операции исполнения взаимодействовать с содержимым файлов не сможет
- Если у пользвоателя нет прав на запись в каталоге, то он не сможет добавить новый файл в каталог или переименовать существующий файл
Выставления прав исключительно на файлы не достаточно, чтобы обеспечить полноценную работу с данными в каталоге
Упрощённая рекомендация:
- Если необходим доступ к файлам на чтение, то устанавливайте права на чтение и исполнение
- Если необходим доступ на запись к файлам в каталоге, то давайте все права
Списки прав доступа #
Access Control Lists, ACLs, — расширенные списки доступа к файлам
Иногда прав доступа в классической схеме недостаточно, в этом случае можно применить расширенные списки прав доступа
getfactl— приложение для получение текущего списка правsetfactl— управление списком прав доступа
В большинстве случаев вам должно хватить базовой схемы предоставления прав доступа:
- Создайте отдельную группу для решения задачи
- Добавьте в эту группу нужных пользователей
- Предоставьте разрешения группе на выполнение указанных действий