Namespaces разделяют представления процессов, сети, монтирований и других ресурсов; cgroups управляют потреблением ресурсов. OverlayFS удобна для слоев образа, но не обязательна. SUID/SGID у исполняемого файла могут менять эффективные UID/GID с учетом ограничений. SGID каталога задает наследование группы, а sticky bit ограничивает удаление и переименование его содержимого.
На чём построена контейнеризация Linux и что означают SUID, SGID и sticky bit?
Роль namespaces и cgroups в контейнерах, необязательность OverlayFS и точное действие специальных битов доступа Linux.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
У контейнеризации и специальных битов доступа разные задачи; их следует объяснять отдельно.
Контейнеризация. Namespaces дают процессам отдельные представления ресурсов: PID, сети, точек монтирования, идентификаторов пользователей и других объектов. Cgroups обеспечивают учет и управление ресурсами групп процессов, например CPU, памятью и вводом-выводом. Наличие cgroup само по себе не означает, что все лимиты настроены.
Обычные Linux-контейнеры разделяют ядро хоста, а не получают каждое собственное ядро как VM. Для ограничения возможностей дополнительно применяют capabilities, seccomp и механизмы контроля доступа в зависимости от конфигурации. OverlayFS удобна для объединения слоев образа, но не является обязательным условием контейнера: корневая файловая система может предоставляться иначе.
SUID и SGID. При выполнении подходящего бинарного файла SUID меняет эффективный UID процесса на UID владельца файла, а SGID — эффективный GID на группу файла. Это не обязательно root и не полная замена идентичности: реальный UID остается прежним. Биты могут не применяться, например при no_new_privs или монтировании nosuid; Linux также игнорирует их на скриптах. Условия описаны в execve(2).
На каталоге SGID заставляет новые файлы наследовать его группу; новые подкаталоги также наследуют SGID. Sticky bit дополнительно ограничивает удаление и переименование: нужны соответствующие права, а действовать может владелец файла, владелец каталога или привилегированный процесс. Он не запрещает изменение содержимого файла при наличии права записи. См. inode(7).
Для объяснения не требуется менять разрешения системных программ: такие эксперименты проводят только в отдельном учебном окружении.