1. pecl上有一个用于php的pam验证模块,提供了两个php接口函数:
bool pam_auth(string $username, string $password [, string &$error ])
bool pam_chpass(string $username, string $oldpassword, string $newpassword [, string &$error ])
分别用来做用户认证和更改用户密码。
2. 该模块的安装步骤如下:
2.1. 到http://pecl.php.net/package/PAM上下载压缩包;
2.2. 解压之后,进入目录运行phpize;[1]
2.3. ./configure&&make&&make install;[2]
2.4. 修改php.ini,增加一行extension=pam.so,修改之后记得重启httpd,此时通过phpinfo()应该可以看到pam模块已被激活;
2.5. 在/etc/pam.d/下新增一文件php,内容如下:
auth required pam_unix_auth.so
account required pam_unix_acct.so
account required pam_tally.so
2.6. 修改shadow属性为组可读,并将其group改为httpd运行者所在group;[3]
2.7. 使用如下php脚本测试,如果验证通过则说明安装以及配置成功。
<?php
$user=用户名;
$pass=密码;
if(pam_auth($user, $pass, &$error))
{
echo “Successfully Authenticated!<br>”;
}
else
{
echo “Authentiocation Failure: ”.$error.”<br>”;
}
?>
***注意:
[1],phpize一般位于:“php安装目录下/bin”下;
[2],configure过程中如果报告无法找到php-config,使用configure --with-php-config=”php安装目录/bin/php-config”,并确保php-config为可执行。如果报告无法找到pam,使用yum安装pam-devel;
[3],做这样的修改,应该要考虑到由此带来的安全隐患;
[4],如果发现问题,可以查看httpd的日志(err_log),系统日志(messages),系统安全日志(secure)来发现问题的原因。