Permission denied в Linux: нет прав на файл или папку
Permission denied — «доступ запрещён»: у пользователя, от которого вы работаете, нет нужного права на файл или на папку, где он лежит. Исправляют это через sudo или сменой владельца. Ниже — как понять, что именно запрещено, и что выбрать.
Содержание 10
Что сделать прямо сейчас
- Если файл системный — в папках /etc или /usr, — повторите команду, поставив в начале
sudo. - Если вы записываете в файл через
>или>>, sudo перед командой не поможет — используйте tee, как показано ниже. - Если это файлы вашего сайта, удобнее один раз отдать их своему пользователю — способ 2.
- Если ошибка при запуске скрипта —
./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 deniedsudo здесь получает только команду 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.
Чего не делать
Не ставьте права 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.
Источники
- Справка Linux: path_resolution(7) — право x на каждую папку пути и права root.
- Исходный код coreutils 9.4: touch.c — текст cannot touch.
- Исходный код coreutils 9.4: copy.c — текст cannot create regular file.
- Исходный код bash 5.2: redir.c — ошибку записи через > и >> печатает сам bash.
- Справка tee для Ubuntu 24.04 — ключ -a дописывает в конец файла.
- Справка namei для Ubuntu 24.04 — ключ -l.
- Руководство GNU Coreutils: Mode Structure — что значат r, w и x для файлов и папок.
Сверено 10 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 10.10.2026