Справочник

Команда chmod: как поменять права на файлы и папки

chmod меняет права на файл или папку: кто может читать, менять и запускать. Права задают числом, например 644, или буквами, например u+x. Ниже — примеры для сайта и скриптов и что делать, если chmod выдаёт ошибку.

Обновлено 10.10.2026≈ 5 мин чтения
Содержание 9

Как устроена команда

chmod ПРАВА ФАЙЛ

Вместо ПРАВА — число или буквы, вместо ФАЙЛ — имя файла или путь к нему. Файлов можно указать несколько через пробел. Что значат права, рассказано в справочнике Права на файлы в Linux: rwx, 644 и 755.

Менять права может владелец файла. Если файл принадлежит другому пользователю, поставьте перед командой sudo — иначе chmod напишет Operation not permitted. Владельца покажет ls -l — третья колонка.

Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — так и должно быть: наберите пароль и нажмите Enter.

Права числом

Три цифры — права владельца, группы и остальных. 4 — чтение, 2 — запись, 1 — выполнение, цифры складываются.

КомандаЧто получится
chmod 644 index.htmlМенять файл можете только вы, читать — все. Так ставят файлам сайта
chmod 755 deploy.shМенять скрипт можете только вы, запускать и читать — все
chmod 600 .envЧитать и менять файл можете только вы. Так ставят файлам с паролями
chmod 700 backupsВ папку backups можете заходить только вы

Если цифр меньше трёх, недостающие chmod считает нулями слева: chmod 44 — то же, что chmod 044. Пишите все три цифры, чтобы не ошибиться.

Права буквами

Буквенная запись меняет только то, что указано, остальные права остаются прежними. Она состоит из трёх частей:

  • кому: u — владельцу, g — группе, o — остальным, a — всем;
  • что сделать: + — добавить, - — убрать, = — поставить ровно такие права;
  • какие права: r, w, x.
КомандаЧто делает
chmod u+x deploy.shРазрешает владельцу запускать скрипт
chmod a+x deploy.shРазрешает запускать скрипт всем
chmod go-w index.htmlЗапрещает группе и остальным менять файл
chmod o-r .envЗапрещает остальным читать файл
chmod u=rw,go=r index.htmlСтавит ровно rw-r--r-- — то же, что 644

Если не указать, кому, — chmod +x deploy.sh, — chmod поменяет права для всех, кроме тех, что запрещает настройка umask. Чтобы результат не зависел от umask, пишите букву явно: u+x или a+x.

Как увидеть, что изменилось: ключ -v

chmod -v 755 deploy.sh

Ответ:

mode of 'deploy.sh' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)

chmod сообщает, какие права были и какие стали — числом и буквами. Ноль впереди — четвёртая цифра для особых режимов. Ключ -c печатает такую строку только для файлов, у которых права действительно поменялись.

Права на папку и всё внутри: ключ -R

Ключ -R меняет права у папки и всего, что в ней лежит. Безопасный пример для сайта:

sudo chmod -R a+rX /var/www/example.com

a+r разрешает всем читать файлы, а X — большая буква — даёт право x только папкам и тем файлам, у которых оно уже было. Так nginx сможет заходить во все папки сайта, а обычные файлы не станут запускаемыми.

Не запускайте chmod -R 755 и chmod -R 644 на папку сайта. Первая команда сделает запускаемыми все файлы. Вторая уберёт у папок право x: сайт ответит 403, а вы не сможете открыть файлы в этих папках без sudo.

Папкам 755, файлам 644

Чтобы поставить правильные права всему сайту — папкам и файлам по отдельности, — используйте команду find:

sudo find /var/www/example.com -type d -exec chmod 755 {} +
sudo find /var/www/example.com -type f -exec chmod 644 {} +

Первая команда находит все папки (-type d) и ставит им 755, вторая — все файлы (-type f) и ставит им 644. Если на сайте есть скрипты, которые нужно запускать, после этого верните им право x: sudo chmod u+x и путь к скрипту.

Проверьте путь перед тем, как нажать Enter: команда с sudo поменяет права всему, что найдёт по этому пути.

Ошибки и как их исправить

Operation not permitted

chmod: changing permissions of 'index.html': Operation not permitted

Файл принадлежит другому пользователю. Повторите команду, поставив в начале sudo. Подробнее — в разборе Operation not permitted.

No such file or directory

chmod: cannot access 'index.htm': No such file or directory

Файла с таким именем нет в текущей папке. Сверьте имя с ответом команды ls: буквы, регистр, расширение. Или укажите полный путь к файлу.

invalid mode

Если в правах опечатка — например, chmod 8644 index.html или chmod u+z index.html, — chmod напишет invalid mode и ничего не поменяет. Цифры в правах — только от 0 до 7, буквы — из таблиц выше.

Команды сверены со справкой Ubuntu 24.04, тексты ошибок — с исходным кодом coreutils 9.4 и bash 5.2.

Источники

Сверено 10 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 10.10.2026