El sistema operativo Linux ofrece comandos para crear y eliminar usuarios y verificar cuáles están conectados. Sin embargo, no hay ningún comando para listar usuarios, conectados o no, en el sistema.
Aún así, hay un par de maneras de lograr esto. Si desea aprender cómo listar usuarios en Linux, siga nuestros pasos a continuación.
Por qué debería revisar su lista de usuarios de Linux
Hay varias razones por las que es posible que desee enumerar usuarios en Linux. Es una buena práctica en términos de encontrar y eliminar cuentas no utilizadas, por ejemplo. Desde el punto de vista de la seguridad, también es una buena manera de asegurarse de que no haya intrusos creando cuentas de usuario.
Esta es una tarea administrativa que probablemente deberías hacer al menos una vez al mes. Si está ejecutando un servidor Linux corporativo, es posible que desee hacerlo con más frecuencia.
Usuarios listados en /etc/passwd
Todas las cuentas de usuario de su servidor Linux tienen entradas en el archivo /etc/passwd . Cada línea representa un usuario y tiene siete campos separados por dos puntos. Los campos proporcionan información sobre el usuario.
- Nombre de usuario.
- Contraseña cifrada ( x indica que la contraseña está realmente en /etc/shadow )
- Número de identificación de usuario (UID).
- Número de ID de grupo del usuario (GID).
- Nombre completo del usuario, si aparece.
- Directorio de inicio del usuario.
- shell de inicio de sesión
Entonces, eso nos lleva a una forma de enumerar todos los usuarios en Linux. Puede usar el comando less para ver el archivo completo, una pantalla a la vez.
less /etc/passwd

Si desea verificar si un usuario en particular existe en el sistema Linux, ese es un buen uso para el comando grep :
less passwd | grep jeff

Si no obtiene ningún resultado, ese usuario no existe en el servidor Linux.
Aún así, eso es mucha información. Puede recortarlo solo al nombre de usuario, por ejemplo, usando los comandos awk o cut :
awk -F: '{print $1}' /etc/passwd cut -d: -f1 /etc/passwd

Eso tiende a ser mucho más fácil de entender, pero aún lo deja viendo todas las cuentas de usuario basadas en el sistema mezcladas con sus usuarios humanos.
Cómo usar getent para listar usuarios
Otro comando, getent , es mucho más útil. Muestra entradas de cualquier base de datos configurada en el archivo /etc/nsswitch.conf de su servidor . Uno de ellos es la base de datos passwd . Para usar getent para mostrar una lista de todos los usuarios de Linux, funciona así:
getent passwd
El resultado se ve exactamente igual que cuando se usa el comando less , pero enumera los usuarios de LDAP en el sistema Linux. Una vez más, nuestros comandos awk y cut pueden ayudar a ver solo el primer campo, los nombres de usuario.
Si desea verificar si un usuario en particular existe en el sistema Linux, getent lo hace fácil:
getent passwd jeff
Nuevamente, ninguna salida de este comando le dice que el usuario no existe.
Otro excelente uso de getent es averiguar cuántas cuentas de usuario existen en el servidor. Esto se hace canalizando la salida de getent a través del comando wc , así:
getent passwd | wc -l

Como puede ver, mi sistema Linux tiene un total de 48 cuentas. Bastante interesante, ya que soy el único que lo usa, pero eso solo muestra cuántas cuentas del sistema se crean en Linux.
Eliminar usuarios del sistema de usuarios normales
A los ojos de Linux, no hay diferencia entre un usuario del sistema y uno humano. Cada vez que instala el sistema operativo, crea una cantidad de usuarios del sistema. Se crean otros usuarios del sistema para varios paquetes, como software de servicio web o de correo.
Entonces, ¿cómo puede enumerar solo a los usuarios humanos regulares en el sistema Linux? La clave aquí es comprender que cuando crea un usuario regular, su UID se asigna dentro de un cierto rango de números. Al verificar el archivo /etc/login.defs , podemos determinar el rango de valores de UID disponibles para cuentas de usuarios regulares.
grep -E '^UID_MIN|^UID_MAX' /etc/login.defs

Según el resultado, sé que los usuarios normales deben tener un UID entre 1000 y 60000. A partir de esto, puedo construir una consulta getent que solo mostrará a los usuarios normales.
getent passwd {1000..60000}

Tenga en cuenta que getent parecerá bloquearse incluso después de mostrar su salida. Puede presionar Ctrl-C para finalizar el proceso o esperar hasta que finalice. Por lo general, lleva menos de 15 segundos completar la búsqueda en la base de datos de contraseñas .
Una versión más genérica de este comando tiene en cuenta diferentes valores de UID_MIN y UID_MAX que podrían usar varios servidores.
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)}
En ese comando, estamos aprovechando la capacidad de Linux para hacer varias cosas a la vez. Los comandos awk obtienen los valores UID_MIN y UID_MAX , luego los usan dentro del comando getent .
Ahora, digamos que todo lo que queremos son los nombres de usuario. Una vez más, canalizamos nuestra salida a través del comando de corte , así:
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1

Este comando puede tardar de 10 a 15 segundos en completarse, así que tenga paciencia.
Gestión eficaz de sus usuarios de Linux
Es importante realizar un seguimiento de las cuentas de usuario que existen en su sistema Linux. Cuando sepa que un empleado se ha ido, sea rápido para eliminar su cuenta de usuario. Enumerar periódicamente a sus usuarios de Linux le ayudará a asegurarse de detectar cualquier cuenta que pueda haberse quedado.
Al mismo tiempo, asegúrese de estar al tanto de las políticas de seguridad de contraseñas y anime a sus usuarios a cambiar sus contraseñas regularmente.