chmod: как изменить права на файл в Linux — инструкция для новичка
Команда chmod задаёт, кто может читать, изменять и запускать файл на Linux-сервере. Здесь разберём, как устроены права, как записать их цифрами и буквами и какие значения выбрать для сайта, скриптов и ключей SSH. Статья из словаря терминов подойдёт новичку, который только получил доступ к своему VPS.

Коротко
Главные выводы статьи о теме «chmod» в семи пунктах:
- chmod (change mode) меняет права доступа к файлам и каталогам в Linux и других Unix-системах
- Прав три вида — чтение (r = 4), запись (w = 2), выполнение (x = 1), и их можно суммировать
- Права задаются для трёх категорий: владелец, группа, остальные — всего 9 бит
- Типичные значения: 644 для файлов сайта, 755 для каталогов и скриптов, 600 для приватных ключей SSH
- Значение 777 открывает файл всем и на рабочем сервере почти всегда ошибка
- Флаг -R применяет права ко всему содержимому каталога, поэтому запускайте его с осторожностью
- Спецбиты SUID, SGID и sticky задаются четвёртой цифрой: 4, 2 и 1 соответственно
Что такое chmod и зачем он нужен на сервере
chmod — сокращение от change mode, «изменить режим». Это команда из набора GNU coreutils, которая меняет права доступа к файлам и каталогам в Linux и других Unix-системах. Она есть на любом VPS с Linux, устанавливать ничего не нужно.
Права определяют, кто может читать файл, изменять его и запускать. Они задаются для трёх категорий: владельца, группы и остальных пользователей. Это 9 бит, по 3 на каждую категорию.
Посмотреть права можно командой ls -l. Пример строки: -rw-r--r-- 1 www-data www-data 4096 Sep 21 10:00 index.html. Первый символ показывает тип: - — файл, d — каталог. Дальше идут три тройки: rw- у владельца (чтение и запись), r-- у группы и r-- у остальных (только чтение). В числовом виде это 644.
Если вы распаковали архив с сайтом, как в статье про распаковку tar.gz, права после этого часто приходится поправить. Вот задачи, которые решает chmod:
- защита конфигов и ключей:
chmod 600 ~/.ssh/id_rsaоставляет доступ только владельцу; - запуск скриптов:
chmod +x backup.shразрешает выполнение; - работа веб-сервера: Nginx или Apache должен читать файлы в
/var/www; - защита от чужих правок: другие пользователи не смогут изменить ваш файл.
Как работают права доступа: чтение, запись и выполнение
В Linux каждый файл и каталог хранит набор прав. Прав три вида: чтение (r, read, значение 4), запись (w, write, значение 2) и выполнение (x, execute, значение 1). Значения можно суммировать: r + w = 6, все три права = 7.
Права задаются для трёх категорий: владелец, группа и остальные пользователи. Три права на три категории дают 9 бит. Например, rw-r--r-- означает: владелец читает и пишет, группа и остальные только читают. В числовом виде это 644: 6 для владельца, 4 для группы, 4 для остальных.
Смысл права x зависит от объекта. Для файла оно разрешает запуск: без него скрипт deploy.sh не выполнится, и оболочка ответит Permission denied. Для каталога x разрешает войти в него и обратиться к файлам по имени. Если у каталога /var/www нет x, вы не откроете ни один файл внутри, даже с правом r на сам файл. Типичная ошибка новичка — поставить каталогу 644: ls покажет имена, но cd не сработает. Поэтому каталогам обычно ставят 755, а не 644.
Посмотрите права командой ls -l. Строка выглядит так: drwxr-xr-x 2 user user 4096 Mar 3 site. Первый символ показывает тип объекта, следующие 9 символов — права. Всего в левой колонке 10 символов, и их удобно считать по позициям:
-— обычный файл;d— каталог (directory);l— символическая ссылка;- символы 2–4 — права владельца, 5–7 — группы, 8–10 — остальных.
В примере выше rwx у владельца дают 7, а r-x у группы и остальных дают по 5 (4 + 1). Итого 755.

Как изменить права через chmod: пошаговая инструкция
Разберём команду на живом примере: в каталоге сайта лежат файл index.html и скрипт deploy.sh. Файлу нужны права 644, скрипту — 755. Понадобится VPS с доступом по SSH (Secure Shell) — подходящий сервер можно выбрать в рейтинге VPS.
Менять права может владелец файла или root. Если получите Operation not permitted, вы не владелец — проверьте это на шаге 3.
Как настроить права через chmod по шагам:
- Подключитесь по SSH на порт 22:
ssh user@203.0.113.10. Вместоuserподставьте своё имя. После входа появится приглашениеuser@server:~$. - Перейдите в каталог:
cd /var/www/site. Вывод команда не даёт, пока нет ошибки. - Посмотрите текущие права:
ls -l. Ожидаемо:-rw-rw-rw- 1 user user 1024 Sep 21 10:00 index.htmlи-rw-r--r-- 1 user user 350 Sep 21 10:00 deploy.sh. - Задайте файлу сайта 644:
chmod 644 index.html. Владелец читает и пишет, остальные только читают. - Сделайте скрипт исполняемым для всех:
chmod 755 deploy.sh. - Чтобы добавить запуск только владельцу, не трогая остальные биты, используйте
chmod u+x deploy.sh. Здесьu— user, владелец. - Проверьте результат:
ls -l. Теперь строки начинаются с-rw-r--r--дляindex.htmlи-rwxr-xr-xдляdeploy.sh. - Сверьте числовое значение:
stat -c %a index.html deploy.sh. Вывод:644и755.

Числовой и символьный режим: какие значения выбрать
Команда chmod принимает права в двух записях. Числовая короче: chmod 755 file. Символьная нагляднее: chmod u=rwx,go=rx file делает то же самое, где u — владелец (user), g — группа (group), o — остальные (others).
В числовом режиме каждая цифра — сумма прав: чтение (r) = 4, запись (w) = 2, выполнение (x) = 1. Например, 7 = 4+2+1 (rwx), 6 = 4+2 (rw-), 5 = 4+1 (r-x), 4 = только чтение. Три цифры соответствуют владельцу, группе и остальным, поэтому 640 читается как rw- для владельца, r-- для группы и --- для остальных.
| Значение | Владелец | Группа | Остальные | Пример применения |
|---|---|---|---|---|
600 |
rw- |
--- |
--- |
приватный ключ SSH ~/.ssh/id_rsa |
640 |
rw- |
r-- |
--- |
конфиг с паролями, который читает служба |
644 |
rw- |
r-- |
r-- |
файлы сайта: index.html, style.css |
700 |
rwx |
--- |
--- |
личный скрипт или каталог ~/.ssh |
750 |
rwx |
r-x |
--- |
скрипт для администраторов группы |
755 |
rwx |
r-x |
r-x |
каталоги сайта и общие скрипты |
В символьном режиме знак задаёт действие:
chmod g+w file— добавить группе запись;chmod o-rwx file— забрать у остальных все права;chmod u=rw,go=r file— задать права точно, лишнее сбрасывается;chmod +x script.sh— сделать скрипт исполняемым.
Для разовой правки выбирайте символьный режим: он не трогает остальные биты. Для полной установки прав используйте числовой.
Типичная ошибка новичка — поставить 644 на скрипт и удивиться отказу Permission denied: у файла нет бита x. Исправьте командой chmod 755 script.sh или chmod +x script.sh. Если ключ SSH имеет права шире 600, например 644, клиент откажется его использовать и выведет предупреждение UNPROTECTED PRIVATE KEY FILE.

Сравнить тарифы VPS для сайта
Подберите конфигурацию под проект и потренируйтесь с chmod на своём сервере.
Рекурсия и спецбиты: флаг -R, SUID, SGID и sticky bit
Флаг -R (recursive) применяет права ко всему содержимому каталога. Команда chmod -R 755 /var/www/site выставит 755 и каталогам, и файлам, поэтому каждая картинка и .php-файл получит бит выполнения x. Для сайта это лишний риск, а откатить тысячи файлов вручную сложно, так что перед массовой правкой сделайте снимок сервера.
Типичная ошибка новичка — chmod -R 777 /var/www «чтобы заработало». Так вы открываете на запись все 100% файлов сайта, включая wp-config.php с паролем от базы данных, и любая уязвимость превращается во взлом.
Безопасный вариант — задать права отдельно каталогам и файлам через find:
find /var/www/site -type d -exec chmod 755 {} +— каталогам 755;find /var/www/site -type f -exec chmod 644 {} +— файлам 644.
Ключ + передаёт файлы пачками, поэтому на 10 000 файлов команда отработает за секунды, а не запустит 10 000 отдельных процессов chmod.
Спецбиты задаются четвёртой, старшей цифрой. SUID (Set User ID, 4) запускает программу от имени владельца: у /usr/bin/passwd права 4755, поэтому обычный пользователь может сменить пароль, хотя /etc/shadow ему недоступен. SGID (Set Group ID, 2) запускает от имени группы, а на каталоге передаёт эту группу новым файлам. Sticky bit (1) разрешает удалять файлы в каталоге только их владельцу.
Классический пример — /tmp с правами 1777: писать может любой, но чужие файлы удалить нельзя. Цифры спецбитов складываются: 3755 включает SGID и sticky bit сразу. Проверьте результат через ls -ld /tmp: вместо последнего x вы увидите букву t.
Ошибки с chmod и как их исправить
Ошибки с правами доступа чаще всего возникают из-за chmod 777 «чтобы заработало» или неосторожного chmod -R. Ниже разберём каждую ошибку по отдельности и как их исправить.
Первая ошибка: chmod 777 «чтобы заработало»
Права rwx для всех снимают ошибку доступа, но любой пользователь сервера или взломанный скрипт сможет изменить файл.
Как решить: верните разумные значения — chmod 644 файл для файлов и chmod 755 каталог для каталогов.
Вторая ошибка: chmod -R на корне или домашнем каталоге
Запуск на корне / или домашнем каталоге меняет права на тысячах файлов за секунды: система перестаёт загружаться, а SSH (Secure Shell) отказывает во входе. Откатить такую правку вручную почти невозможно. Одна лишняя косая черта в пути превращает правку каталога сайта в правку всей системы.
Как решить: не запускайте chmod -R, пока не проверили путь командой pwd, а перед массовой операцией сделайте снимок диска: он есть у большинства VPS-провайдеров и восстанавливает сервер за 5–10 минут.
Третья ошибка: Permission denied при верных правах
Причина часто в чужом владельце файла: chmod может менять только владелец или root.
Как решить: проверьте владельца командой ls -l файл и смените его через sudo chown ваш_пользователь файл или запустите правку с sudo chmod 644 файл.
Четвёртая ошибка: ключ SSH с открытыми правами
Клиент выводит UNPROTECTED PRIVATE KEY FILE и не принимает ключ. Выполните chmod 600 ~/.ssh/id_rsa, а каталог закройте командой chmod 700 ~/.ssh.
Права стоит выдавать ровно такие, какие нужны, и дважды проверять путь перед рекурсивными командами — тогда большинство этих ошибок просто не случится.
chmod, chown, umask и ACL: чем они отличаются
Эти четыре инструмента решают разные задачи. chmod меняет права: кто может читать, писать и выполнять файл. chown (change owner) меняет владельца и группу файла, например chown www-data:www-data /var/www/site. Для каталога с содержимым добавьте флаг -R, но проверьте путь: ошибка в одном символе затронет тысячи файлов.
umask (user file-creation mask) задаёт права новых файлов и каталогов. Маска вычитается из максимума: 666 для файлов и 777 для каталогов. Типичная 022 даёт 644 для файлов и 755 для каталогов, а 077 оставляет доступ только владельцу: 600 и 700. Текущее значение покажет команда umask без аргументов, а сменить его на время сессии можно командой umask 027.
ACL (Access Control List, список контроля доступа) добавляет точечные правила поверх базовых 9 бит. Команда setfacl -m u:deploy:rw /var/www/site/config.php даёт пользователю deploy запись в один файл, а владелец и группа не меняются. Результат покажет getfacl. Если у файла есть ACL, в выводе ls -l после прав появляется знак +. Убрать все правила можно командой setfacl -b.
Бывает, что после chmod 644 сайт всё равно отдаёт 403. Права самого файла тут уже ни при чём: 644 разрешает чтение всем пользователям, в том числе www-data. Проверьте каталоги по всему пути к файлу — у каждого должен быть бит x для остальных, обычно это 755. Посмотреть права всей цепочки помогает namei -l /var/www/site/index.html. Если с каталогами всё в порядке, ищите ограничения в ACL, SELinux или правилах доступа веб-сервера. chown нужен, когда веб-серверу надо не только читать файлы, но и записывать в них.
Как выбрать инструмент под задачу:
- сайт отвечает 403 из-за неверных прав на файл —
chmod; - файлы созданы от
root, а сайт работает от другого пользователя —chown; - новые файлы каждый раз получают лишние права —
umask; - одному сотруднику нужен доступ к одному каталогу —
setfacl.
Когда chmod не решает проблему
Команда chmod меняет только стандартные права Unix. Если файловая система их не поддерживает, команда отработает без ошибки, а права не изменятся. Так ведут себя разделы FAT и exFAT (File Allocation Table), а также диски NTFS, смонтированные через ntfs-3g: права там задаются один раз параметрами uid, gid и umask в /etc/fstab.
Второй частый случай — атрибут immutable. Файл с ним нельзя изменить или удалить даже от root. Проверьте атрибуты командой lsattr файл: буква i в выводе означает блокировку. Снимите её командой chattr -i файл. Ещё одна причина отказа — SELinux (Security-Enhanced Linux) или AppArmor: они запрещают доступ поверх обычных прав, даже при значении 777. Ищите отказы в /var/log/audit/audit.log или через dmesg.
На общем хостинге без SSH-доступа (Secure Shell) командной строки нет, и права меняются только в файловом менеджере панели. В Windows без WSL (Windows Subsystem for Linux) chmod не существует, там работают icacls и вкладка «Безопасность».
Что проверить в первую очередь:
- владельца файла:
ls -lиchown; - права на каждый каталог пути, минимум
x(755); - тип файловой системы:
mountилиdf -T; - атрибуты:
lsattr; - режим SELinux:
getenforce.
Если нужен полный контроль над этими настройками, возьмите VPS с root-доступом: там вы сами меняете владельцев, атрибуты и политики безопасности.
Частые вопросы
Что делает команда chmod в Linux
Что означает chmod 777
Что означает chmod 755
Что означает chmod 644
Как сделать файл исполняемым в Linux
Как узнать текущие права файла
Как изменить права на все файлы в папке
Почему chmod пишет Operation not permitted
Чем chmod отличается от chown
Какие права нужны приватному ключу SSH
Можно ли использовать chmod в Windows
Итоговый чек-лист
Используйте этот список как финальную проверку: каждый пункт — короткий вывод из статьи выше. Отметьте для себя, что уже сделано, а что осталось.
- Вы знаете, что означают r, w, x и цифры 4, 2, 1
- Перед изменением вы проверили текущие права через ls -l
- Для файлов сайта выбрали 644, для каталогов и скриптов — 755
- Приватным ключам и конфигам с паролями назначили 600 или 700
- Вместо 777 нашли причину ошибки доступа и исправили владельца
- Перед рекурсивным -R сделали копию или снапшот и проверили путь
Если какой-то пункт пока не выполнен, вернитесь к нужному разделу статьи — там разобрано, как это сделать и на чём чаще всего ошибаются.
Источники
На сайте есть партнёрские ссылки: если вы оформите заказ по ним, мы получим вознаграждение от провайдера. Это не влияет на цену для вас и на место в рейтинге.