Como Hacerlo PC & Software

Cómo Hacer una Lista de Usuarios en Linux

El sistema operativo Linux ofrece comandos para crear y eliminar usuarios y comprobar cuáles están conectados. Sin embargo, no hay un comando para listar los usuarios, conectados o no, en el sistema.

Aun así, hay un par de formas de hacerlo. Si quieres aprender a listar usuarios en Linux, sigue nuestros pasos a continuación.

Por qué debería revisar su lista de usuarios en Linux

Hay un número de razones por las que puede querer listar usuarios en Linux. Por un lado, es una buena práctica en términos de encontrar y eliminar cuentas no utilizadas. Desde el punto de vista de la seguridad, también es una buena manera de asegurarse de que no hay 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, puede querer hacerlo más a menudo.

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 identificación del grupo del usuario (GID).
  • Nombre completo del usuario, si aparece en la lista.
  • Directorio personal del usuario.
  • Login shell

Esto nos lleva a una forma de listar todos los usuarios en Linux. Puedes usar el comando less para ver todo el archivo, una pantalla a la vez.

less /etc/passwd

Si quieres comprobar si un usuario concreto existe en el sistema Linux, ese es un buen uso del comando grep:

less passwd | grep jeff

Si no obtienes ninguna salida, ese usuario no existe en el servidor Linux.

Aún así, es mucha información. Puedes reducirla a sólo el nombre de usuario, por ejemplo, usando los comandos awk o cut:

awk -F: '{print $1}' /etc/passwd
cut -d: -f1 /etc/passwd

Esto tiende a ser mucho más fácil de entender, pero todavía le deja ver 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 las entradas de cualquier base de datos configurada en el archivo /etc/nsswitch.conf de su servidor. Una de ellas es la base de datos passwd. Para usar getent para mostrar una lista de todos los usuarios de Linux, funciona así:

getent passwd

La salida es exactamente la misma que usando el comando less, pero lista cualquier usuario LDAP en el sistema Linux. Una vez más, nuestros comandos awk y cut pueden ayudar a ver sólo el primer campo, los nombres de usuario.

Si quieres comprobar si un usuario en particular existe en el sistema Linux, getent lo hace fácil:

getent passwd jeff

De nuevo, la ausencia de salida de este comando le indica que el usuario no existe.

Otro uso estupendo 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 puedes ver, mi sistema Linux tiene un total de 48 cuentas. Bastante interesante, ya que soy el único que lo usa, pero eso sólo muestra la cantidad de cuentas de sistema que se crean en Linux.

Separar a los usuarios del sistema de los usuarios normales

A los ojos de Linux, no hay diferencia entre un usuario del sistema y uno humano. Cada vez que se instala el sistema operativo, se crea un número de usuarios del sistema. Otros usuarios del sistema se crean para varios paquetes, como el software de servicios web o de correo.

Entonces, ¿cómo puedes listar sólo los usuarios humanos normales en el sistema Linux? La clave aquí es entender que cuando creas un usuario normal, su UID se asigna dentro de un cierto rango de números.Comprobando el archivo /etc/login.defs, podemos determinar el rango de valores UID disponibles para las cuentas de usuarios normales.

grep -E '^UID_MIN|^UID_MAX' /etc/login.defs

Basándome en 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 sólo mostrará los usuarios normales.

getent passwd {1000..60000}

Tenga en cuenta que getent parecerá colgarse incluso después de mostrar su salida. Puede presionar Ctrl-C para terminar el proceso, o esperar hasta que termine. Normalmente tarda menos de 15 segundos en completar la búsqueda en la base de datos de passwd.

Una versión más genérica de este comando tiene en cuenta los diferentes valores UID_MIN y UID_MAX que pueden utilizar los distintos 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, y 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 cut, 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 los usuarios de Linux

Es importante llevar un registro de las cuentas de usuario que existen en su sistema Linux. Cuando sepas que un empleado se ha marchado, borra rápidamente su cuenta de usuario. Hacer una lista periódica de los usuarios de Linux te ayudará a asegurarte de que capturas cualquier cuenta que se haya quedado.

Etiquetas

Acerca del Autor

Brayan Guevara

Brayan es un fanático de Windows desde que tuvo su primer PC, un Pentium III (un monstruo en aquella época).

Para la mayoría de los niños de su edad, Internet era una forma increíble de jugar y comunicarse con los demás, pero a él le impresionó profundamente el flujo de información y la facilidad con la que se puede encontrar cualquier cosa en la red.

Escribe sobre Windows, Mac, Android, entre otros.

Agregar un Comentario

Clic Aqui para Publicar un Comentario