В Linux доступ связан с числовыми UID/GID процесса и группами. Различают обычные и сервисные учётные записи, а root традиционно соответствует UID 0. Базовые права файла задаются для владельца, группы и остальных как rwx. Для каталогов эти биты означают другие операции; ACL, capabilities и политики SELinux/AppArmor дополняют базовую модель.
Какие учётные записи и права доступа есть в Linux?
Пользователи, сервисные записи и группы; различие прав файла и каталога. Дополнительные ограничения ACL, capabilities и обязательного контроля доступа.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Имена пользователей сопоставляются числовым UID, группы — GID. Помимо обычных пользователей, сервисам создают отдельные учётные записи с ограниченными возможностями. Группа — способ назначения доступа, а не самостоятельный тип пользовательского входа. Идентификаторы и группы процессов описаны в credentials(7).
Базовые права задаются для владельца, группы и остальных:
| Право | Обычный файл | Каталог |
|---|---|---|
| r | Читать содержимое | Читать список имён |
| w | Изменять содержимое | Изменять записи каталога при необходимых остальных правах |
| x | Выполнять | Проходить по каталогу и обращаться к известным именам |
Поэтому право удалить файл определяется прежде всего каталогом, а не наличием записи в сам файл. Sticky bit дополнительно ограничивает удаление и переименование в общих каталогах владельцем записи, владельцем каталога или привилегированным процессом. Семантика битов приведена в inode(7).
SUID/SGID у исполняемого файла могут менять эффективную идентичность при запуске; SGID каталога влияет на наследование группы. Это не универсальное предоставление всех прав.
Root традиционно имеет UID 0, но утверждение «может абсолютно всё» слишком грубое: привилегии разделены на capabilities, действуют пространства имён и дополнительные политики. ACL и SELinux/AppArmor также могут влиять на итоговое решение доступа. Права проверяют по всей цепочке каталогов и фактической конфигурации.