
Ultima actualización en

Es importante saber quién tiene acceso a su PC con Linux (y control sobre sus archivos), pero puede enumerar fácilmente a los usuarios en Linux para averiguarlo. Así es cómo.
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, hayan iniciado sesión 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 encriptada (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. Puedes usar el menos comando para ver el archivo completo, una pantalla a la vez.
menos /etc/passwd.

Si desea verificar si un usuario en particular existe en el sistema Linux, ese es un buen uso para el comando grep:
menos contraseña | 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 a solo el nombre de usuario, por ejemplo, usando el awk o cortar comandos:
awk -F: '{imprimir $1}' /etc/passwd. cortar -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, getente, es mucho más útil. Muestra las entradas de cualquier base de datos configurada en tu servidor /etc/nsswitch.conf Archivo. Uno de esos es el Contraseña base de datos. Usar getente para mostrar una lista de todos los usuarios de Linux, funciona así:
obtener contraseña
La salida se ve exactamente igual que usando el menos comando, pero enumera todos los usuarios de LDAP en el sistema Linux. Una vez más, nuestro awk y cortar Los comandos 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, getente lo hace fácil:
obtener contraseña jeff.
Nuevamente, ninguna salida de este comando le dice que el usuario no existe.
Otro gran uso para getente es averiguar cuántas cuentas de usuario existen en el servidor. Esto se hace por tubería getentesalida a través de la WC comando, así:
obtener contraseña | 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 comprobar el /etc/login.defs archivo, podemos determinar el rango de valores de UID disponibles para las cuentas de usuario 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 un getente consulta que solo mostrará usuarios normales.
obtener contraseña {1000..60000}

Tener en cuenta, getente parecerá colgar incluso después de mostrar su salida. Puedes presionar Ctrl-C para finalizar el proceso, o esperar hasta que finalice. Por lo general, se tarda menos de 15 segundos en completar la búsqueda del Contraseña base de datos.
Una versión más genérica de este comando tiene en cuenta diferentes UID_MIN y UID_MAX valores que varios servidores pueden usar.
eval getent passwd {$(awk '/^UID_MIN/ {imprimir $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {imprimir $2}' /etc/login.defs)}
En ese comando, estamos aprovechando la capacidad de Linux para hacer varias cosas a la vez. El awk los comandos obtienen el UID_MIN y UID_MAX valores, luego utilícelos dentro del getente mando.
Ahora, digamos que todo lo que queremos son los nombres de usuario. Una vez más, canalizamos nuestra salida a través del cortar comando, así:
eval getent passwd {$(awk '/^UID_MIN/ {imprimir $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {imprimir $2}' /etc/login.defs)} | cortar -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 mantenerse al tanto de políticas de seguridad de contraseñas y anime a sus usuarios a cambiar sus contraseñas regularmente.