Una solución de corta y clava…

reparadbNecesitando disponer de una solución “ahora mismo” para que los usuarios de mi red cambien la contraseña del Squid, y no teniendo a mano ninguno de los programas que  normalmente se usan para tal fin, me di a la tarea de escribir rápidamente una página PHP que me resolviera el asunto.

La idea que hice, muy de “corta y clava” es esta: primero que todo, una
página cambia.php que es donde accede el usuario.

<?php
//error_reporting(E_ALL);

//Preparando la lectura

foreach ($_GET as $var=>$value)
{
$$var=$value;
}

echo “<html><head></head><title>Guardar password cifrado</title><body>”;
echo “<form>”;
echo “<table><tr><td align=center>Nombre</td><td
align=center>Contrase&ntilde;a</td></tr>
<tr><td>”;
echo “<input type=text value=’Teclee el nombre’ name=nombre></td>”;
echo “<td>
<input type=password value=’Teclee el password’ name=passwd>
</td>
</tr>”;
echo “<tr><td>
<input type=submit name=’entrar’ value=’OK’ >
</td></tr>
</table>”;
echo “</form>”;

if ($entrar){
echo “Procesando…<br>”;
//$p1=’juan’;$p2=’contra’;
$comando=’/var/www/cambiapassword/cambia.sh ‘ . ” ” . $nombre . ”
” .$passwd;
$lastline=system($comando,$retval);
echo $retval;//Cuando de 0 estará bien!
$lastline=system(“mail alberto@ettpartagas.co.cu -s ‘Cambio!’ <
contras.txt”,$retval);

}//entrar

echo “</body></html>”;
?>

La página ejecuta un script cambia.sh que invoca a htpasswd con los
parámetros de nombre y contraseña.
#!/bin/sh
#Los parametros son el nombre de la persona y la contrasena
htpasswd -b contras.txt $1 $2

Y finalmente el fichero contras.txt tiene este contenido (por ejemplo):

alberto:q39Ld/b.CKX9I
pepe:4t9yVGagrIHTY
peri:rvNeKh68.JJXg

O sea, usuario y contraseña cifrada con htpasswd.

El engendrito hace el cambio solicitado y me avisa por correo,
mandándome el listado. Más dirty que quick, pero se mueve…

Esta entrada fue publicada en Administración, Debian, Linux, Software Libre, Ubuntu. Guarda el enlace permanente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *