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

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

Васильев Андрей Михайлович, 2024

Версии презентации


Операции над файлами #

Следующие операции являются предметом авторизации действий пользователя

Операции над обычными файлами #

  • Чтение данных из файла
  • Запись данных в файл
  • Запуск файлов на исполнение

Операции над каталогами #

Каталоги являются специальными видами файлов

  • Просмотр содержимого каталога
  • Изменение содержимого каталога
    • Создание новых файлов в каталоге
    • Перемещение файла в каталог

Операции просмотра и изменения могут быть выполнены только, если пользователь может запускать приложения в данном каталоге


Файл на файловой системе #

  • Файл принадлежит конкретному пользователю, связан с его уникальным идентификатором, который записан в атрибутах файла
  • Файл относится к конкретной группе, связан с её уникальным идентификатором

diagram


Проверка прав доступа обычного пользователя #

Проверка возможности чтения данных из файла

$ 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 у пользователя и файла совпадают, тогда применяются права владельца
  • Если пользователь принадлежит к группе, к которой принадлежит и файл, то применяются права группы
  • Если ничего выше не сработало, то применяются права для остальных

diagram


Права на операции в каталогах #

Права каталогов влияют на доступ к файлам в этом каталоге

  • Если у пользователя нет прав на исполнение в каталоге, то
    • он не сможет выполнять операции над файлами: читать, записывать и выполнять
    • он не сможет установить данный каталог своим рабочим каталогом
  • Если у пользователя нет прав на чтение в каталоге, то он не сможет узнать список файлов в данном каталоге
    • Без операции исполнения взаимодействовать с содержимым файлов не сможет
  • Если у пользвоателя нет прав на запись в каталоге, то он не сможет добавить новый файл в каталог или переименовать существующий файл

Выставления прав исключительно на файлы не достаточно, чтобы обеспечить полноценную работу с данными в каталоге

Упрощённая рекомендация:

  • Если необходим доступ к файлам на чтение, то устанавливайте права на чтение и исполнение
  • Если необходим доступ на запись к файлам в каталоге, то давайте все права

Списки прав доступа #

Access Control Lists, ACLs, — расширенные списки доступа к файлам

Иногда прав доступа в классической схеме недостаточно, в этом случае можно применить расширенные списки прав доступа

  • getfactl — приложение для получение текущего списка прав
  • setfactl — управление списком прав доступа

В большинстве случаев вам должно хватить базовой схемы предоставления прав доступа:

  • Создайте отдельную группу для решения задачи
  • Добавьте в эту группу нужных пользователей
  • Предоставьте разрешения группе на выполнение указанных действий

© A. M. Васильев, 2025, CC BY-SA 4.0, andrey@crafted.su