Ответ вслух Senior Файловая система и права обновлено

Модель прав в Linux

Вопрос

Расскажи, как Linux решает, можно ли процессу открыть файл на запись. Какие механизмы есть кроме rwx?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Ядро берёт эффективный UID и GID процесса и смотрит классы по очереди. Если процесс владелец, применяются права владельца, и всё, дальше не смотрим.

Что должно прозвучать в ответе

  • Проверяется эффективный UID процесса: владелец, затем группа (включая дополнительные), затем остальные, срабатывает первый подходящий класс

  • Root (UID 0) обходит проверки rwx, его сила разбита на capabilities

  • Для удаления и создания важны права на каталог, а не на файл

  • SUID/SGID меняют эффективные UID/GID при запуске программы

  • ACL (`getfacl`/`setfacl`) дают права отдельным пользователям и группам сверх трёх классов

  • Поверх могут стоять MAC-системы (SELinux, AppArmor) и атрибуты вроде `chattr +i`

Что могут спросить следом

  • Если владелец имеет ---, а остальные rw-, может ли владелец писать?
  • Что такое capabilities и пример полезной?
  • Чем ACL лучше добавления пользователя в группу?

Разбор

Ядро берёт эффективный UID и GID процесса и смотрит классы по очереди. Если процесс владелец, применяются права владельца, и всё, дальше не смотрим. Иначе, если процесс в группе файла (основной или дополнительной), применяются права группы. Иначе права остальных. Отсюда неочевидное: владелец с --- не сможет писать, даже если остальным разрешено. Root проходит проверки rwx, но в современном ядре его полномочия разбиты на capabilities, например CAP_DAC_OVERRIDE или CAP_NET_BIND_SERVICE, и их можно выдавать по одной. Создание и удаление зависят от прав на каталог. SUID и SGID меняют эффективные идентификаторы при запуске. Когда трёх классов мало, есть ACL: setfacl -m u:deploy:rw file. А поверх DAC работают SELinux или AppArmor, которые могут запретить доступ даже root, и атрибут immutable chattr +i.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.