биты чтения/записи/выполнения

Тема дорожной карты · Linux & Unix Fundamentals

Биты чтения/записи/выполнения (rwx) определяют права доступа к файлам и директориям для владельца, группы и остальных пользователей. Эти права являются ключевыми для обеспечения безопасности и контроля доступа в системах Linux и Unix. Они позволяют управлять доступом к ресурсам, предотвращая несанкционированный доступ и обеспечивая минимальные необходимые права для выполнения задач.

Как это работает

Тройка rwx определяет права доступа для владельца, группы и остальных пользователей. Для файлов:

Для директорий:

Права доступа задаются символически (например, chmod u+x,go-w file) или восьмерично (например, chmod 0755). Стандартные значения прав зависят от umask, который устанавливается системой или пользователем. Типичные значения для файлов и директорий включают 0644 и 0755 соответственно.

Существуют также специальные биты, такие как setuid (запуск программы под правами владельца), setgid (наследование группы) и sticky (удаление файлов может производить только владелец в общих директориях типа /tmp). Эти биты позволяют более гибко управлять правами доступа.

В дополнение к классическим UNIX-битам используются расширенные механизмы контроля доступа, такие как ACL (setfacl, getfacl), capabilities (setcap) и метки SELinux/AppArmor. Эти механизмы позволяют более тонко настраивать права доступа и обеспечивать более высокий уровень безопасности.

Когда применять

Правила наименьших привилегий рекомендуют использовать минимальные необходимые права для выполнения задач. По умолчанию:

Группы используются для предоставления общего доступа. Добавление большого количества пользователей в группы wheel или sudo может быть опасным и нежелательным. Включение директорий в режим world-writable (777) практически всегда является ошибкой, так как это может привести к несанкционированному доступу.

Расширенные механизмы контроля доступа, такие как ACL, могут быть более эффективными, чем рекурсивное использование chmod, для обеспечения тонкого общего доступа, особенно в CI-пайплайнах и для деплоя пользователей. Механизмы capabilities позволяют предоставить определённые права для выполнения конкретных задач без необходимости предоставления полного доступа.

Типичные ошибки

Ошибки, связанные с битами чтения/записи/выполнения, могут привести к серьёзным уязвимостям безопасности. Некоторые из самых распространённых ошибок включают:

Кроме того, использование setuid для запуска программ, которые гонят неаудированный код под правами root, является классической уязвимостью. Команда find / -perm -4000 -type f может использоваться для поиска файлов с setuid, что позволяет периодически пересматривать и управлять этими уязвимостями.

Связанные понятия

Полезные ресурсы