Введение
Ошибка Permission denied — одна из самых распространённых проблем в Linux. Она возникает, когда вы пытаетесь прочитать, записать или удалить файл, к которому у текущего пользователя отсутствуют права доступа. В этом гайде вы узнаете, как быстро диагностировать причину и вернуть доступ с помощью трёх базовых инструментов: ls, chown и chmod. После выполнения этих шагов вы сможете свободно работать с файлами и директориями без непредвиденных сбоев.
Требования
- Доступ к терминалу с правами обычного пользователя (желательно с возможностью выполнения команд
sudo). - Понимание базовых понятий о владельцах (
owner), группах (group) и режимах доступа (permissions). - Путь до проблемного файла или директории под рукой (например,
/home/user/documents/report.txt).
Пошаговая инструкция
Шаг 1: Определите владельца и текущие разрешения
Сначала посмотрите, кто владеет файлом и какие у него права.
ls -l /путь/к/файлу
Столбцы Субъект и Группа показывают владельца и группу, а Разрешения описывают доступ (чтение, запись, выполнение). Если вы — не владелец и не член группы, вам могут потребоваться права администратора (sudo).
Шаг 2: Измените владельца файла (если нужно)
Если проблема в неправильном владельце, перенесите файл к нужному пользователю или группе:
# Изменить владельца
sudo chown new_owner /путь/к/файлу
# Изменить только группу
sudo chown :new_group /путь/к/файлу
Замените new_owner и new_group на реальные имена пользователей или групп в системе.
Шаг 3: Установите необходимые права доступа
Теперь настройте права доступа с помощью chmod. Типичные режимы:
644(-rw-r--r--) — чтение всеми, запись только у владельца.755(drwxr-xr-x) — полный доступ для владельца, чтение/выполнение для остальных.
sudo chmod 644 /путь/к/файлу
# или для директории
sudo chmod 755 /путь/к/директории
Шаг 4: Проверьте результат
Повторите команду ls -l, чтобы подтвердить, что права изменились:
ls -l /путь/к/файлу
Ожидаемый вывод должен показать желаемые разрешения, например -rw-r--r--.
Шаг 5: Повторите для директорий, если требуется
Если ошибка возникает при работе с папкой (например, «Недостаточно прав для входа»), примените те же команды к директории:
sudo chmod 755 /путь/к/директории
Для строгой приватности используйте 700 (rwx------).
Проверка результата
После изменения прав повторите запрошенную операцию (запишите файл, запустите скрипт и т.д.). Если ошибка исчезла, всё работает корректно. Для уверенности вы можете проверить владельца и права ещё раз:
stat /путь/к/файлу
Возможные проблемы
- Недостаточно прав для выполнения
chmod– убедитесь, что у вас есть праваsudoили вы вошли как root. Используйтеsudoперед каждой командой. - Неправильный формат имени пользователя/группы – проверьте существование пользователя/группы:
id userиgetent group group. - Символьные ссылки –
chmodвлияет на саму ссылку, а не на целевой файл. Используйте-h, чтобы изменить права целевого файла:sudo chmod -h 644 /путь/к/ссылке. - ACL (расширенные права доступа) – в некоторых дистрибутивах используются ACL. Проверьте
getfacl, и если требуется, задайте права черезsetfacl.
Если ни один из способов не помог, проверьте системные логи: journalctl -u systemd-logind или сообщения ядра dmesg. Они могут указывать на более глубокие проблемы, например, заблокированный файловый системный блокнота.