Linux

chmod и chown в Linux: базовые команды управления правами

В этом гайде вы узнаете, как использовать команды chmod и chown для изменения прав доступа и владельца файлов в Linux. Мы разберем числовой и символьный методы, приведем практические примеры и объясним, как избежать распространенных ошибок.

Обновлено 16 февраля 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 10+CentOS 7+Linux в целом

Введение / Зачем это нужно

В Linux каждая файловая система имеет строгую модель безопасности: каждый файл и директория имеют владельца (пользователя и группу) и права доступа (что может делать каждый: читать, писать, выполнять). Команды chown (change owner) и chmod (change mode) — это основные инструменты для управления этими настройками. Без них вы не сможете корректно настраивать доступ к файлам, запускать скрипты или защищать конфиденциальные данные. Этот гайд научит вас использовать эти команды на практике.

Требования / Подготовка

  1. Доступ к терминалу Linux (Ubuntu, Debian, CentOS или любая другая дистрибутив).
  2. Базовое понимание структуры файловой системы (что такое файл, директория, путь).
  3. Для изменения владельца (chown) или прав на файлы, принадлежащие другим пользователям, потребуются права суперпользователя (sudo). Если вы работаете со своими файлами — sudo не нужен.
  4. Рекомендуется создать тестовую директорию и файлы, чтобы экспериментировать без риска:
mkdir ~/test_permissions
touch ~/test_permissions/file1.txt ~/test_permissions/script.sh

Шаг 1: Проверка текущих прав и владельца

Прежде чем что-то менять, нужно понять текущее состояние. Используйте команду ls -l (long list).

ls -l ~/test_permissions/

Пример вывода:

-rw-r--r-- 1 alex users 0 Feb 16 12:00 file1.txt
-rw-r--r-- 1 alex users 0 Feb 16 12:00 script.sh

Разберем строку для file1.txt:

  • - — тип (дефис = обычный файл, d = директория).
  • rw- — права владельца (alex): чтение (r), запись (w), выполнение (x).
  • r-- — права группы (users): только чтение.
  • r-- — права остальных: только чтение.
  • 1 — количество жестких ссылок.
  • alex — владелец (пользователь).
  • users — группа-владелец.
  • 0 — размер в байтах.
  • Далее — дата, время, имя.

Запомните: 9 символов прав делятся на три триады: владелец (user), группа (group), остальные (others). Каждая триада — это биты rwx (чтение, запись, выполнение), где отсутствующая возможность заменяется на -.

Шаг 2: Изменение владельца (chown)

Команда chown меняет пользователя и/или группу-владельца файла. Синтаксис:

sudo chown [пользователь][:группа] файл

Пример 1: Изменить только владельца

sudo chown bob file1.txt

После этого владельцем file1.txt станет пользователь bob, группа останется users.

Пример 2: Изменить владельца и группу одновременно

sudo chown bob:devs file1.txt

Теперь владелец — bob, группа — devs.

Пример 3: Рекурсивно изменить владельца для директории и всего содержимого

sudo chown -R alice:developers /home/alice/project

Ключ -R (recursive) применяет изменение ко всем вложенным файлам и поддиректориям.

⚠️ Важно: Будьте осторожны с рекурсивным chown на системных директориях (/etc, /usr). Это может нарушить работу системы. Всегда проверяйте путь.

Шаг 3: Изменение прав доступа (chmod)

Команда chmod меняет права (rwx). Есть два основных способа: числовой (octal) и символьный.

Числовой метод (octal)

Каждой тройке прав (rwx) соответствует число от 0 до 7, где:

  • r = 4
  • w = 2
  • x = 1 Суммируем нужные биты.

Пример: rwx = 4+2+1 = 7, rw- = 4+2+0 = 6, r-x = 4+0+1 = 5, r-- = 4.

Команда: chmod [число] файл

Примеры:

chmod 755 script.sh   # Владелец: rwx (7), группа и остальные: r-x (5)
chmod 644 file1.txt   # Владелец: rw- (6), группа и остальные: r-- (4)
chmod 777 temp.log   # Все: rwx (используйте с осторожностью!)

Символьный метод

Более гибкий: вы добавляете/убираете/устанавливаете права для конкретной категории (u=user, g=group, o=others, a=all).

Операторы:

  • + — добавить право.
  • - — убрать право.
  • = — точно задать (остальные сбросятся).

Примеры:

chmod u+x script.sh          # Добавить выполнение (x) владельцу (u)
chmod go-w file1.txt         # Убрать запись (w) у группы (g) и остальных (o)
chmod a=r file1.txt          # Все (a) получили только чтение (r)
chmod ug=rwx,o= script.sh    # Владелец и группа: rwx, остальные: никаких

Символьный метод удобен для точечных изменений, числовой — для быстрой установки стандартных наборов.

Шаг 4: Часто используемые комбинации прав

Знайте эти «магические» числа:

  • 755 — стандарт для исполняемых файлов и скриптов (владелец может всё, остальные — чтение и выполнение).
  • 644 — стандарт для обычных файлов (владелец читает/пишет, остальные только читают).
  • 700 — только владелец имеет полный доступ (для конфиденциальных файлов).
  • 777 — полный доступ всем (опасно, используйте только для временных общих ресурсов).
  • 750 — владелец: всё, группа: чтение/выполнение, остальные: ничего.

Шаг 5: Практические примеры

Пример 1: Сделать скрипт исполняемым

chmod +x script.sh

Или числовым: chmod 755 script.sh. Теперь скрипт можно запустить как ./script.sh.

Пример 2: Разрешить группе запись в общую директорию

sudo chown :developers /shared_folder   # Меняем группу-владельца на developers
sudo chmod 775 /shared_folder           # Владелец и группа: rwx, остальные: r-x

Теперь все пользователи из группы developers могут создавать/удалять файлы в /shared_folder.

Пример 3: Забрать у остальных право на чтение конфиденциального файла

chmod 640 config.ini   # Владелец: rw-, группа: r--, остальные: ---

Остальные (не входящие в группу) не увидят файл.

Пример 4: Установить sticky bit для общей директории (например, /tmp)

Sticky bit (бит t) заставляет файлы удалять только их владельца, даже если директория доступна на запись всем.

chmod +t /shared_folder

Права изменятся на drwxrwxrwt (виден символ t вместо x для остальных).

Проверка результата

После каждого изменения проверяйте:

ls -l файл_или_директория

Убедитесь, что:

  • Владелец и группа изменились (после chown).
  • Правые 9 символов соответствуют ожидаемым (после chmod).

Для директорий с рекурсивными изменениями проверьте несколько вложенных файлов.

Возможные проблемы

Проблема 1: «Operation not permitted» при chown/chmod

Причина: Вы не владелец файла и не используете sudo, либо пытаетесь изменить права на файл, который вы не владеете, а у вас нет прав CAP_CHOWN (обычно только у root). Решение:

  • Для своих файлов: убедитесь, что вы владелец (ls -l).
  • Для чужих/системных файлов: используйте sudo (если у вас есть права sudo) или обратитесь к администратору.
  • Не меняйте владельца/права на системные файлы (/bin, /etc, /usr) без крайней необходимости.

Проблема 2: Скрипт не выполняется, хотя стоит +x

Причина: Возможно, на файловой системе, где лежит скрипт, не поддерживается выполнение (например, смонтирована с опцией noexec), или в первой строке скрипта указан неверный интерпретатор (shebang). Решение:

  • Проверьте, смонтирована ли файловая система с noexec (mount | grep /путь).
  • Убедитесь, что скрипт начинается с #!/bin/bash (или другого корректного пути к интерпретатору).
  • Запускайте скрипт явно: bash script.sh (если нет x-бита).

Проблема 3: Рекурсивный chown/chmod затронул больше, чем нужно

Причина: Ошибка в пути или забыли про -R (или наоборот, использовали -R в неправильной директории). Решение: Всегда проверяйте путь перед рекурсивной операцией. Для отката можно использовать find с -exec или восстановить из бэкапа. Будьте внимательны!

Проблема 4: Группа не меняется при chown пользователь:группа

Причина: Указанной группы не существует в системе. Решение: Предварительно создайте группу (sudo groupadd группа) или используйте существующую (getent group для просмотра).

Проблема 5: После chmod 777 файл стал доступен всем, но это небезопасно

Решение: Немедленно верните разумные права, например, chmod 755 файл для исполняемых или chmod 644 файл для обычных. Избегайте 777 на постоянной основе.

Часто задаваемые вопросы

Как рекурсивно изменить владельца для всей директории и её содержимого?
Чем отличается числовой метод (755) от символьного (u+x) в chmod?
Что делать, если при chown/chmod появляется «Operation not permitted»?
Как дать права на запись только владельцу, а на чтение — группе и остальным?

Полезное

Проверьте текущие права и владельца
Измените владельца файла (chown)
Измените права доступа (chmod)
Проверьте результат

Эта статья помогла вам решить проблему?