Изменение прав доступа командой chmod с помощью чисел

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 и рекурсией без нужды.


Комментарии загружаются…