Não era bem isso...
Eu quero que se use a senha do usuário. só não queria que spawnasse o "password:"
pois estraga o script automático para ser rodado via página web. Queria alguma maneira
de passar como argumento para um switch user a senha digitada pelo usuário na página.
Pesquisando sobre isso, achei que teria como fazer isso com expect:
ver a reply desse tópico
http://www.computing.net/answers/unix/trouble-whit-command-su-/7127.htmlMas ainda não era bem o que eu precisava. Então para fazer a autenticação
criei o seguinte script (desconsiderar os echos no meio do script, que são meros testes de funcionamento)
#abrindo o arquivo de senhas
$file = '/etc/shadow'; /*ou então /etc/passwd observe que o usuário do apache precisa ter permissão para ler esse arquivo*/
$open = fopen($file,r);
#Carrega o usuário e senha
$user = 'deise';/*aqui vai o post do usuário*/
$pass = 'deise';/*aqui também*/
#"Expressão" para encontrar o usuário
$regex_usu = $user;
#Expressão para encontrar a senha
$regex_pass = $user.'\
[^\:]*)\:';
if($open){
$read = fread($open,8192);
if($read)
{
#
echo "leu o arquivo";
echo "<br>";
echo $read;
echo "<br>";
#
ereg($regex_usu,$read,$result_usu);
ereg($regex_pass,$read,$result_pass);
#
echo "usuario:";
print_r($result_usu[0]);
echo "<br>";
#
echo "Senha:";
print_r($result_pass[1]);
echo "<br>";
if($result_usu[0] == $user)
{
echo "usuario correto";
echo "<br>";
if (crypt($pass, $result_pass[1]) == $result_pass[1]) {
echo "Senha correta";
echo "<br>";
echo "Autenticacao completa";
echo "<br>";
}else
{
echo "Senha incorreta";
echo "<br>";
}
}else
{
echo "Usuario incorreto";
echo "<br>";
}
}else
{
echo "Falhou ao ler o arquivo";
echo "<br>";
}
}else{
echo "Falhou ao abrir o arquivo";
echo "<br>";
}