En Linux, como administrador del sistema, a menudo desea tener una lista completa de todos los usuarios y todos los grupos en su host.
Es muy importante por motivos de seguridad asegurarse de que tiene la cantidad correcta de usuarios y que no se olvidó de eliminar algunos.
Hay varias formas de listar usuarios y grupos en Linux .
Primero, puede leer la contraseña y el archivo de grupo en su sistema, con comandos de corte para extraer información útil.
Una forma más efectiva es usar el comando getent que se basa en el cambio de servicio de nombres, una instalación basada en Unix para definir bases de datos personalizadas en su host.
Así es como puede listar usuarios y grupos en Linux .
Lista de usuarios en Linux
Para listar usuarios en Linux, debe ejecutar el comando "cat" en el archivo "/etc/passwd". Al ejecutar este comando, se le presentará la lista de usuarios actualmente disponibles en su sistema.
Alternativamente, puede usar el comando "menos" o "más" para navegar dentro de la lista de nombres de usuario.
$ cat /etc/passwd
$ less /etc/passwd
$ more /etc/passwd
Se le presentará una lista de usuarios actualmente disponibles en su sistema.
Nota:no significa que los usuarios estén conectados ¡ahora mismo!
Pero, ¿qué significan las columnas del archivo passwd significa siquiera?
Como nota al margen rápida, una "x" en la columna de la contraseña significa que la contraseña está encriptada y se encuentra en el archivo /etc/shadow.
Ahora que sabe cómo enumerar usuarios en su host Linux, veamos cómo puede aislar efectivamente una lista de nombres de usuario.
Lista de nombres de usuario usando el archivo /etc/passwd
Como probablemente haya notado, el /etc/passwd El archivo está formado por líneas separadas por dos puntos.
a – Lista de nombres de usuario usando corte
Para enumerar los nombres de usuario en Linux, use el comando "gato" y conéctelo al comando "cortar" para aislar los nombres de usuario disponibles en la primera columna de su archivo.
Para lograrlo, ejecute el siguiente comando
$ cat /etc/passwd | cut -d: -f1
Primero, está imprimiendo una lista de todos los registros en el archivo passwd. A continuación, esos resultados se canalizan (usando canalizaciones y redirección de Linux) al comando de corte.
El comando de corte define un separador personalizado (con la opción d) que es igual al carácter de dos puntos.
Finalmente, estamos aislando el primer campo de los resultados que estamos obteniendo. En este caso, esto es igual a los nombres de usuario definidos por nuestro esquema en las columnas passwd.
b – Lista de nombres de usuario usando awk
Para enumerar los nombres de usuario en Linux, también puede usar el comando "cat" conectado con el comando "awk" que es similar al comando "cut" que hemos visto antes.
Como recordatorio, el comando awk (o mawk) es un intérprete del lenguaje de programación AWK.
AWK es un lenguaje de programación diseñado para facilitar la extracción y manipulación de datos para flujos de datos.
Es ampliamente utilizado en sistemas basados en Unix cuando las estructuras de texto son bastante complicadas y no se pueden separar con un solo comando.
Para listar nombres de usuario en Linux usando el intérprete awk, ejecute el siguiente comando
$ cat /etc/passwd | awk -F: '{print $1}'
Lista de usuarios en Linux usando getent
La forma más fácil de enumerar usuarios en Linux es usar el comando "getent" con el argumento "passwd" y especificar un usuario opcional que desea incluir en su sistema.
getent passwd <optional_user>
Como recordatorio, el comando getent recupera entradas de las bases de datos de cambio de servicio de nombres .
Name Service Switch es una utilidad de Unix que recupera entradas de un conjunto de fuentes de datos diferentes, como archivos, LDAP, un servidor DNS o un servicio de información de red .
La lista de todas las fuentes de datos disponibles se puede leer en nsswitch.conf archivo ubicado en /etc.
En nuestro caso, se puede usar para listar usuarios y grupos fácilmente en nuestro host Linux.
Para listar usuarios usando la función getent, ejecute el siguiente comando
$ getent passwd
a – Lista de nombres de usuario con getent
De manera similar a la sección anterior, es posible enumerar solo nombres de usuario al interactuar con el comando getent.
Para lograrlo, puede ejecutar alternativamente el comando cut o el comando awk de la siguiente manera.
$ getent passwd | cut -d: -f1
O con AWK
$ getent passwd | awk -F: '{print $1}'
Lista de usuarios conectados en su host Linux
Como se mencionó anteriormente, inspeccionar el archivo passwd, ya sea con less o con getent, no proporcionarle una lista de todos los usuarios conectados en su host.
Para lograr eso, vas a usar el comando who.
$ who
Como puede ver, se le proporciona una lista de usuarios actualmente conectados en su host junto con el shell que están usando y cuándo se conectaron.
Alternativamente, puede usar el comando de usuarios para lograr el mismo resultado con menos detalles.
$ users
devconnected john
¡Muy práctico!
Ahora que hemos visto cómo podemos enumerar usuarios en un host Linux, veamos cómo podemos aplicar el mismo conocimiento para enumerar grupos en su sistema.
Lista de grupos en Linux usando el archivo /etc/group
Para enumerar grupos en Linux, debe ejecutar el comando "cat" en el archivo "/etc/group". Al ejecutar este comando, se le presentará la lista de grupos disponibles en su sistema.
Use uno de los siguientes comandos para listar grupos en su sistema.
$ cat /etc/group
$ less /etc/group
$ more /etc/group
Pero, ¿qué representan las columnas del archivo de grupo?
Tomemos una línea completa en el archivo de grupo para inspeccionarlo.
Como puede ver, de manera similar al archivo passwd, las entradas están separadas por dos puntos. Son bastante fáciles de entender.
Nota:el campo de contraseña no se usa la mayor parte del tiempo, está reservado para crear grupos privilegiados en su sistema.
Lista de nombres de grupos usando /etc/group
Como puede ver, la inspección de /etc/group le brinda una lista completa y a veces demasiado detallada de todos los grupos en su sistema.
Sin embargo, a veces desea aislar los nombres de grupo en su archivo de grupo.
Para lograrlo, puede usar el comando cortar o el comando AWK.
$ cat /etc/group | cut -d: -f1
$ cat /etc/group | awk -F: '{print $1}'
Por supuesto, puede optar por aislar un grupo si desea ver qué usuarios pertenecen al grupo al que se dirige.
$ cat /etc/group | grep <group>
Lista de grupos usando getent
Nuevamente, puede optar por listar grupos en Linux usando el comando getent.
$ getent <database> <key>
Aquí, estamos interesados en la base de datos de "grupo".
Si elige no proporcionar una clave, se le proporcionará el archivo de grupo completo.
$ getent group
De manera similar a la base de datos passwd, puede optar por "apuntar" a un grupo específico proporcionando una clave para la función getent.
$ getent group sudo
Lista de grupos para el usuario actual
Los comandos de grupos se utilizan para obtener una lista de grupos en los que se encuentra un usuario específico.
$ groups <username>
Si se proporciona sin argumentos, devolverá los grupos para el usuario que lanzó el comando.
Para probar que proporciona los grupos para el usuario que lanzó el comando, intente ejecutar el comando con privilegios sudo.
$ sudo groups
El resultado es... ¡raíz! Porque el comando se ejecuta como raíz y la raíz solo pertenece a un grupo que es el grupo raíz.
Conclusión
En este tutorial, aprendió cómo puede enumerar usuarios y grupos en cualquier sistema basado en Linux.
Aprendiste más sobre archivos de configuración específicos como contraseña y grupo , así como el comando getent para las instalaciones de cambio de servicio de nombres.
Nuevamente, si está interesado en la administración del sistema Linux, tenemos toneladas de tutoriales sobre el tema en nuestra categoría de Administración del sistema Linux.
Haga clic en la imagen de abajo para comprobarlos.