Cómo enumerar usuarios usando la línea de comandos de Linux

En sistemas operativos Linux o similares a Unix, el archivo ‘/ etc / passwd’ almacena toda la información del usuario. Este archivo contiene los usuarios normales (regulares) y del sistema.

En este tutorial, le mostraré cómo listar usuarios en Linux usando la línea de comando.

Los comandos que he enumerado a continuación funcionarían en todas las distribuciones de Linux como Ubuntu / Centos y Arch Linux.

1) Desde “/ etc / passwd – Usando el comando Cut & Awk

Como se mencionó anteriormente, el archivo / etc / passwd almacena la lista de todos los usuarios independientemente de la cuenta creada para un humano, una cuenta asociada al servicio o un usuario funcional del sistema. Cada línea de /etc/passwd es un usuario distinto. Estos comandos deberían funcionar en Centos / Ubuntu / Arch y otras distribuciones de Linux también.

Utilice el siguiente comando para enumerar todos los usuarios

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
hacluster:x:189:189:cluster user:/home/hacluster:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
...

obtienes la lista sin información innecesaria usando,

$ cut -d : -f 1 /etc/passwd

Aquí el comando cut se usa para extraer el primer campo del archivo llamado ‘/ etc / passwd’ usando el delimitador (;) y mostrar la salida requerida en la consola

Recuerde, el comando de corte necesita la opción de lo contrario da error.

root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
www-data
backup
....

Probemos algo más

$ cat /etc/passwd | grep "/home" |cut -d: -f1
syslog
administrator
linoxide
...

Ahora lo que hemos hecho es, hemos canalizado la salida del comando anterior a otra variable “cortar”

$ cut -d: -f1

-d define el delimitador “:”
-f1 muestra el primer campo de la línea, es decir, el nombre de usuario.

Intentemos un poco más de formateo con la utilidad Awk. Esta herramienta permite al administrador del sistema crear comandos que definan patrones de texto que deben buscarse en un archivo.

El siguiente comando awk enumerará todos los usuarios con el nombre completo y el directorio de inicio junto con el inicio de sesión,

$ awk -F":" '{print "Login:" $1 "tName:" $5 "tHome:" $6}' /etc/passwd

mire la salida, verá una salida bien formateada y decorada.

Login:root	Name:root	Home:/root
Login:daemon	Name:daemon	Home:/usr/sbin
Login:bin	Name:bin	Home:/bin
Login:sys	Name:sys	Home:/dev
Login:sync	Name:sync	Home:/bin
Login:games	Name:games	Home:/usr/games
Login:man	Name:man	Home:/var/cache/man
Login:lp	Name:lp	Home:/var/spool/lpd
Login:mail	Name:mail	Home:/var/mail
Login:gnats	Name:Gnats Bug-Reporting System (admin)	Home:/var/lib/gnats
...

El siguiente comando enumerará todos los usuarios, incluidos los usuarios del sistema y habituales (normales):

$ awk -F: '{print $1}' /etc/passwd
Sample Output
$ awk -F: '{print $1}' /etc/passwd
root
daemon
bin
sys
sync
games
man
lp
mail
www-data
backup
list
irc
gnats
testuser

Para enumerar todos los usuarios regulares (solo)

Los sistemas Linux mantienen las cuentas del ‘sistema’ por debajo de un ID de usuario específico, por lo tanto, use la búsqueda awk para UID superiores al límite de certian.

$ awk -F: '$3 >= 500 {print}' /etc/passwd

2) comando Getent

El comando getent hace lo mismo que el comando cut que hemos visto antes, el comando getent obtiene entradas de bases de datos compatibles con la biblioteca del Servicio de nombres. Si se proporcionan una o más opciones para el comando, solo se mostrarán las entradas que coincidan con la opción. De lo contrario, se mostrarán todas las entradas. la sintaxis para obtener el comando end,

getent [option] [database]

Mostrar todos los usuarios

Esto es lo mismo que enumerar usuarios usando cat / etc / passwd, si no se proporcionan otras opciones, el comando getent usa passwd como referencia de base de datos y enumera todos los usuarios.

$ getent passed
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
saslauth:x:996:76:"Saslauthd user":/run/saslauthd:/sbin/nologin
libstoragemgmt:x:995:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
vivek:x:1000:1000:vivek:/home/vivek:/bin/bash
vboxadd:x:991:1::/var/run/vboxadd:/bin/false
linoxide:x:9999:9999:official:/home/lino_dir:/bin/bash
...

Buscar todos los grupos

Los siguientes comandos enumeran todos los grupos sin ninguna condición o coincidencias si no se proporcionan otras opciones, el comando getent usa el grupo como referencia de la base de datos y enumera todos los grupos.

$ getent group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
mail:x:12:postfix
man:x:15:
dialout:x:18:
floppy:x:19:
haclient:x:189:
unbound:x:997:
colord:x:996:
dip:x:40:
usbmuxd:x:113:
...

Buscar todos los grupos con un usuario específico

$ getent group | grep username

El comando anterior obtiene todos los grupos, pasando el nombre de usuario a las listas de canalizaciones que solo coinciden con las filas. La salida tiene un grupo y un nombre de usuario que pertenecen a ese grupo.

El siguiente comando es para formateo avanzado usando los comandos awk, cut & sed juntos para listar todos los usuarios y los usuarios pertenecen a un grupo específico.

cat /etc/group | awk -F: '{print $1, $3, $4}' | while read group gid members; do members=$members,$(awk -F: "$4 == $gid {print "," $1}" /etc/passwd);
echo "$group: $members" | sed 's/,,*/ /g';done

Leer también:

  • Comando de id de Linux: imprime la información de identificación de usuario y de identificación de grupo

Siga amando y dándole me gusta a nuestra publicación, y comente más comandos que conoce para enumerar a los usuarios de diferentes maneras.