Estoy creando un script PHP para cambiar la contraseña de un usuario creado en un sistema Linux. Previamente a cambiarla debe poner su anterior contraseña y para ello necesito validar un usuario y su contraseña. Es decir, necesito saber si un nombre de usuario y contraseña son válidos. Para ello básicamente cifro la contraseña del usuario y la comparo con el /etc/shadow de mi sistema Linux.
#!/bin/bash # por Alejandro Moreno (Kernpharma) - julio 2011 # Utilizar en "--method=" el metodo de cifrado deseado (SHA-512, MD5, etc) # Instalar la utilidad mkpasswd (http://pkgs.org/ubuntu-10.04/ubuntu-universe-i386/mkpasswd_5.0.0ubuntu3_i386.deb.html) if test $# -lt 2 ; then echo "Error de parametros." echo echo "Sintaxis:" echo " # ./validatepwd.sh <username> <password>" exit 3 fi username=$1 password=$2 contrl=`cat /etc/passwd | grep $username` if [ "$contrl" != "" ] then encrypt=`cat /etc/shadow | grep $username | cut -d: -f2 | cut -d$ -f 2` salt=`cat /etc/shadow | grep $username | cut -d: -f2 | cut -d$ -f 3` contrl=`mkpasswd --method=SHA-512 $password --salt=$salt` if [ "$contrl" = "`cat /etc/shadow | grep $username | cut -d: -f2`" ] then echo "Validacion OK." RETVAL=0 else echo "ERROR de validacion." RETVAL=1 fi else RETVAL=2 fi exit $RETVAL
0 comentarios:
hacer un comentario en esta entrada