Linux EACCESВысокая

Не удается изменить владельца файла: причины и пошаговое решение

Статья объясняет, почему Linux не позволяет изменить владельца файла, и предлагает 4 проверенных способа решения проблемы, включая использование sudo, chmod и chgrp. После прочтения вы сможете быстро исправить ошибку и вернуть контроль над файлами.

Обновлено 30 июня 2026 г.
5-10 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04Debian 11CentOS 8Red Hat Enterprise Linux 8

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

Ошибка cannot change ownership (часто сопровождаемая сообщением Operation not permitted или Permission denied) появляется, когда вы пытаетесь изменить владельца или группу файла с помощью команд chown/chgrp, но система блокирует это действие. Это сигнал о том, что у текущего процесса нет необходимых прав.

Причины возникновения

  1. Недостаток прав администратора – изменение владельца требует прав root, и вы не используете sudo.
  2. Файл принадлежит root и находится в защищённой директории – не-root-пользователи не могут перевести такой файл в своё владение.
  3. Файл помечен как неизменяемый – флаг i (chattr +i) запрещает любые изменения, включая изменение владельца.
  4. Ограничения SELinux/AppArmor – политика безопасности блокирует операции с определёнными файлами.
  5. Повреждённая файловая система – разлад в ext4/XFS может вызывать «непредвиденные ошибки» при смене владельца.
  6. Неправильные разрешения группы – группа, которой вы принадлежите, не имеет прав записи на родительскую директорию.

Способы решения

Способ 1: Использовать sudo для изменения владельца

  1. Подключить sudo и запустить chownsudo chown <user>/<group> <path>
  2. Определить целевой пользователь/группу
    • Только пользователь: sudo chown <user> <path>
    • Только группа: sudo chown :<group> <path>
  3. Применить команду и ввести пароль После ввода команды система запросит пароль администратора.
  4. Проверить изменение владельцаls -l <path> отобразит нового владельца и группу.
  5. Повторить с sudo, если необходимо Если ошибка сохраняется, возможно, файл помечен как неизменяемый.

Способ 2: Удалить флаг immutable

Если файл помечен как неизменяемый (chattr +i), сначала удалите этот флаг:

sudo chattr -i /path/to/file

После этого выполните команду chown, указанную в Способе 1.

Способ 3: Откорректировать политику SELinux/AppArmor

SELinux

sudo setsebool -P allow_chown_owner_interfere=1
sudo semanage fcontext -a -t user_home_dir_t "/path/to/.*"
sudo restorecon -Rv /path/to/

AppArmor

sudo aa-status | grep /path/to/file
sudo sed -i 's^/etc/apparmor.d/usr.bin.chown$^d' /etc/apparmor.d/usr.bin.chown
sudo apparmor_parser -R /etc/apparmor.d/usr.bin.chown
sudo apparmor_parser -W /etc/apparmor.d/usr.bin.chown

Способ 4: Использовать ACL для обхода ограничений

Если файл не позволяет изменить владельца, можно назначить права через ACL:

sudo setfacl -m u:<new_user>:rwX -m g:<new_group>:rwX /path/to/file

После этого выполните chown как обычно.

💡 Совет: ACL не меняют владельца напрямую, но дают вам необходимые права для выполнения chown.

Способ 5: Восстановить доступ через резервную копию или контейнер

Если все вышеперечисленные способы не помогли, можно:

  • Восстановить файл из резервной копии (если ошибка вызвана повреждением FS).
  • Выполнить команду в контейнере, где у вас есть права администратора, и затем скопировать восстановленный файл обратно.

Профилактика

  • Не запускайте скрипты от имени root, если это не обязательно.
  • Используйте правильный umask (umask 022), чтобы файлы создавались с подходящими правами.
  • Регулярно проверяйте права с помощью find /path -type f -perm /o=w -ls.
  • Избегайте использования chattr +i для обычных пользовательских файлов.
  • Настройте SELinux/AppArmor так, чтобы они не блокировали повседневную работу с файлами.
  • Ведите журнал изменений владельцев (auditd), чтобы отслеживать подозрительные попытки.

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

Что означает ошибка 'cannot change ownership' в Linux?
Можно ли исправить ошибку без прав администратора?
Как предотвратить повторение ошибки?

Полезное

Подключить sudo и запустить chown
Определить целевой пользователь/группу
Применить команду и ввести пароль
Проверить изменение владельца
Повторить с sudo, если необходимо

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