Validar un usuario con el comando getent passwd
En este paso, aprenderemos sobre el comando getent
, que es una forma más robusta de recuperar entradas de las bases de datos del Name Service Switch (NSS), incluyendo la base de datos de contraseñas. El comando getent
es especialmente útil porque puede consultar no solo archivos locales como /etc/passwd
, sino también fuentes basadas en red como LDAP o NIS.
La sintaxis básica para usar getent
para consultar la base de datos de contraseñas es:
getent passwd [username]
Si el usuario existe en cualquiera de las fuentes NSS configuradas, getent
mostrará la línea correspondiente de la base de datos de contraseñas, similar a lo que viste cuando usaste cat /etc/passwd
. Si el usuario no existe, getent
no producirá salida y terminará con un estado distinto de cero.
Usemos getent
para comprobar la existencia del usuario labex
. Escribe el siguiente comando en tu terminal y presiona Enter:
getent passwd labex
Deberías ver la línea correspondiente al usuario labex
:
labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh
Ahora, usemos getent
para comprobar de nuevo la existencia del usuario nonexistentuser
. Escribe el siguiente comando y presiona Enter:
getent passwd nonexistentuser
Este comando no debería producir salida, al igual que cuando usamos grep
en /etc/passwd
. Sin embargo, getent
es generalmente preferido sobre el análisis directo de /etc/passwd
porque respeta la configuración NSS del sistema y puede encontrar usuarios de diversas fuentes.
Para ver la diferencia en el estado de salida, puedes comprobar el valor de $?
después de ejecutar un comando. $?
contiene el estado de salida del último comando ejecutado. Un valor de 0
generalmente indica éxito, mientras que un valor distinto de cero indica un error.
Ejecuta el comando getent
para labex
de nuevo y luego comprueba el estado de salida:
getent passwd labex
echo $?
Deberías ver la información del usuario seguida de 0
.
Ahora, ejecuta el comando getent
para nonexistentuser
y comprueba el estado de salida:
getent passwd nonexistentuser
echo $?
No deberías ver salida de getent
, seguida de un valor distinto de cero (a menudo 1
o 2
).
Usar getent
y comprobar su estado de salida es una forma confiable de determinar mediante programación si un usuario existe en un sistema Linux, independientemente de si el usuario está definido localmente o a través de un servicio de red.
¡Ahora has aprendido tres métodos diferentes para comprobar la existencia de un usuario en Linux!
Haz clic en Continuar para completar este laboratorio.