1、php能要有读取/etc/passwd和/etc/shadow文件的权限
2、知道linux密码的加密方法
3、用户登录时用linux密码的加密方法对用户输入的密码进行加密后于/etc/shadow文件中的密码进行比对,一致的可以登录通过

解决方案 »

  1.   

    popen('su 用户名')
    模拟登录
      

  2.   

    这个太不安全了,呵呵.
    要么将用户名和密码保存在数据库里,其实这是最简单的方式.但个人修改以后得同步更新,这是有点麻烦的事情.另一种方式,写一个脚本能模拟用户提交的过程,然后PHP来调用,这个到linux区去问,我记得有人实现过.
      

  3.   

    其实,本身这个想法就是危险的。PHP的应用何必要绑定到Linux本身的用户机制?你完全可以用Apache本身的验证机制,创建一个密码文件就可以了,修改一下要访问的目录的.htaccess就可以了……
      

  4.   

    最好用LDAP如果仅仅是个认证,不需要跟其他系统服务整合的话,3楼的方案很可行。
      

  5.   


    原有的用户都是LINUX下统一管理的,如果新的系统,另外建立用户的验证管理,在用户管理上的工作量就成倍增长!
      

  6.   

    打开文件。
    语法: int popen(string command, string mode);
    返回值: 整数
    函数种类: 文件存取
     
    内容说明 
    本函数执行指令开档,而该文件是用管道方式处理的文件。用本函数打开的文件只能是单向的 (只能读或只能写),而且一定要用 pclose() 关闭。在文件操作上可使用 fgets()、fgetss() 与 fputs()。若是开档发生错误,返回 false 值。
     
    使用范例 
    <?
    $fp = popen( "/bin/ls", "r" );
    ?> 
     
    参考 
    pclose()  似乎可行;
    但如果php和验证用户的linux,不是同一个服务器,就不可行了;
      

  7.   


    定期把Linux下的账号信息跟数据库同步,
    这种方法应该是最简单的。
    认证的时候使用相同的加密方法,对比加密后密码和ID就可以了。PHP直接访问Linux下的用户信息不可取。
      

  8.   

    如果是公司内部的账号管理,LDAP最好。刚开始可能工作量大一点,但是可以为今后扩展留下空间。