2010-09-21 4 views
5

Digamos que quería crear algo así como cómo funciona cPanel, usa el nombre de usuario y la contraseña del sistema.¿Cómo usaría PHP para autenticar con usuarios y contraseñas de Linux?

Puede ejecutar 'user password' en el servidor y la contraseña a pesar de ello trabajar con cPanel y FTP (no necesariamente MySQL, pero usted consigue el punto)

¿Cómo puedo lograr esto en PHP? No tengo la menor idea, además de ejecutar/bin/su localmente y ejecutarlo desde allí. Con eso, podría ser inexacto sin embargo ... Normalmente tengo algunos de mis desarrolladores en una subcuenta o en la raíz desarrollando algo.

¡Cualquier idea sería muy apreciada, gracias! :)

+1

¿Desea (1) autenticarse con el nombre de usuario/contraseñas del sistema o (2) realmente ejecutar el código de un servidor web como el usuario específico? – Wrikken

+0

Me gustaría autenticar con el nombre de usuario y la contraseña. Gracias – Billy

Respuesta

6

PAM: http://pecl.php.net/package/PAM

En 'paquetes Debian/Buntu, es probable que sea tan fácil como instalar php5-auth-pam, y el uso de la función:

pam_auth($username,$password,$error); 

Aunque parece depender php4 sobre la sintaxis antigua, porque me da un error si no utilizo la forma obsoleta de pasar por referencia al momento de llamadas:

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

Gracias, no he visto este módulo antes. Voy a experimentar con eso y ver cómo funciona. – Billy

+0

Un poco anticuado, pero, ¿pueden acceder estas cuentas al archivo shadow? Quiero sincronizar con las cuentas que ya están en el servidor para simplemente autenticar con una aplicación web. – kevingreen

+1

Sí, puedo confirmar localmente que funciona de fábrica con Debian + php5-auth-pam + shadow file, por lo que probablemente en la mayoría de los archivos basados ​​en linux. – Wrikken

0

no está muy claro lo que quiere Authe nticate En cualquier caso, se puede usar PAM con PHP: http://pecl.php.net/package/PAM

No es que la función de PHP: posix_getpwnam

Se podría utilizar ese bastante sencillo así.

Cuestiones relacionadas