chmod (change mode) — утилита Unix/Linux для смены прав доступа к файлам и каталогам. Права решают, кто может читать, писать и запускать объект: владелец (user), группа (group) и остальные (others).
Два способа задать права
Символьный: буквы r, w, x и операторы +, -, = для user/group/others (u, g, o, a).
Числовой (восьмеричный): три цифры — для owner, group, others. Каждая цифра — сумма прав:
- 4 — read (чтение);
- 2 — write (запись);
- 1 — execute (запуск / вход в каталог).
Складываете нужные: 7 = 4+2+1 (rwx), 6 = 4+2 (rw-), 5 = 4+1 (r-x), 4 = только чтение, 0 = ничего.
Частые числовые режимы
644— файл: владелец rw, остальные только r. Типично для conf, html, картинок.755— каталог или скрипт: владелец rwx, остальные r-x. Каталогам почти всегда нужен x, иначе «не зайти».600— только владелец rw (ключи, .env, приватные конфиги).700— только владелец rwx (личный каталог, приватные скрипты).777— полный доступ всем. На проде почти всегда плохая идея, кроме осознанных исключений (и то лучше сузить).
Примеры команд
Синтаксис: chmod [режим] путь
# файл: владелец читает/пишет, остальные только читают chmod 644 /var/www/html/index.html # каталог: владелец всё, остальные читают и заходят chmod 755 /var/www/html/uploads # рекурсивно по дереву (осторожно) chmod -R 755 /var/www/html/app # символика: добавить execute владельцу chmod u+x deploy.sh # символика: убрать write у group и others chmod go-w config.php # только владелец: rw- chmod 600 ~/.ssh/id_rsa
Символьная нотация: u, g, o, a
u— владелец (user);g— группа;o— остальные;a— все сразу (all).
Примеры: chmod u+rwx file, chmod g+rx dir, chmod a-w file. Символ * к chmod не относится — это уже glob оболочки для списка файлов.
Как посмотреть текущие права
ls -l файл или ls -ld каталог. Слева строка вида -rw-r--r-- (файл 644) или drwxr-xr-x (каталог 755). Первая буква — тип (- файл, d directory), дальше три тройки: u / g / o.
ls -l /path/to/file.txt stat -c '%a %n' /path/to/file.txt # сразу число, например 644
Файлы и каталоги: в чём разница x
Для файла x — «можно выполнить». Для каталога x — «можно войти и обращаться к именам внутри». Без execute на каталоге даже при read часто не получится нормально работать с содержимым. Поэтому для директорий так распространён 755, а не 644.
Практичные сценарии
- веб-корень: каталоги 755, файлы 644 (и корректный владелец www-data/nginx — уже
chown); - приватные ключи SSH: 600 на ключ, 700 на
~/.ssh; - скрипты деплоя: 750 или 755 в зависимости от того, кто должен запускать;
- не раздавайте 777 «чтобы заработало» — сначала владелец и группа, потом минимальные права.
Коротко по FAQ
Что делает chmod?
Меняет mode (биты rwx) у файла или каталога для owner/group/others. Не меняет владельца — для этого chown / chgrp.
Какие числа за что отвечают?
4 чтение, 2 запись, 1 выполнение. Три цифры подряд: user, group, others. Пример: chmod 644 file, chmod 755 dir.
Как выставить права на каталог?
Так же: chmod 755 /path/to/dir. Для дерева — chmod -R, но лучше раздельно: каталоги 755, файлы 644 (через find), чтобы не сделать все файлы исполняемыми.
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
Итого: числовой chmod — быстрый способ задать «кто что может». Запомните 644/755/600, проверяйте через ls -l, не злоупотребляйте 777 и рекурсией без нужды.