Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以让PHP脚本使用Linux用户信息对用户进行身份验证?_Php_Linux_Authentication_Login - Fatal编程技术网

是否可以让PHP脚本使用Linux用户信息对用户进行身份验证?

是否可以让PHP脚本使用Linux用户信息对用户进行身份验证?,php,linux,authentication,login,Php,Linux,Authentication,Login,我目前正试图为我的公司扩展我的PHP驱动的内部网站。它本质上是一堆我在内部Web服务器上集成并链接到的杂项报告和实用程序。每当人们希望完成相同的任务时,如果可能的话,我会编写脚本,并在内联网页面上公布,这样人们就可以在没有我帮助的情况下完成任务 到目前为止,这是非常有效的,但是有一些实用程序需要仅限于经理之类的人。现在,我知道我可以创建一个完整的注册系统来验证用户身份,就像在公共网站上一样,但坦率地说,这对所有参与的人来说都是一件痛苦的事情。所有用户都已经在与apache相同的服务器上拥有Lin

我目前正试图为我的公司扩展我的PHP驱动的内部网站。它本质上是一堆我在内部Web服务器上集成并链接到的杂项报告和实用程序。每当人们希望完成相同的任务时,如果可能的话,我会编写脚本,并在内联网页面上公布,这样人们就可以在没有我帮助的情况下完成任务

到目前为止,这是非常有效的,但是有一些实用程序需要仅限于经理之类的人。现在,我知道我可以创建一个完整的注册系统来验证用户身份,就像在公共网站上一样,但坦率地说,这对所有参与的人来说都是一件痛苦的事情。所有用户都已经在与apache相同的服务器上拥有Linux用户帐户,因此我认为如果我可以制作一个登录表单,根据用户的系统用户名/密码对用户进行身份验证,然后检查他们的组,看看他们是否有权执行他们试图执行的操作,那会更好(在这种情况下,他们将属于已经存在的“管理者”组)。如果我能做到这一点,对每个人来说似乎都是双赢的。用户不必注册并记住/维护/更新另一组凭据,我也不必在添加或删除用户时做任何额外的事情


这是可能的吗?如果没有现成的库可以这样做,我可以直接这样做,让PHP读入并处理/etc/passwd、/etc/shadow和/etc/group吗?

您需要确保Linux上有LDAP。PHP有很多用于身份验证的内置函数,例如:


要直接访问Linux的身份验证系统,您可以查看使用PAM模块:

根据文档,您需要配置pam以允许php访问它。之后,您可以调用pam_auth函数来验证用户名/密码组合:

if (pam_auth($username, $password))
{
    // SUCCESS!!!
}
else
{
    // FAILURE :(
}

这是唯一的方法吗?我不在我们的系统上使用LDAP,因为我们是一家小公司,而且这似乎还需要PHP重新编译LDAP支持。我确信还有其他方法,LDAP不是一件很重的事情,我已经实现了它,它相当小的组,这不是什么大问题。重复:这正是我登录所需要的。我知道了正在工作,但还有一个问题,关于组我该怎么办?如何使用PHP查看用户是否属于某个组?有没有比处理系统输出(“组$username”)更优雅的方法?