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