Права доступа в Linux: что означают rwx и chmod
Права доступа решают, кто может читать файл, менять его или проходить через каталог. Разберём обозначения rwx, команды chmod и типичные причины ошибки Permission denied — без опасного совета выставить всем полный доступ.

В Linux файл с нужными правами всё равно может не открываться, а каталог с правами на чтение — не показывать список файлов. Причина часто в том, что права на файл и на каталог означают разное. Разберём, как читать строку вроде -rw-r-----, менять доступ через chmod и проверять результат. Примеры рассчитаны на Linux с GNU coreutils 9.x; базовые права работают и в других версиях, но отдельные команды и дополнительные механизмы могут отличаться.
Из чего состоят права
Посмотрите на вывод команды ls -l. В строке -rw-r----- 1 anna editors 1200 May 10 12:00 report.txt первый символ обозначает тип объекта, следующие девять — права для трёх групп: владельца, группы и остальных пользователей.
- Владелец — конкретная учётная запись, которой принадлежит файл.
- Группа — группа пользователей, назначенная файлу.
- Остальные — все пользователи, которые не попали в первые две категории.
Буквы означают r — чтение, w — запись, x — выполнение. Дефис вместо буквы означает, что соответствующего разрешения нет. В примере владелец может читать и изменять файл, участники группы — читать, остальные не имеют доступа.
Термин — DAC. Так называют дискреционное управление доступом: обычную проверку владельца, группы и прав. Это не вся система безопасности Linux: поверх неё могут действовать ACL, SELinux, AppArmor и другие механизмы.
Почему права на каталог работают иначе
Для файла значения привычны: r позволяет читать содержимое, w — изменять его, x — запускать как программу или скрипт. Но права на сам файл не гарантируют, что вы до него доберётесь: для прохода по каждому каталогу в пути требуется x.
Для каталога r разрешает получать список имён, x — обращаться к известным именам внутри, а w вместе с x — создавать, удалять и переименовывать записи. Поэтому «могу читать каталог» и «могу прочитать файл в нём» — разные проверки. Если доступ к файлу запрещён, проверьте весь путь от корневого каталога, а не только строку самого файла.
Права файла отвечают на вопрос «что можно делать с содержимым», а права каталога — «можно ли найти и изменить запись, которая на него указывает».
Числовая запись: что значат 644 и 755
В числовой записи каждое разрешение получает значение: чтение — 4, запись — 2, выполнение — 1. Складывайте значения внутри каждой из трёх групп. Например, 6 — это чтение и запись, 5 — чтение и выполнение, 0 — никаких разрешений.
| Режим | Права владельца | Права группы | Права остальных | Где встречается |
|---|---|---|---|---|
600 | Чтение и запись | Нет | Нет | Личный файл с секретными данными |
644 | Чтение и запись | Чтение | Чтение | Обычный файл, который другим не нужно менять |
700 | Чтение, запись и выполнение | Нет | Нет | Каталог только для владельца |
755 | Чтение, запись и выполнение | Чтение и выполнение | Чтение и выполнение | Публичный каталог или исполняемый файл |
Это распространённые варианты, а не универсальные настройки. Например, исполняемому файлу не всегда нужны права на запись, а веб-серверу — права на изменение всех файлов сайта. Настраивайте доступ под владельца процесса и задачу.
Как менять права без лишнего риска
Команда chmod меняет права, но не владельца. В числовой форме укажите полный режим, в буквенной — конкретную группу и действие. Для первого знакомства попробуйте команды на временном файле:
touch permissions-demo.txt
chmod 640 permissions-demo.txt
ls -l permissions-demo.txt
chmod u=rw,g=r,o= permissions-demo.txt
ls -l permissions-demo.txt
Ожидаемый результат после первой команды chmod — права -rw-r-----, после второй — те же разрешения, заданные явно: владелец читает и пишет, группа читает, остальные не имеют доступа. Символы в команде означают u — владелец, g — группа, o — остальные. После проверки удалите временный файл, если он больше не нужен.
Перед изменением прав на реальном объекте действуйте так:
- Выполните
ls -l путьи выясните текущие права, владельца и группу. Проверка: в выводе видны все три значения. - Уточните, от имени какого пользователя работает программа или процесс, которому нужен доступ. Проверка: вы знаете, к какой из трёх категорий он относится.
- Меняйте только нужные разрешения. Например, чтобы добавить группе чтение файла, используйте
chmod g+r путь. Проверка: повторныйls -l путьпоказываетrв группе. - Проверьте доступ тем же пользователем и тем же способом, которым пользуется приложение. Проверка: операция проходит без ошибки, а права не стали шире, чем требовалось.
Не запускайте chmod -R 777 «на всякий случай». Рекурсивная смена может дать запись всем пользователям и добавить право запуска обычным файлам. Это не исправляет неверного владельца, пропущенное право x на родительском каталоге или запрет со стороны ACL и политик безопасности.
Что ломается и где базовых прав недостаточно
Ошибка Permission denied
Проверьте владельца и группу файла, права самого файла и право прохода по каждому каталогу пути. Если проблема возникает при запуске скрипта, проверьте наличие x, а также строку интерпретатора и способ запуска. Не выдавайте всем запись: сначала найдите конкретную проверку, которая не проходит.
Владелец не тот
chmod не меняет владельца и группу. Если файл принадлежит другой учётной записи, права могут выглядеть подходящими, но процесс попадёт в категорию «остальные». Владелец меняется отдельной командой chown; перед её использованием проверьте справку своей системы и убедитесь, что изменение действительно нужно.
Есть ACL или дополнительная политика
Access Control List, или ACL, — список дополнительных правил доступа для отдельных пользователей и групп. Он может сделать результат сложнее, чем показывает привычная тройка rwx; в выводе ls -l после прав иногда появляется знак +. Проверить такие правила можно утилитой getfacl, если она установлена. SELinux и AppArmor тоже могут запретить операцию даже при подходящих обычных правах.
Для общих каталогов учитывайте ещё два специальных режима: setgid помогает новым объектам наследовать группу каталога, а sticky bit ограничивает удаление чужих файлов в общем каталоге. Они меняют поведение, а не просто добавляют ещё одну разновидность обычных rwx. В системных каталогах и на сетевых файловых системах результат также может зависеть от настроек самой системы.
Что проверить дальше
Начните с безопасной практики на временном файле: сравните числовую и буквенную запись, затем проверьте каталог и каждый элемент пути. На рабочем сервере перед изменением рекурсивных прав выясните владельца процесса, назначение каталога и наличие ACL. После настройки проверяйте не только вывод ls -l, но и реальную операцию от имени нужного пользователя — именно она покажет, решена ли проблема.
Логотип и фирменный стиль: Три концепции разного характера, палитра с обоснованием, проверка на читаемость в малом размере и в один цвет.
Спросить за 60 ₽Источники: GNU Coreutils: File permissions, Linux man-pages: chmod(1)
Частые вопросы
Чем отличаются права 644 от 755?
Почему я не могу открыть файл, хотя у него стоит право на чтение?
Можно ли исправить ошибку командой chmod 777?
Чем chmod отличается от chown?
Эти примеры сработают в другой версии Linux или в macOS?
Что делать, если chmod не помог?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.