1、php能要有读取/etc/passwd和/etc/shadow文件的权限
2、知道linux密码的加密方法
3、用户登录时用linux密码的加密方法对用户输入的密码进行加密后于/etc/shadow文件中的密码进行比对,一致的可以登录通过
2、知道linux密码的加密方法
3、用户登录时用linux密码的加密方法对用户输入的密码进行加密后于/etc/shadow文件中的密码进行比对,一致的可以登录通过
调试欢乐多
模拟登录
要么将用户名和密码保存在数据库里,其实这是最简单的方式.但个人修改以后得同步更新,这是有点麻烦的事情.另一种方式,写一个脚本能模拟用户提交的过程,然后PHP来调用,这个到linux区去问,我记得有人实现过.
原有的用户都是LINUX下统一管理的,如果新的系统,另外建立用户的验证管理,在用户管理上的工作量就成倍增长!
语法: int popen(string command, string mode);
返回值: 整数
函数种类: 文件存取
内容说明
本函数执行指令开档,而该文件是用管道方式处理的文件。用本函数打开的文件只能是单向的 (只能读或只能写),而且一定要用 pclose() 关闭。在文件操作上可使用 fgets()、fgetss() 与 fputs()。若是开档发生错误,返回 false 值。
使用范例
<?
$fp = popen( "/bin/ls", "r" );
?>
参考
pclose() 似乎可行;
但如果php和验证用户的linux,不是同一个服务器,就不可行了;
定期把Linux下的账号信息跟数据库同步,
这种方法应该是最简单的。
认证的时候使用相同的加密方法,对比加密后密码和ID就可以了。PHP直接访问Linux下的用户信息不可取。