Этот вопрос разделен между сферами SO и SF. Это для проекта кодирования, но я считаю, что ошибка, с которой я сталкиваюсь, больше связана с системным администрированием, чем с кодом, поэтому я помещу ее здесь.
Я пытаюсь создать страницу входа в систему PHP, которая аутентифицирует пользователей в их уже существующих системных учетных записях. Я установил модуль аутентификации php5 pam и, следуя документации, настроил его.
Я создал /etc/pam.d/php со следующим содержимым:
# /etc/pam.d/php
#
# note: both an auth and account entry are required
auth sufficient /lib/security/pam_pwdb.so shadow nodelay
account sufficient /lib/security/pam_pwdb.so
Я добавил "pam.servicename =" php ";" в мой файл /etc/php5/apache2/php.ini, а затем перезапустил службу apache.
Каждый раз, когда мой скрипт использует функцию pam_auth, в моем журнале auth.log появляется следующее:
Jan 6 08:56:33 cobalt apache2: PAM unable to dlopen(/lib/security/pam_pwdb.so)
Jan 6 08:56:33 cobalt apache2: PAM [error: /lib/security/pam_pwdb.so: cannot open shared object file: No such file or directory]
Jan 6 08:56:33 cobalt apache2: PAM adding faulty module: /lib/security/pam_pwdb.so
Как я могу это исправить? Для чего-то столь же простого (по крайней мере, я так думал), должен ли я просто написать свои собственные функции для анализа / etc / shadow и / etc / passwd? Я не пытаюсь зарегистрировать пользователя в самой системе, мне просто нужно разрешить пользователю войти в мой скрипт со своим системным пользователем / паролем и проверить, что они принадлежат к соответствующей группе для запуска данного отчета.
Вы должны использовать pam_unix вместо pam_pwdb Какую ОС / дистрибутив вы используете?
Похоже, ваш файл /lib/security/pam_pwdb.so не существует