биты чтения/записи/выполнения
Тема дорожной карты · Linux & Unix Fundamentals
Биты чтения/записи/выполнения (rwx) определяют права доступа к файлам и директориям для владельца, группы и остальных пользователей. Эти права являются ключевыми для обеспечения безопасности и контроля доступа в системах Linux и Unix. Они позволяют управлять доступом к ресурсам, предотвращая несанкционированный доступ и обеспечивая минимальные необходимые права для выполнения задач.
Как это работает
Тройка rwx определяет права доступа для владельца, группы и остальных пользователей. Для файлов:
r— право на чтение байтов;w— право на запись и усечение файла;x— право на выполнение файла.
Для директорий:
r— право на листинг содержимого директории;w— право на создание и удаление файлов внутри директории;x— право на вход в директорию и обращение к именам файлов внутри неё.
Права доступа задаются символически (например, chmod u+x,go-w file) или восьмерично (например, chmod 0755). Стандартные значения прав зависят от umask, который устанавливается системой или пользователем. Типичные значения для файлов и директорий включают 0644 и 0755 соответственно.
Существуют также специальные биты, такие как setuid (запуск программы под правами владельца), setgid (наследование группы) и sticky (удаление файлов может производить только владелец в общих директориях типа /tmp). Эти биты позволяют более гибко управлять правами доступа.
В дополнение к классическим UNIX-битам используются расширенные механизмы контроля доступа, такие как ACL (setfacl, getfacl), capabilities (setcap) и метки SELinux/AppArmor. Эти механизмы позволяют более тонко настраивать права доступа и обеспечивать более высокий уровень безопасности.
Когда применять
Правила наименьших привилегий рекомендуют использовать минимальные необходимые права для выполнения задач. По умолчанию:
644для файлов;755для директорий;600для секретных файлов.
Группы используются для предоставления общего доступа. Добавление большого количества пользователей в группы wheel или sudo может быть опасным и нежелательным. Включение директорий в режим world-writable (777) практически всегда является ошибкой, так как это может привести к несанкционированному доступу.
Расширенные механизмы контроля доступа, такие как ACL, могут быть более эффективными, чем рекурсивное использование chmod, для обеспечения тонкого общего доступа, особенно в CI-пайплайнах и для деплоя пользователей. Механизмы capabilities позволяют предоставить определённые права для выполнения конкретных задач без необходимости предоставления полного доступа.
Типичные ошибки
Ошибки, связанные с битами чтения/записи/выполнения, могут привести к серьёзным уязвимостям безопасности. Некоторые из самых распространённых ошибок включают:
- Использование
chmod 777для обеспечения доступа, что создает огромную дыру безопасности; - Неправильное использование команд
chown -Rдля изменения владельца, что может привести к тому, что пользователь больше не сможет стать root; - Непонимание того, что
umaskвлияет на права новых файлов, что может привести к тому, что новые файлы не будут иметь необходимых прав доступа.
Кроме того, использование setuid для запуска программ, которые гонят неаудированный код под правами root, является классической уязвимостью. Команда find / -perm -4000 -type f может использоваться для поиска файлов с setuid, что позволяет периодически пересматривать и управлять этими уязвимостями.