Что означает ошибка PAM Permission denied
PAM (Pluggable Authentication Modules) возвращает сообщение Permission denied, когда пользователь пытается войти в систему, выполнить команду (sudo, ssh, su) или запустить программу, но система не может предоставить необходимые права.
Полный текст ошибки может выглядеть так:
[PAM] authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.10 user=<username>
[error: permission denied]
Ошибка появляется в /var/log/auth.log (или journalctl -u systemd-logind) сразу после неудачной попытки входа или запуска команды.
Причины возникновения
- Неправильные правила PAM – ошибки в файлах
/etc/pam.d/*(лишние пробелы, отсутствующие модули или неверные параметры). - Недостаток прав у пользователя – пользователь не добавлен в группу
sudoили ему не предоставлены необходимые разрешения на выполнение команды. - Поврежденные библиотеки PAM – битые файлы
libpam.soили зависимые библиотеки. - Неверные права доступа на файлы конфигурации – файлы
/etc/pam.d/или/var/log/auth.logпринадлежат не root или имеют избыточные права. - Кэшированные устаревшие учетные данные – кэш PAM (
authcache,gpasswd) содержит устаревшие данные, что приводит к конфликтам.
Способы решения
Способ 1: Проверка и исправление конфигурации PAM
- Откройте основной файл аутентификации:
sudo nano /etc/pam.d/common-auth - Убедитесь, что директивы выглядят так (пример для Ubuntu):
auth [success=done default=bad] pam_unix.so nullok_secure auth requisite pam_succeed_if.so user != 'nobody' 2>/dev/null auth required pam_deny.so - Сохраните изменения и выйдите.
- Запустите утилиту обновления PAM:
sudo pam-auth-update --test - Перезапустите службу аутентификации:
sudo systemctl restart systemd-logind
Способ 2: Восстановление прав на файлы PAM
- Установите правильные права для всех файлов в
/etc/pam.d/:sudo chmod 644 /etc/pam.d/* sudo chown root:root /etc/pam.d/* - Проверьте права доступа:
ls -l /etc/pam.d/ - Также убедитесь, что
/var/log/auth.logпринадлежит root и имеет права 644:sudo chmod 644 /var/log/auth.log sudo chown root:root /var/log/auth.log
Способ 3: Перезапуск службы аутентификации
- Перезапустите службу, ответственную за вход в систему:
sudo systemctl restart systemd-logind - Проверьте статус службы:
sudo systemctl status systemd-logind - Если служба не запустилась, проверьте логи:
sudo journalctl -u systemd-logind --no-pager -n 20
Способ 4: Проверка прав пользователя и группы
- Проверьте текущие группы пользователя:
id <username> - Если пользователь не в группе
sudo, добавьте его:sudo usermod -aG sudo <username> - Проверьте, какие команды доступны пользователю:
sudo -l -U <username> - Закончите сеанс
sudo(если вы вошли как root) или выйдите и войдите снова.
Профилактика
- Регулярно обновляйте систему –
sudo apt update && sudo apt upgrade(или эквивалент для дистрибутива). - Проверяйте конфигурацию PAM после установки пакетов –
sudo pam-auth-update --test. - Используйте аудит – настройте
auditdдля отслеживания неудачных попыток аутентификации (auditctl -w /etc/pam.d/ -p wa -k pam_changes). - Создавайте резервные копии – скопируйте
/etc/pam.d/в безопасное место (cp -r /etc/pam.d/ /root/pam_backup/).
Часто задаваемые вопросы
Что делать, если ошибка PAM Permission denied появляется сразу после обновления системы?
Почему ошибка возникает только при выполнении конкретной команды?
Как проверить, что ошибка вызвана поврежденными библиотеками PAM?
Полезное
Проверка журнала аутентификации PAM
Восстановление прав на файлы конфигурации PAM
Перезапуск службы аутентификации
Проверка прав пользователя и группы