如何使用PHP对Linux用户和密码进行身份验证?

如何使用PHP对Linux用户和密码进行身份验证?,php,linux,authentication,Php,Linux,Authentication,假设我想创建类似cPanel的工作方式,它使用系统中的用户名和密码 您可以在服务器上运行“passwd user”,密码仍然可以与cPanel和FTP一起使用(不一定是MySQL,但您明白这一点) 我将如何在PHP中实现这一点?除了在本地运行/bin/su并从中运行之外,我一点也不知道。这样的话,它可能是不准确的。。我通常会让我的几个开发人员以子帐户或根帐户的形式开发一些东西 如果您有任何想法,我们将不胜感激,谢谢!:) PAM: 在Debian/'buntu软件包中,安装php5 auth p

假设我想创建类似cPanel的工作方式,它使用系统中的用户名和密码

您可以在服务器上运行“passwd user”,密码仍然可以与cPanel和FTP一起使用(不一定是MySQL,但您明白这一点)

我将如何在PHP中实现这一点?除了在本地运行/bin/su并从中运行之外,我一点也不知道。这样的话,它可能是不准确的。。我通常会让我的几个开发人员以子帐户或根帐户的形式开发一些东西

如果您有任何想法,我们将不胜感激,谢谢!:)

PAM:

在Debian/'buntu软件包中,安装php5 auth pam并使用以下功能可能同样简单:

pam_auth($username,$password,$error);
虽然它似乎依赖于古老的php4语法,但如果在调用时不使用不推荐的通过引用传递的方式,则会出现错误:

if(!pam_auth($username,$password,&$error)){
    echo 'No access, PAM said: '.$error;
}

您想要验证什么还不是很清楚。在任何情况下,您都可以将PAM与PHP结合使用:

有一个PHP函数: 波西斯努格普夫南酒店


您也可以直接使用它。

您想(1)使用系统用户名/密码进行身份验证,还是(2)作为特定用户从Web服务器实际运行代码?我想使用用户名和密码进行身份验证。谢谢你,我以前没看过这个模块。我将对它进行实验,看看它是如何运行的。有点过时了,但是,这个可以访问影子文件中的帐户吗?我想与服务器上已经存在的帐户同步,以便使用web应用程序进行简单的身份验证。是的,我可以在本地确认它在debian+php5 auth pam+shadow文件中是开箱即用的,所以可能在大多数基于linux的OSSE上都是如此。当我尝试使用它时,我发现对于LAMP系统,apache运行的是非root用户(当然!),如果不允许apache用户访问linux操作系统的root-only安全部分中的pam_passwd,或者更好的pam_tally*,则无法使用此方法。但服务器管理员不会这样做,因为这会为任何黑客打开缺口和邀请。我说的对吗?@FlorianMertens:需要的是用户是root用户或正在进行身份验证的用户,或者能够读取/etc/shadow文件。在Debian中,只需向apache用户添加
shadow
组即可。“a”sysadmin是否会这样做:我会在其他受保护的框上(不可能直接进行ssh访问,ssh访问需要有效的密钥、适当的防火墙、非共享、正常的用户权限、Web服务器中其他受信任的代码等)。为了安全起见,可以运行deamon来回答apache用户的问题。但需要明确。