Esta breve guía explica cómo enumerar todos los usuarios en los sistemas operativos Linux. Antes de entrar en materia, veremos qué es el archivo /etc/passwd. Porque dependemos de este archivo a lo largo de esta guía.
Una breve nota sobre el archivo /etc/passwd
En Linux (y Unix en general), la información básica sobre cada cuenta de usuario se almacena en "/etc/passwd" expediente. No es más que un archivo de texto sin formato que contiene los atributos de todas las cuentas de usuario presentes en un sistema Linux.
De forma predeterminada, todos los usuarios pueden leer este archivo con la ayuda de cualquier programa gráfico o de texto, como Vi, Nano, Gedit, etc. o con comandos como "cat ".
Si abre este archivo..
$ cat /etc/passwd
... verá varias entradas como las siguientes:
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin [...]
Cada línea del archivo /etc/passwd representa un solo usuario. El usuario root aparecerá en la parte superior. Cada línea contiene siete atributos o campos separados por dos puntos sin espacios entre cada campo. El nombre de los siete campos se dan a continuación:
- nombre,
- contraseña,
- ID de usuario,
- ID de grupo,
- gecos,
- directorio de inicio,
- concha.
El "nombre" El campo es el nombre de inicio de sesión del usuario que utiliza para iniciar sesión en su caja de Linux.
La "contraseña" El campo simplemente contiene una letra X. Significado:la contraseña está encriptada y almacenada en un archivo separado llamado "/etc/shadow" por motivos de seguridad. Los usuarios normales no pueden leer /etc/shadow. Aquí la X indica que el usuario tiene una contraseña. Si este campo está vacío, el usuario no tiene contraseña, por lo que puede iniciar sesión sin contraseña.
El "ID de usuario " (o UID para abreviar) indica el número de identificación numérico único del usuario. El UID de la cuenta raíz es 0 (cero). Los números del 1 al 99 están reservados para cuentas del sistema. Y los números que van del 100 al 999 están reservados para usuarios normales y grupos.
El "ID de grupo" (o GID en breve) indica el identificador de grupo principal al que pertenece el usuario. El GID suele ser el mismo que el UID.
Los "gecos" El campo contiene la información general de un usuario. Por ejemplo, puede contener el nombre real del usuario. Este archivo puede estar vacío separado por dos puntos o puede contener varias entradas separadas por comas.
El "directorio de inicio" El campo indica la ruta completa del directorio de inicio del usuario, por ejemplo /home/sk . Este es el directorio en el que el usuario se encuentra primero cuando inició sesión en un sistema. El directorio de inicio suele contener programas y archivos de configuración que pertenecen al usuario.
El último archivo es "shell" . Indica la ruta completa del shell predeterminado para ese usuario.
Ahora, tomemos la siguiente línea como ejemplo:
root:x:0:0:root:/root:/bin/bash
En la línea de arriba,
- raíz - es el nombre de usuario,
- x - indica que el usuario raíz tiene contraseña,
- 0 - El primer 0 (cero) indica el UID,
- 0 - El segundo cero indica el GID,
- raíz - Indica el nombre real del usuario.
- /raíz - Es el directorio de inicio del usuario root,
- /bin/bash - Shell predeterminado para el usuario root.
Espero que tenga una idea básica sobre el archivo /etc/passwd. Ahora volvamos a nuestro tema, es decir, una lista de todos los usuarios en un sistema Linux.
Lista de todos los usuarios en Linux
Hay un par de formas de enumerar todos los usuarios en un sistema Linux. Aquí he incluido todas las formas posibles.
1. Enumere todos los usuarios en Linux usando el comando cat
Como dice el nombre, el comando cat generalmente se usa para concatenar archivos e imprimir el contenido de los archivos.
Para enumerar todos los usuarios en un sistema Linux usando el comando de corte, ejecute:
$ cat /etc/passwd
Este comando listará todos los usuarios disponibles
Salida de muestra:
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-network:x:100:102:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin syslog:x:102:106::/home/syslog:/usr/sbin/nologin messagebus:x:103:107::/nonexistent:/usr/sbin/nologin _apt:x:104:65534::/nonexistent:/usr/sbin/nologin uuidd:x:105:111::/run/uuidd:/usr/sbin/nologin avahi-autoipd:x:106:112:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin usbmux:x:107:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin dnsmasq:x:108:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin rtkit:x:109:114:RealtimeKit,,,:/proc:/usr/sbin/nologin cups-pk-helper:x:110:116:user for cups-pk-helper service,,,:/home/cups-pk-helper:/usr/sbin/nologin speech-dispatcher:x:111:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false whoopsie:x:112:117::/nonexistent:/bin/false kernoops:x:113:65534:Kernel Oops Tracking Daemon,,,:/:/usr/sbin/nologin saned:x:114:119::/var/lib/saned:/usr/sbin/nologin avahi:x:116:122:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/usr/sbin/nologin colord:x:117:123:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin hplip:x:118:7:HPLIP system user,,,:/var/run/hplip:/bin/false geoclue:x:119:124::/var/lib/geoclue:/usr/sbin/nologin gnome-initial-setup:x:120:65534::/run/gnome-initial-setup/:/bin/false gdm:x:121:125:Gnome Display Manager:/var/lib/gdm3:/bin/false sk:x:1000:1000:sk,,,:/home/sk:/bin/bash Debian-exim:x:122:128::/var/spool/exim4:/usr/sbin/nologin pulse:x:115:120:PulseAudio daemon,,,:/var/run/pulse:/usr/sbin/nologin systemd-timesync:x:123:127:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin tss:x:124:131:TPM software stack,,,:/var/lib/tpm:/bin/false tcpdump:x:125:132::/nonexistent:/usr/sbin/nologin _flatpak:x:126:133:Flatpak system-wide installation helper,,,:/nonexistent:/usr/sbin/nologin systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
Enumere todos los usuarios en Linux usando el comando cat
Como ya mencioné, el primer campo en las entradas anteriores representa a los usuarios. Si no desea que se muestren todos los campos, sino solo los nombres de usuario, los siguientes métodos le ayudarán.
3. Lista de usuarios usando el comando de corte
El comando "cortar" se usa para eliminar secciones (o campos) de cada línea de archivos.
Para enumerar todos los usuarios con comando de corte en un sistema Linux, ejecute:
$ cut -d: -f1 /etc/passwd
Este comando solo mostrará los nombres de usuario del archivo /etc/passwd e ignorará todos los demás campos.
Salida de muestra:
root daemon bin sys sync games man lp mail news uucp proxy www-data backup list irc gnats nobody systemd-network systemd-resolve syslog messagebus _apt uuidd avahi-autoipd usbmux dnsmasq rtkit cups-pk-helper speech-dispatcher whoopsie kernoops saned avahi colord hplip geoclue gnome-initial-setup gdm sk Debian-exim pulse systemd-timesync tss tcpdump _flatpak systemd-coredump
Enumere todos los usuarios en Linux usando el comando de corte
4. Imprimir usuarios en Linux con el comando awk
También podemos usar el comando "awk" para listar todos los usuarios en Linux.
$ awk -F':' '{ print $1}' /etc/passwd
Este comando también mostrará solo a los usuarios y omitirá todos los demás detalles.
Enumere todos los usuarios en Linux usando el comando awk
5. Ver lista de usuarios con compgen
Compensión está integrado en BASH para manipular las funciones de finalización programables.
Para enumerar todos los usuarios que usan compgen, ejecute:
$ compgen -u
6. Mostrar todos los usuarios usando el comando getent
Otra forma de listar los usuarios en Linux es usar "getent" comando como a continuación:
$ getent passwd
Este comando leerá el archivo /etc/passwd y mostrará una lista de todos los usuarios en ese archivo.
Enumere todos los usuarios en Linux usando el comando awk
Una ventaja notable del comando getent es que no solo enumera a los usuarios en el archivo /etc/passwd, sino también a todos los usuarios en todos los backends de base de datos de usuario configurados, por ejemplo, LDAP, en un sistema determinado.
7. Enumere a los usuarios usando los comandos "más" o "menos"
Los comandos más y menos se utilizan para abrir un archivo determinado para lectura interactiva, lo que permite el desplazamiento y la búsqueda.
Para imprimir todos los usuarios usando más o menos comando, ejecute:
$ more /etc/passwd
O,
$ less /etc/passwd
Lectura relacionada:
- Cómo enumerar los miembros de un grupo en Linux
- Cómo encontrar usuarios conectados actualmente en Linux
- Cómo monitorear la actividad del usuario en Linux
- Cómo limitar el acceso del usuario al sistema Linux
- La diferencia entre más, menos y la mayoría de los comandos
- Cómo agregar, eliminar y otorgar privilegios de Sudo a usuarios en Ubuntu
- Cómo averiguar a qué grupos pertenece un usuario en Linux
- La forma correcta de editar archivos /etc/passwd y /etc/group en Linux
Espero que esto ayude.