vpsguru Обновлено 22.07.2026

chmod: как изменить права на файл в Linux — инструкция для новичка

Обновлено 27 октября 2026 Чтение 10 мин Раздел: Словарь терминов: сеть, порты и работа с VPS

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

chmod: как изменить права на файл в Linux — инструкция для новичка

Коротко

Главные выводы статьи о теме «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.

Схема расшифровки прав rwxr-xr-- в числовое значение 754
Как читать строку прав и переводить её в число

Как изменить права через chmod: пошаговая инструкция

Разберём команду на живом примере: в каталоге сайта лежат файл index.html и скрипт deploy.sh. Файлу нужны права 644, скрипту — 755. Понадобится VPS с доступом по SSH (Secure Shell) — подходящий сервер можно выбрать в рейтинге VPS.

Менять права может владелец файла или root. Если получите Operation not permitted, вы не владелец — проверьте это на шаге 3.

Как настроить права через chmod по шагам:

  1. Подключитесь по SSH на порт 22: ssh user@203.0.113.10. Вместо user подставьте своё имя. После входа появится приглашение user@server:~$.
  2. Перейдите в каталог: cd /var/www/site. Вывод команда не даёт, пока нет ошибки.
  3. Посмотрите текущие права: 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.
  4. Задайте файлу сайта 644: chmod 644 index.html. Владелец читает и пишет, остальные только читают.
  5. Сделайте скрипт исполняемым для всех: chmod 755 deploy.sh.
  6. Чтобы добавить запуск только владельцу, не трогая остальные биты, используйте chmod u+x deploy.sh. Здесь u — user, владелец.
  7. Проверьте результат: ls -l. Теперь строки начинаются с -rw-r--r-- для index.html и -rwxr-xr-x для deploy.sh.
  8. Сверьте числовое значение: stat -c %a index.html deploy.sh. Вывод: 644 и 755.
Терминал: ls -l показывает права rw-r--r--, после chmod 755 у файла deploy.sh права rwxr-xr-x
Проверка и изменение прав через ls -l и chmod в терминале VPS

Числовой и символьный режим: какие значения выбрать

Команда 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.

Значения chmod 600, 644, 755 и 777: кому какие права они дают и где применяются
Какое значение chmod выбрать для файлов, каталогов и ключей

Сравнить тарифы VPS для сайта

Подберите конфигурацию под проект и потренируйтесь с chmod на своём сервере.

Открыть рейтинг VPS

Рекурсия и спецбиты: флаг -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 меняет права доступа к файлу или каталогу: кто может его читать, изменять и запускать. Права задаются отдельно для владельца, группы и остальных пользователей. Название образовано от change mode.
Что означает chmod 777
Значение 777 даёт чтение, запись и выполнение всем пользователям системы. На рабочем сервере так делать не стоит: любой процесс сможет изменить файл. Обычно достаточно 644 для файлов и 755 для каталогов.
Что означает chmod 755
Владелец получает полный доступ (7 = 4+2+1), группа и остальные — только чтение и выполнение (5 = 4+1). Это стандартное значение для каталогов и запускаемых скриптов.
Что означает chmod 644
Владелец может читать и изменять файл (6), остальные только читать (4). Значение подходит для обычных файлов сайта: HTML, CSS, изображений.
Как сделать файл исполняемым в Linux
Выполните chmod +x имя_файла или chmod u+x, если право нужно только владельцу. Затем запустите файл командой ./имя_файла. Первая строка скрипта должна содержать интерпретатор, например #!/bin/bash.
Как узнать текущие права файла
Команда ls -l показывает права в виде строки из 10 символов. Чтобы увидеть число, выполните stat -c %a имя_файла. Например, вывод 644 означает rw-r--r--.
Как изменить права на все файлы в папке
Используйте флаг -R: chmod -R 755 каталог. Но он затронет и файлы, и вложенные папки одинаково. Для раздельной настройки применяйте find с параметрами -type f и -type d.
Почему chmod пишет Operation not permitted
Менять права может только владелец файла или root. Проверьте владельца через ls -l и выполните команду с sudo либо смените владельца командой chown. Ещё причина — атрибут immutable или файловая система без поддержки прав.
Чем chmod отличается от chown
chmod меняет права доступа, а chown — владельца и группу файла. Обычно их используют вместе: сначала назначают нужного владельца, потом настраивают права.
Какие права нужны приватному ключу SSH
Файл ключа должен быть доступен только владельцу: chmod 600 ~/.ssh/id_rsa. Каталог ~/.ssh обычно имеет права 700. Если права шире, клиент SSH откажется использовать ключ.
Можно ли использовать chmod в Windows
В самой Windows такой команды нет, права там работают через ACL и icacls. Chmod доступен в подсистеме WSL и в Git Bash, но для дисков NTFS его действие ограничено.

Итоговый чек-лист

Используйте этот список как финальную проверку: каждый пункт — короткий вывод из статьи выше. Отметьте для себя, что уже сделано, а что осталось.

  • Вы знаете, что означают r, w, x и цифры 4, 2, 1
  • Перед изменением вы проверили текущие права через ls -l
  • Для файлов сайта выбрали 644, для каталогов и скриптов — 755
  • Приватным ключам и конфигам с паролями назначили 600 или 700
  • Вместо 777 нашли причину ошибки доступа и исправили владельца
  • Перед рекурсивным -R сделали копию или снапшот и проверили путь

Если какой-то пункт пока не выполнен, вернитесь к нужному разделу статьи — там разобрано, как это сделать и на чём чаще всего ошибаются.

Источники

На сайте есть партнёрские ссылки: если вы оформите заказ по ним, мы получим вознаграждение от провайдера. Это не влияет на цену для вас и на место в рейтинге.