ServerAID
Найти гайд, команду, тег… ⌘ K
Глоссарий  ·  термин

chmod — что это и зачем

chmod (change mode) — команда Linux для изменения прав доступа к файлу или каталогу. Управляет тем, кто может читать, писать и выполнять файл — владелец, группа, остальные. Понимание chmod нужно для SSH-ключей, веб-серверов и любой работы с правами доступа в Ubuntu.

chmod (change mode) — команда Linux для изменения прав доступа к файлу или каталогу. Управляет тем, кто может читать, писать и выполнять файл — владелец, группа, остальные. Понимание chmod нужно для SSH-ключей, веб-серверов и любой работы с правами доступа в Ubuntu.

Что это в одном абзаце

В UNIX у каждого файла есть три категории доступа: владелец (user), группа (group), все остальные (other). Для каждой категории — три типа разрешений: чтение (r), запись (w), выполнение (x). chmod — команда, которая эти разрешения меняет.

chmod 644 config.txt          # rw для владельца, r для группы и остальных
chmod +x script.sh            # добавить право на выполнение всем
chmod u+w,go-w report.pdf     # +write владельцу, -write группе и остальным
chmod -R 755 /opt/myapp       # рекурсивно для каталога и всего внутри

Посмотреть текущие права — через ls -l:

-rw-r--r--  1 user  user  1234 May  4 10:00 config.txt
drwxr-xr-x  2 user  user  4096 May  4 10:00 myapp/

Первая колонка — это «режим» (mode), который и меняет chmod.

Как читать вывод ls -l

Слева от размера файла десять символов:

-rw-r--r--
│└┬┘└┬┘└┬┘
│ │  │  └─ права для остальных (other) — r--
│ │  └──── права для группы (group)   — r--
│ └─────── права для владельца (user) — rw-
└────────── тип файла: '-' (обычный), 'd' (каталог), 'l' (симлинк)

r — read, w — write, x — execute. Прочерк - — права нет.

Для каталогов биты значат немного другое:

  • r — можно листинговать содержимое (ls).
  • w — можно создавать и удалять файлы внутри.
  • x — можно «войти» в каталог (cd) и обращаться к файлам по имени.

Поэтому, например, для папки ~/.ssh/ нужны rwx (700) — чтобы вы могли заходить и видеть содержимое, но никто другой не мог даже прочитать список файлов с приватными ключами.

Восьмеричная нотация

Самый частый способ задать права — через число из трёх (или четырёх) цифр:

Цифра Биты Что значит
0 --- ничего
1 --x только выполнение
2 -w- только запись
3 -wx запись + выполнение
4 r-- только чтение
5 r-x чтение + выполнение
6 rw- чтение + запись
7 rwx всё

Три цифры — это разрешения для владельца / группы / остальных:

chmod 755 script.sh   # rwx / r-x / r-x — стандарт для исполняемых
chmod 644 README.md   # rw- / r-- / r-- — стандарт для текстовых
chmod 600 ~/.ssh/id_ed25519  # rw- / --- / --- — приватный ключ
chmod 700 ~/.ssh/             # rwx / --- / --- — каталог с ключами
chmod 750 /var/log/myapp/    # rwx / r-x / --- — папка лога для группы

Запомните три ключевых пресета:

  • 644 — обычный файл, читать может любой, писать только владелец.
  • 755 — исполняемый файл или папка, доступная для входа всем.
  • 600 / 700 — приватные данные владельца (SSH-ключи, секреты, домашние папки).

Символьная нотация

Альтернатива числам — изменения «дельтой»:

chmod u+x script.sh           # владельцу +x
chmod g-w shared.log          # группе убрать запись
chmod o=r public.txt          # остальным = только чтение
chmod a+r,a-w report.pdf      # всем (a=all) +read, -write

Кому: u (user), g (group), o (other), a (all = u+g+o).
Действие: + (добавить), - (убрать), = (установить ровно).
Что: r, w, x (плюс специальные s, t, X).

Когда удобнее символьная: «добавить +x скрипту» — короче, чем считать 755. Когда удобнее восьмеричная: «дать стандартный пресет» — chmod 755 понятнее.

Рекурсивный chmod и -X

Для каталогов часто нужно применить права ко всему содержимому:

sudo chmod -R 755 /var/www/myapp

Грабли: -R 755 поставит x-бит на все файлы, в том числе на текстовые. Это не страшно, но «грязно». Чище — использовать заглавный X, который ставит x только если файл уже исполняемый или это каталог:

sudo chmod -R u=rwX,go=rX /var/www/myapp

Альтернатива — раздельные команды для файлов и каталогов:

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

Это идеоматический паттерн при разворачивании сайта на сервер.

chmod и владелец vs группа

chmod не меняет владельца файла — только права. Чтобы поменять владельца, нужен chown:

sudo chown www-data:www-data /var/www/myapp/         # сменить user и group
sudo chown -R deploy:deploy /opt/myapp               # рекурсивно

Поэтому стандартный «деплой-чанк» это два шага: сначала chown, потом chmod.

SUID, SGID, sticky-bit

Реже встречающиеся биты — четвёртая (опциональная) цифра в восьмеричной нотации:

  • SUID (4xxx)s вместо x у владельца. Программа выполняется с правами владельца файла, а не запускающего. Так работает passwd: вы запускаете, но он внутри пишет в /etc/shadow от имени root.
  • SGID (2xxx)s у группы. Для каталогов: новые файлы внутри наследуют группу каталога. Удобно для общих папок команды.
  • Sticky-bit (1xxx)t у остальных. На каталогах: только владелец файла может удалить файл, даже если у других есть w. Так защищён /tmp от того, чтобы пользователи не удаляли чужие файлы.
chmod 4755 /usr/bin/myapp     # SUID
chmod 2775 /shared            # SGID
chmod 1777 /tmp               # sticky

В обычной серверной практике вы их редко ставите руками — они уже правильно настроены в системных файлах.

Частые вопросы

Что значит chmod в Linux

Команда «change mode» — изменение прав доступа к файлу. Управляет тем, кто из трёх категорий (владелец, группа, остальные) может читать (r), писать (w) и выполнять (x) файл. Действует только в UNIX-подобных системах с моделью POSIX-прав; в Windows права устроены принципиально иначе.

Что значат цифры 755 и 644

Восьмеричная запись прав. Три цифры — для владельца / группы / остальных. Каждая цифра — сумма: 4 (read) + 2 (write) + 1 (execute). 755 = rwxr-xr-x (владельцу всё, группе и остальным чтение и вход в каталог). 644 = rw-r--r-- (владельцу чтение и запись, всем остальным только чтение). 600 = rw------- — приватный файл.

Какие права ставить SSH-ключу

Каталог ~/.ssh/700 (только владелец видит и заходит). Приватный ключ (id_ed25519) — 600 (только владелец читает и пишет). authorized_keys на сервере — тоже 600. Если права шире, SSH-демон откажется работать с сообщением «bad ownership or modes». Подробно — в гайде по SSH-ключам.

Чем chmod отличается от chown

chmod меняет права (что можно делать с файлом). chown меняет владельца и группу (кому он принадлежит). Это две независимые оси: можно сменить владельца, не меняя прав, и наоборот. На деплое обычно делают подряд: сначала chown -R www-data:www-data, потом chmod нужного режима.

Что такое chmod -R

Флаг -R (recursive) применяет права ко всему содержимому каталога рекурсивно. chmod -R 755 /var/www/site пройдётся по всем файлам и подкаталогам и поставит им 755. Грабли: на текстовые файлы тоже навесится +x, что некрасиво. Чище — chmod -R u=rwX,go=rX <path> (заглавный X ставит execute только если он уже был или это каталог).

Почему chmod требует sudo

Менять права чужого файла — нет. Если файл ваш, chmod без sudo сработает. sudo нужен, когда вы пытаетесь поменять права файлу, у которого другой владелец (например, в /etc/, /var/, в чужих домашних папках). Поэтому для системных файлов почти всегда sudo chmod ....

Что почитать

  • SSH-ключи на Ubuntu: вход без пароля — каноничный пример, где chmod критичен: SSH откажется работать с приватным ключом, если права шире 600.
  • sudo — почему chmod чаще всего идёт через sudo при работе с системными файлами.
  • демон в Linux — типичная задача после установки демона: дать www-data или сервисному юзеру нужный доступ через chown + chmod.

Похожие материалы

Сроки поддержки Ubuntu LTS — на сколько хватает релиза
Глоссарий

Сроки поддержки Ubuntu LTS — на сколько хватает релиза

Ubuntu LTS — это релиз с долгой поддержкой: 5 лет бесплатных security-обновлений и 10 лет с подпиской Ubuntu Pro. Промежуточные релизы (24.10, 25.04) живут всего 9 месяцев. Разбираем, какие версии сейчас актуальны, до какой даты безопасно сидеть на 22.04 и 24.04, и когда выходит 26.04 LTS.

Редакция
Debian или Ubuntu — что выбрать
Глоссарий

Debian или Ubuntu — что выбрать

Debian и Ubuntu — две родственные операционные системы: Ubuntu сделана на базе Debian и тянет оттуда пакеты, формат `.deb` и пакетный менеджер apt. Различия — в скорости релизов, наборе из коробки и философии. Кратко: Debian Stable консервативнее и аскетичнее, Ubuntu LTS — свежее и удобнее, особенно для рабочего стола и облаков. Под прод подходят оба, выбор сводится к тому, что вам важнее: предсказуемость или новизна.

Редакция
bash — что это и зачем
Глоссарий

bash — что это и зачем

bash (Bourne Again SHell) — это командная оболочка, которая обрабатывает то, что вы вводите в терминале Linux. Запускает программы, расширяет переменные, выполняет конструкции `if` / `for`, читает скрипты из файлов с шебангом `#!/bin/bash`. На Ubuntu — оболочка по умолчанию для интерактивных пользователей; для системных скриптов используют более строгий `/bin/sh` (`dash`).

Редакция
Ubuntu — что это и зачем
Глоссарий

Ubuntu — что это и зачем

Ubuntu — самый популярный дистрибутив Linux: бесплатная операционная система на базе Debian, удобная и для серверов, и для рабочего стола. Под капотом Linux-ядро, поверх — пакетный менеджер apt, рабочий стол GNOME (на Desktop) и стек systemd-сервисов. Релизы выходят каждые полгода, LTS-версии — раз в два года и поддерживаются 5 лет.

Редакция