- Краткий ответ
- Почему возникает Permission denied
- Пошаговое решение
- 1. Проверяем права доступа
- 2. Добавляем право на выполнение
- 3. Смена владельца (если файл принадлежит другому пользователю)
- 4. Запуск с правами суперпользователя
- 5. Проверка SELinux / AppArmor (CentOS, RHEL, Ubuntu)
- 6. Проверка монтированных томов
- Альтернативные способы решения
- Частые ошибки
- FAQ
- Q1. Почему chmod не помогает?
- Q2. Почему sudo не решает проблему?
- Q3. Можно ли отключить права?
- Q4. Почему ошибка на USB или внешнем диске?
- Q5. Как безопасно дать права на выполнение?
- Заключение
- Полезные ссылки
Ошибка Permission denied в Linux это одна из самых распространённых проблем для начинающих и опытных пользователей. Она возникает, когда у пользователя нет прав на выполнение команды, доступ к файлу или папке. В этой статье разберём пошаговое решение, альтернативные способы исправления и частые ошибки, чтобы вы навсегда забыли о проблеме с правами доступа.

Краткий ответ
Если появляется ошибка Permission denied, выполните следующие действия:
ls -l filename # проверка прав доступа
chmod +x filename # дать права на выполнение
sudo chown user:user filename # смена владельца sudo <команда> # запуск с правами суперпользователя
В большинстве случаев этого достаточно для устранения ошибки. Если проблема не решилась, тогда читайте инструкцию ниже.
Почему возникает Permission denied
- Нет прав на выполнение файла или скрипта это значит, что файл может существовать, но без права на запуск.
- Нет прав на запись или чтение – например, вы пытаетесь изменить системный файл без sudo.
- Файл принадлежит другому пользователю – даже
rootне всегда может записывать, если используется SELinux или ограниченный mount. - Запуск без sudo – некоторые команды требуют суперпользователя.
- SELinux или AppArmor ограничения – в CentOS/RHEL или Ubuntu могут блокировать действия даже для владельца.
- Ошибки с путями и скриптами – неправильные shebang, CRLF в скриптах из Windows, noexec в монтированных томах.
Пошаговое решение
1. Проверяем права доступа
ls -l file.sh
Вывод покажет права и владельца:
-rw-r--r-- 1 user user 1024 Feb 21 14:33 file.sh
Здесь:
- rw- — права владельца (чтение и запись)
- r– — права группы (только чтение)
- r– — права остальных (только чтение)
2. Добавляем право на выполнение
chmod +x file.sh
+x — разрешает выполнение скрипта.
Проверяем:
ls -l file.sh
Теперь должно быть -rwxr--r--.
3. Смена владельца (если файл принадлежит другому пользователю)
sudo chown username:username file.sh
username – ваш пользователь в системе.
Это важно для работы с файлами в общем доступе или после копирования из другого аккаунта.
4. Запуск с правами суперпользователя
sudo nano /etc/hosts sudo apt update
⚠️ Помните: sudo нужно использовать только для системных изменений.
5. Проверка SELinux / AppArmor (CentOS, RHEL, Ubuntu)
getenforce
Enforcing – SELinux активен, может блокировать доступ.
Временно можно переключить:
sudo setenforce 0
Но лучше правильно настроить контекст.
6. Проверка монтированных томов
Если ошибка при работе с флешкой или внешним диском:
mount | grep /mnt/usb
Опция noexec запрещает выполнение файлов.
Монтируйте с exec или копируйте файлы на локальный диск.
Альтернативные способы решения
- Использовать графический файловый менеджер с sudo (например,
sudo nautilus). - Переписать скрипт в домашней директории.
- Проверить и исправить CRLF, если скрипт скопирован из Windows:
dos2unix file.sh
Частые ошибки
| Ошибка | Почему плохо |
|---|---|
| chmod 777 file | Дает всем полные права – угроза безопасности |
| Работа без понимания root | Можно сломать систему |
| Изменение системных папок | Может нарушить работу OS |
| Игнорирование SELinux/AppArmor | Файлы будут блокироваться даже с chmod |
FAQ
Q1. Почему chmod не помогает?
Возможно, файл на смонтированном томе с опцией noexec или принадлежит другому пользователю.
Q2. Почему sudo не решает проблему?
Если SELinux активен или mount noexec, права sudo не помогут.
Q3. Можно ли отключить права?
Нет, это нарушает безопасность. Лучше исправлять права и владельца корректно.
Q4. Почему ошибка на USB или внешнем диске?
Чаще всего noexec или файловая система NTFS/FAT32 без поддержки Unix-пермиссий.
Q5. Как безопасно дать права на выполнение?
Используйте chmod +x только на нужных файлах, не на системных папках.
Заключение
И в заключении хочу сказать, что ошибка Permission denied почти всегда связана с правами доступа или владельцем файла. Пошаговые решения: проверить права (ls -l), добавить выполнение (chmod +x), сменить владельца (chown), использовать sudo и учитывать SELinux/опции монтирования.
С правильными командами и подходом вы сможете быстро решать ошибки доступа в Linux, не нарушая безопасность системы.
Полезные ссылки
- Как использовать chmod в Linux
- su и sudo: какая разница, полезные примеры
- Случайное удаление файлов root
Понравилась статья?
Помогите Setiwik.ru создавать больше глубоких обзоров и новостей. Один клик и ваш вклад помогает держать серверы включёнными и авторов мотивированными!
Поддержать проектСпасибо, что вы с нами!



