Linux: «Operation not permitted» при chmod или chown

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

Ошибка возникает, когда вы не владелец файла, файловая система не поддерживает права (NTFS, FAT, сетевые диски) или у файла установлен атрибут неизменяемости. Ниже — причины и порядок действий от простого к сложному.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Владелец
  5. Файловая система
  6. Атрибуты и SELinux

#Что означает ошибка

Сообщение
chmod: changing permissions of ... : Operation not permitted

chmod: changing permissions of 'file': Operation not permitted значит, что вы не владелец файла (менять права может только владелец и root), либо файл лежит на файловой системе без поддержки прав Unix (NTFS, FAT, exFAT, сетевые шары), либо у него установлен атрибут immutable.

Сначала узнайте, кто владелец и на какой ФС лежит файл.

От этого зависит решение.

Ошибка возникает, когда вы не владелец файла, файловая система не поддерживает права (NTFS, FAT, сетевые диски) или у файла установлен атрибут неизменяемости.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Вы не владелец файлаНужны права суперпользователя.Используйте sudo.
Файловая система без прав UnixДиск NTFS или FAT.Измените параметры монтирования.
Установлен атрибут immutablelsattr показывает i.Снимите атрибут (chattr -i).
Смонтировано только для чтенияОшибка read-only.Перемонтируйте.

#Пошаговое решение

  1. Проверьте владельца файлаВ терминале сервера выполните ls -ld ПУТЬ_К_КАТАЛОГУ и ls -l ПУТЬ_К_ФАЙЛУ, подставив пути из сообщения об ошибке. В выводе посмотрите владельца, группу и разрешения. Затем уточните, от какого пользователя работает служба (systemctl show ИМЯ_СЛУЖБЫ -p User для службы systemd). Изменяйте владельца или права только после определения правильного значения; не выставляйте 777 ради обхода ошибки.
  2. Используйте sudo или смените владельцаСначала в терминале выполните id, ls -ld "/реальный/путь" и findmnt -T "/реальный/путь", подставив существующий файл или каталог вместо примера. Если каталог принадлежит другому пользователю или находится на NTFS/exFAT либо сетевом ресурсе, chmod может быть недоступен или бессмысленен. Менять владельца через sudo chown вправе только администратор и только после проверки правильности объекта и последствий для службы. Не запускайте рекурсивный chown -R на /usr, /etc, домашнем каталоге другого пользователя или каталоге сайта ради одной ошибки.
  3. Проверьте тип файловой системыВ терминале выполните findmnt -T /путь/к/файлу -o SOURCE,FSTYPE,OPTIONS, подставив фактический путь из ошибки. Если это NTFS/exFAT, обычный chmod может не поддерживать UNIX-права, а доступ определяется параметрами монтирования. Если указано ro, раздел смонтирован только для чтения. Не применяйте chmod -R 777: это не устраняет отсутствие поддержки прав или аппаратную неисправность.
  4. Для NTFS/exFAT задайте uid/umask при монтированииНа NTFS и exFAT нет обычной модели прав Linux для каждого файла, поэтому chmod может ничего не менять. Сначала определите файловую систему с findmnt -T /реальный/файл и проверьте параметры её монтирования. Для таких томов доступ задаётся через параметры монтирования uid/gid/umask; менять их нужно в настройке конкретного тома, а не рекурсивным chmod.
  5. Проверьте атрибут immutableНа ext4 и некоторых других Linux-файловых системах проверьте атрибуты командой lsattr -- /фактический/файл. Буква i означает запрет изменений, который может быть намеренно выставлен администратором или системой защиты. Не снимайте его автоматически. Если файл действительно ваш и атрибут установлен ошибочно, согласуйте изменение с администратором; после исправления проверьте запись и восстановите требуемые ограничения.
    Linux · Терминал (Bash)Команда
    Показать атрибуты.
    lsattr имя_файла

#Владелец

Проверьте: ls -l файл и id. Если владелец другой, используйте sudo chmod 644 файл или смените владельца: sudo chown $USER файл. Для множества файлов: sudo chown -R $USER:$USER каталог. Меняйте права отдельно для каталогов и файлов: find . -type d -exec chmod 755 {} + и find . -type f -exec chmod 644 {} +. Не делайте chmod -R 777.

#Файловая система

Выполните df -T файл или mount | grep .... На NTFS/exFAT/FAT права задаются при монтировании: mount -o uid=1000,gid=1000,umask=022 /dev/sdb1 /mnt/data или в /etc/fstab (uid=1000,gid=1000,umask=022). В WSL файлы Windows (/mnt/c) требуют опции metadata в /etc/wsl.conf: [automount] options = "metadata". На SMB/NFS права определяет сервер: смотрите cifs-опции file_mode, dir_mode.

#Атрибуты и SELinux

Проверьте lsattr файл: флаг i (immutable) или a блокирует изменения даже root. Снимите: sudo chattr -i файл. Для SELinux посмотрите ls -Z и журнал аудита. В контейнерах Docker права на примонтированные тома определяются UID хоста: используйте --user "$(id -u):$(id -g)" или chown на хосте. Для ключей SSH нужны chmod 600, а для папки .ssh — 700.

Linux · Терминал (Bash)КомандаНужен sudo
Диагностика владельца, файловой системы и атрибутов, затем смена владельца.
ls -l file
df -T file
lsattr file
sudo chown "$USER":"$USER" file

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.