Главная
|
Услуги и цены
VDS
Выделенные серверы
Размещение сервера
|
F.A.Q
|
О компании
|

Как исправить ошибку "Permission Denied" в Linux: Ответы на частые вопросы


Ошибка Permission Denied в Linux означает, что текущий пользователь не имеет прав на выполнение действия — доступ к файлу, запуск команды или подключение к серверу.
Эта ошибка может появляться в самых разных ситуациях: при работе с SSH, Docker, веб-серверами, скриптами и просто при попытке открыть файл.

В этом руководстве вы найдёте ответы на самые распространённые вопросы, связанные с этой ошибкой, и пошаговые способы её устранения.
  • 1. Ошибка при запуске скрипта
  • 2. Нет доступа к файлу или папке
  • 3. Ошибка при подключении по SSH
  • 4. Ошибка с Docker
  • 5. Проблема с Nginx
  • 6. SELinux и CentOS
  • 7. Рекомендации для владельцев VDS
  • 8. Заключение

Почему возникает "Permission Denied" при запуске скрипта?


Наиболее частая причина — у файла нет прав на выполнение.
Подробнее о правах писали в статье Мини-гайд по правам доступа в Linux

Проверьте:
    ls -l script.sh
    

Если отсутствует флаг x, дайте разрешение:
    chmod +x script.sh
    

Если файл принадлежит другому пользователю, используйте:
    sudo chown ваш_пользователь:группа script.sh
    

Не получается получить доступ к файлу или папке — что делать?


Проблема может быть связана с правами доступа или владельцем объекта.

Проверьте текущие права:
    ls -l /путь/к/файлу
    

Измените права доступа:
    chmod 644 /путь/к/файлу
chmod 755 /путь/к/каталогу
    

Измените владельца:
    sudo chown user:group /путь/к/файлу
    

Почему появляется ошибка при подключении по SSH?


Сообщение Permission denied (publickey) говорит о том, что система отклонила ключ.

Решения:
1. Установите корректные права:
    chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown $USER:$USER ~/.ssh ~/.ssh/authorized_keys
    
2. Убедитесь, что домашняя папка имеет безопасные права:
    chmod 755 ~/
    
3. Проверьте настройки SSH-сервера:
    PubkeyAuthentication yes
PermitRootLogin no
    
4. Перезапустите SSH:
    sudo systemctl restart sshd
    

Как исправить "Permission Denied" при работе с Docker?


Часто ошибка возникает при монтировании директорий или запуске контейнера от имени неподходящего пользователя.

1. Убедитесь, что том доступен:
    chown -R $USER:$USER /путь/к/тому
chmod -R 755 /путь/к/тому
    
2. Уточните пользователя при запуске контейнера:
    docker run --user $(id -u):$(id -g) -v /путь/к/тому:/app image_name
    
3. Добавьте пользователя в группу Docker:
    usermod -aG docker $USER
    

После этого необходимо перезайти в систему.

Nginx выдаёт "Permission Denied". Что делать?


После установки Nginx может возникать ошибка, связанная правами доступа.
Ошибка может быть связана с правами на директории сайта или дополнительной защитой системы (например, SELinux или AppArmor).

1. Установите владельца и права на веб-директорию:
    chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
    
2. Убедитесь, что в nginx.conf указан правильный пользователь:
    user www-data;
    
3. Проверьте SELinux (для CentOS):
    sestatus
ls -Z /var/www/html
chcon -R -t httpd_sys_content_t /var/www/html
    
4. Проверка логов поможет выявить точную причину:
    tail -f /var/log/nginx/error.log
    

Как устранить "Permission Denied" в CentOS с SELinux?


В CentOS включён SELinux, который может ограничивать доступ даже при корректных UNIX-правах.
1. Проверка статуса:
    sestatus
    
2. Временное отключение для теста:
    setenforce 0
    
3. Установка нужного контекста:
    chcon -R -t httpd_sys_content_t /путь/к/каталогу
    
4. Создание постоянного правила:
    semanage fcontext -a -t httpd_sys_content_t "/путь(/.*)?"
restorecon -R /путь
    

Рекомендации для владельцев VDS


- Не запускайте процессы от имени root без необходимости: Создание и управление пользователями в Linux
- Используйте разные системные аккаунты и группы для разных сервисов.
- Ограничьте доступ к конфигурационным файлам и ключам.
- Настраивайте SELinux/AppArmor только при чётком понимании последствий.
- Проверяйте и анализируйте логи ошибок: Где и как смотреть логи в Linux
- Перед внесением изменений делайте резервные копии.

Заключение


Ошибка Permission Denied — одна из базовых, но в то же время самых многогранных в Linux.
Она требует внимательной проверки прав, владельцев, контекстов безопасности и конфигураций.
Следуя предложенным рекомендациям, вы сможете быстро определить источник проблемы и безопасно её устранить.

Если вы арендуете VDS, убедитесь, что все сервисы работают от правильных пользователей, а доступ к файлам и папкам ограничен только необходимыми правами.
logo
© 2022 62yun
Все права защищены
vk.com/62yuncom
support@62yun.ru
logo
vk.com/62yuncom
support@62yun.ru
Услуги
VDS Выделенные серверы
Полезное
F.A.Q О компании Политика конфиденциальности Оферта
Способы оплаты
wechatpay visa mastercard
MirAccept
Партнеры
25port
© 2022 62yun Все права защищены
ВВЕРХ