Script usuario - contraseña

Escribir un script en Bash que lea de teclado un nombre de usuario y una contraseña y compruebe a partir de la información almacenada en /etc/shadow si la contraseña es válida.

Solución:

#!/bin/bash
# Leemos los datos del usuario
echo -n "usuario:"
read USUARIO
echo -n "Contraseña:"
read CLAVE_LEIDA
 
#Obtemos el salt del usuario leido
SEMILLA=$(grep $USUARIO /etc/shadow | cut -d$ -f3)
 
#Obtemos la clave encriptada del usuario del fichero
CLAVE_ENC=$(grep $USUARIO /etc/shadow | cut -d: -f2)
 
 
#Encriptamos la clave leida con el salt obtenido del fichero
#y con el mismo algoritmo de encriptacion
CLAVE_LEIDA_ENC=$(mkpasswd -m sha-512 -S $SEMILLA $CLAVE_LEIDA)
 
# Comparamos la clave leida encriptada con la almacenada en el fichero
# /etc/shadow y mostramos resultado por el terminal
if [ $CLAVE_ENC = $CLAVE_LEIDA_ENC ]; then   
	echo
	echo "Clave correcta"
else
	echo
	echo "Clave incorrecta"
fi 

Modifica el script anterior de forma que se vuelque en un fichero el valor de las variables que utilizamos en el mismo

#!/bin/bash
# Leemos los datos del usuario
echo -n "usuario:"
read USUARIO
echo -n "Contraseña:"
read CLAVE_LEIDA
 
#Obtemos el salt del usuario leido
SEMILLA=$(grep $USUARIO /etc/shadow | cut -d$ -f3)
 
#Obtemos la clave encriptada del usuario del fichero
CLAVE_ENC=$(grep $USUARIO /etc/shadow | cut -d: -f2)
 
 
#Encriptamos la clave leida con el salt obtenido del fichero
#y con el mismo algoritmo de encriptacion
CLAVE_LEIDA_ENC=$(mkpasswd -m sha-512 -S $SEMILLA $CLAVE_LEIDA)
 
#Comparamos la clave leida encriptada con la almacenada en el fichero
#/etc/shadow
if [ $CLAVE_ENC = $CLAVE_LEIDA_ENC ]; then   
	echo
	echo "Clave correcta"
else
	echo
	echo "Clave incorrecta"
fi
echo usuario: $USUARIO >> datos_script.txt
echo contraseña: $CLAVE_LEIDA >> datos_script.txt
echo semilla: $SEMILLA >> datos_script.txt
echo contraseña leida encriptada: $CLAVE_LEIDA_ENC >> datos_script.txt
echo contraseña en fichero /etc/shadow encriptada: $CLAVE_ENC >> datos_script.txt