Permission denied в Linux, как исправить ошибку доступа

Ошибка Permission denied в Linux это одна из самых распространённых проблем для начинающих и опытных пользователей. Она возникает, когда у пользователя нет прав на выполнение команды, доступ к файлу или папке. В этой статье разберём пошаговое решение, альтернативные способы исправления и частые ошибки, чтобы вы навсегда забыли о проблеме с правами доступа.

Как исправить Permission denied в Linux- пошаговое руководство
Как исправить 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, не нарушая безопасность системы.

Полезные ссылки

Понравилась статья?

Помогите Setiwik.ru создавать больше глубоких обзоров и новостей. Один клик и ваш вклад помогает держать серверы включёнными и авторов мотивированными!

Спасибо, что вы с нами!

Nazario
Nazario

Я — Nazario, тот самый человек, который больше десяти лет ковыряется в Linux и Windows системах не ради хобби, а потому что это — работа и жизнь. Всё, что вы читаете на Setiwik.ru, — это не пересказ справки из мануала, а результат десятков реальных кейсов, выстраданных конфигов и ночных перезагрузок.

Я не претендую на истину в последней инстанции. Но если мой опыт может кому-то упростить работу — значит, всё это не зря. Здесь нет «магии», только практика: от настроек сервера до неожиданных багов, которые не гуглятся с первого раза.

Setiwik.ru — это место, где IT становится чуть менее хаотичным. Заходите почаще — будем разбираться вместе.

Добавить комментарий