chmod: права доступа в Linux от простого к практике
Права доступа в Linux — базовая вещь, но детали chmod приходится освежать в памяти. Особенно числовые значения: что такое 755 и чем отличается от 644 — вспоминаешь не сразу.
Синтаксис команды стандартный:
chmod [опции] права /path/to/file
Из чего состоят права
Три типа разрешений:
r— чтениеw— записьx— выполнениеs— выполнение с правами суперпользователя (специальный бит)
Три категории пользователей:
u— владелец файлаg— группаo— все остальные
Символьный формат
Изменить права можно с помощью + (добавить) и - (убрать):
chmod u+x file # разрешить выполнение владельцу
chmod ugo+x file # разрешить выполнение всем
chmod ug+w file # разрешить запись владельцу и группе
chmod o-x file # запретить выполнение остальным
chmod ugo+rwx file # полный доступ для всех
Числовой формат
Каждое разрешение имеет числовое значение: r=4, w=2, x=1. Складываешь для каждой категории — владелец, группа, остальные:
| Запись | Владелец | Группа | Остальные |
|---|---|---|---|
744 |
rwx (7) | r (4) | r (4) |
755 |
rwx (7) | r-x (5) | r-x (5) |
764 |
rwx (7) | rw (6) | r (4) |
777 |
rwx (7) | rwx (7) | rwx (7) |
755 — типичный вариант для исполняемых файлов и директорий: владелец может всё, остальные читают и запускают. 644 — для обычных файлов: владелец читает и пишет, остальные только читают.
777 открывает полный доступ всем — в продакшне это почти всегда лишнее.
Полезные флаги
chmod -R 755 /path/dir # применить рекурсивно ко всей директории
chmod -v 644 file # показать подробный вывод что изменилось
chmod -c 644 file # показать только реальные изменения (если было другое)
chmod --reference=src dst # скопировать права с одного файла на другой
--preserve-root запрещает рекурсивные операции на корневом / — защита от случайного chmod -R 777 /.
Практика
# добавить право выполнения для владельца
chmod u+x script.sh
# выставить конкретные права и проверить
chmod 766 file
ls -l file
# убрать право выполнения
chmod u-x file
Если работаешь с Linux-серверами и нужна помощь с настройкой инфраструктуры — пиши на [email protected] или заходи на 1it.pro.