![无法使 PHP PAM 身份验证正常工作](https://linux22.com/image/502455/%E6%97%A0%E6%B3%95%E4%BD%BF%20PHP%20PAM%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C.png)
这个问题在 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 吗?我并不是想让用户登录到系统本身,我只需要让用户使用他们的系统用户/密码登录到我的脚本,并检查他们是否属于适当的组以运行给定的报告。
答案1
您应该使用 pam_unix 而不是 pam_pwdb 您正在使用哪种操作系统/发行版?
答案2
看起来你的 /lib/security/pam_pwdb.so 文件不存在