Cómo listar usuarios usando la línea de comando 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.