Ошибки

Permission denied в Linux: нет прав на файл или папку

Permission denied — «доступ запрещён»: у пользователя, от которого вы работаете, нет нужного права на файл или на папку, где он лежит. Исправляют это через sudo или сменой владельца. Ниже — как понять, что именно запрещено, и что выбрать.

Обновлено 10.10.2026≈ 5 мин чтения
Содержание 10

Что сделать прямо сейчас

  1. Если файл системный — в папках /etc или /usr, — повторите команду, поставив в начале sudo.
  2. Если вы записываете в файл через > или >>, sudo перед командой не поможет — используйте tee, как показано ниже.
  3. Если это файлы вашего сайта, удобнее один раз отдать их своему пользователю — способ 2.
  4. Если ошибка при запуске скрипта — ./script.sh: Permission denied, — смотрите отдельный разбор.

Как выглядит ошибка

touch: cannot touch 'file.txt': Permission denied
cp: cannot create regular file '/var/www/example.com/index.html': Permission denied
-bash: /etc/hosts: Permission denied

В начале строки — программа, которая не смогла выполнить действие: touch, cp или сам bash. Дальше — путь к файлу и причина. Если редактор nano не может сохранить файл и в его сообщении есть Permission denied, причина та же.

Почему так происходит

Linux проверяет права при каждом действии с файлом:

  • чтобы прочитать файл, нужно право r на файл;
  • чтобы изменить файл, нужно право w на файл;
  • чтобы создать, удалить или переименовать файл, нужно право w на папку, где он лежит;
  • чтобы добраться до файла, нужно право x на все папки на пути к нему.

Если хоть одного права нет, команда остановится с Permission denied. Системные файлы — в /etc и /usr — принадлежат root, и обычный пользователь не может их менять. Подробнее о правах — в справочнике Права на файлы в Linux: rwx, 644 и 755.

Как понять, каких прав не хватает

Узнайте, от какого пользователя вы работаете:

whoami

Посмотрите права на файл и на все папки на пути к нему:

namei -l /var/www/example.com/index.html

Команда выведет каждую папку пути и сам файл — с правами, владельцем и группой. Как читать ответ, рассказано в разборе 403 Forbidden. Если владелец — не вы, вы не в группе файла и в правах для остальных нет нужной буквы, прав не хватает.

Способ 1. Выполните команду через sudo

sudo cp index.html /var/www/example.com/

sudo выполняет команду от имени root — его права не ограничивают. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — так и должно быть: наберите пароль и нажмите Enter.

У способа есть минус: новые файлы будут принадлежать root. Если это файлы сайта, потом придётся менять владельца — командой Команда chown. Для своих рабочих папок удобнее способ 2.

Если sudo отвечает, что пользователя нет в файле sudoers, — разбор этой ошибки.

Почему sudo echo не работает

sudo echo "203.0.113.10 example.com" >> /etc/hosts
-bash: /etc/hosts: Permission denied

sudo здесь получает только команду echo. Запись в файл через >> выполняет bash — от вашего имени, без прав root. Чтобы записать в системный файл, передайте текст команде tee, запущенной через sudo:

echo "203.0.113.10 example.com" | sudo tee -a /etc/hosts

Ключ -a дописывает строку в конец файла. Без него tee заменит всё содержимое файла — не забывайте его. tee повторит строку на экране — это нормально, файл записан.

Способ 2. Сделайте себя владельцем

Если вы работаете с файлами в одной папке — например, загружаете сайт, — отдайте её своему пользователю:

sudo chown -R ivan:ivan /var/www/example.com

Вместо ivan подставьте имя из ответа whoami. После этого команды в этой папке работают без sudo. Так делают для сайтов из страниц HTML и картинок. Для WordPress владельцем должен быть пользователь PHP — смотрите инструкцию Права на файлы сайта на VPS.

Не отдавайте себе системные папки — /etc, /usr или /var целиком. Для них используйте sudo.

Чего не делать

Не ставьте права 777, чтобы ошибка ушла: так файл сможет поменять любой пользователь и любая программа на сервере. Почему это опасно — в справочнике Права на файлы.

Похожие ошибки доступа

ГдеЧто значитРазбор
SSH: Permission denied (publickey)Сервер не пустил по ключуРазбор
Docker: permission denied while trying to connectНет прав на docker.sockРазбор
nginx -t пишет Permission deniedПроверку запустили без sudoРазбор
Сайт отвечает 403 ForbiddenСервер отказал в доступе к страницеРазбор
MySQL: Access denied for userБаза не приняла пользователя или парольРазбор
./script.sh: Permission deniedУ скрипта нет права xРазбор
Operation not permittedДействие разрешено только владельцу или rootРазбор

Команды сверены со справкой Ubuntu 24.04, тексты ошибок — с исходным кодом coreutils 9.4 и bash 5.2.

Источники

Сверено 10 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 10.10.2026