Autenticazione a linux da php

catellostefano

Utente Attivo
19 Dic 2008
525
2
0
www.stepo.biz
ciao a tutti scusate della mia assenza,

dovrei chiedervi una cosetta, io ho creato un form con il campo user e pass, ora deve effettuare l'autenticazione dei utenti linux, cioè invece di confrontare i dati postati con un database, li deve confrontare con utenti reali di linux!

come faccio??

grazie
 
no forse mi sono spiegato io male.

io dalla pagina login.php (visibile a browser), devo andare alla pagina panel.php solo se ho effettuato l'accesso "di sistema", cioè l'user è di sistema e non uno virtuale su db
 
guarda l'ho instalalto correttamente, ma la pagina php mi restituisce questo errore

Codice:
Fatal error: Call to undefined function pam_auth() in /home/sistem/panel/funzioni/login.php  on line 10

ecco la pagina

PHP:
<?php

$nomeutente = $_POST['nomeutente'];
$password = $_POST['password'];

// controllo sul parametro d'invio
if($_POST['user']!="")
	{ 

		if (pam_auth($username, $password))
		   {
			$_COOKIE['login'] = $nomeutente;
			@header("Location: ?page=home");
		   }
		else
		   {
			$testopagina = '<p>password non corretta. <a href="?page=login" onclick="history.back();">Torna indietro</a></p>';
		   }
	}
else
	{

//Prendo i dati del form
$titolo= 'titolo';

$pagetext = '
<div id="wrap">
	<div id="top"></div>

 	<div id="mid">
		<div id="content-wrap" align="center"> 

			<form action="" method="post" target="_top">
			    <table width="200" class="login" cellpadding="0" cellspacing="0">
			        <tr>

			            <td align="left"><b>Login</b></td>
			            <td>&nbsp;</td>

			        </tr>
			        <tr>

			            <td>Username</td>
			            <td><input id="user" type="text" name="user" size="16" tabindex="1"></td>

			        </tr>
			        <tr>

			            <td>Password</td>
			            <td><input id="pass" type="password" name="pass" size="16" tabindex="2"></td>

			        </tr>
			        <tr>
			            <td colspan="2" style="text-align: center"><input type="submit" value="Login"></td>
			        </tr>
			    </table>
			    <input type="hidden" name="goto_uri" value="/" />
			</form>

		</div>
	</div>
	<div id="bot"></div>
	&copy; IsPanel. 2010
</div>';

	}

?>
 
la funzione pam_auth() sta nel percorso "inc/auth/pam.class.php", prova a fare un'inlude all'inizio della pagina.
 
Codice:
Warning: include_once(inc/auth/pam.class.php) [function.include-once]: failed to open stream: No such file or directory in /home/sistem/panel/funzioni/login.php  on line 6

Warning: include_once() [function.include]: Failed opening 'inc/auth/pam.class.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/sistem/panel/funzioni/login.php on line 6

ero sicuro che me lo restituiva ho fatto
Codice:
cd inc
da ssh su linux, e diceve che non c'è nulla
 
scusate se rispondo ora ma sai le ferie:p:p

comunque ho installato per bene PAM, e questo è il codice della pagina

PHP:
<?php

$nomeutente = $_POST['user'];
$password = $_POST['pass'];

if($_POST['user']!="")
	{ 
		if (pam_auth($nomeutente, $password))
		   {
			$_COOKIE['nomeutente'] = $nomeutente;
			@header("Location: ?page=home");
		   }
		else
		   {
			print '<p>password non corretta. <a href="?page=login" onclick="history.back();">Torna indietro</a></p>';
		   }
	}
else
	{
		print '<center><br><br><br>
			<form action="" method="post" target="_top">
			    <table width="200" class="login" cellpadding="0" cellspacing="0">
			        <tr>

			            <td align="left"><b>Login</b></td>
			            <td>&nbsp;</td>

			        </tr>
			        <tr>

			            <td>Username</td>
			            <td><input id="user" type="text" name="user" size="16" tabindex="1"></td>

			        </tr>
			        <tr>

			            <td>Password</td>
			            <td><input id="pass" type="password" name="pass" size="16" tabindex="2"></td>

			        </tr>
			        <tr>
			            <td colspan="2" style="text-align: center"><input type="submit" value="Login"></td>
			        </tr>
			    </table>
			    <input type="hidden" name="goto_uri" value="/" />
			</form></center>';
	}
?>

ma mi dà sampre password incorretta.
 
Ora che ci penso non dovresti aver bisogno di alcuna estensione. Puoi fare così:
PHP:
<?php
shell_exec('su - username');
shell_exec('password');

echo shell_exec('whoami');
?>
Se tutto va bene dovrebbe restituirti lo username con cui hai effettuato il login.
 
Al posto di:
PHP:
if(pam_auth($nomeutente, $password))
Prova ad utilizzare questo:
PHP:
shell_exec("su - {$nomeutente}");
shell_exec($password);

if(shell_exec('whoami') == $nomeutente)
Ricordati di eseguire il logout se dopo devi eseguire qualche altro comando da shell, altrimenti lo eseguirai come se fossi loggato con l'account specificato.
 

Discussioni simili