这个问题分为 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 文件不存在