LINUX

Cómo listar usuarios usando la línea de comando de Linux

lista de usuarios de Linux

En el sistema operativo Linux o Unix, el archivo «/etc/passwd» almacena toda la información del usuario. Este archivo contiene 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 enumeré 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 si la cuenta se creó para una cuenta humana, asociada con un servicio o un usuario funcional del sistema. cada línea de /etc/passwd es un usuario distinto. Estos comandos también deberían funcionar en Centos/Ubuntu/Arch y otras distribuciones de Linux.

Use 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
...

obtener la lista sin usar información innecesaria,

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

Aquí, el comando de corte se usa para extraer el primer campo del archivo llamado «/etc/passwd» usando el delimitador (;) y mostrar el resultado requerido 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 otra cosa,

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

Ahora lo que he hecho es pasar la salida del comando anterior a otra variable «cortar»

$ cut -d: -f1

-d define el delimitador «:»
-f1 muestra el campo de la primera línea, es decir, el nombre de usuario.

Probemos un poco de formateo usando la utilidad Awk. Esta herramienta le permite al administrador del sistema crear comandos que definen patrones de texto para buscar en un archivo.

El siguiente comando awk mostrará una lista de todos los usuarios con su nombre completo y directorio de inicio junto con sus datos de 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 mostrará una lista de todos los usuarios, incluidos los usuarios del sistema y los usuarios regulares (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 habituales (solo)

Los sistemas Linux mantienen las cuentas del «sistema» bajo una ID de usuario específica, así que use la búsqueda awk para UID mayores que el límite seguro.

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

2) orden de recepción

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

getent [option] [database]

Mostrar todos los usuarios

Esto es lo mismo que listar a los usuarios usando cat /etc/passwd, a menos que se proporcionen otras opciones, el comando getent usa passwd como referencia de la base de datos y lista a 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
...

Encuentra todos los grupos

Los siguientes comandos enumeran todos los grupos sin ninguna condición o coincidencia. 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 recupera todo el grupo, pasando el nombre de usuario a la canalización enumera solo la fila que coincide. La salida tiene un grupo y un nombre de usuario que pertenece a ese grupo.

El siguiente comando es para formateo avanzado usando los comandos awk, cut & sed juntos para enumerar todos los usuarios y los usuarios que 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

Lea también:

Sigue amando y dando me gusta a nuestra publicación y comenta más comandos que conozcas para enumerar a los usuarios de diferentes maneras.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar