Cómo enumerar usuarios usando la línea de comandos de Linux
En el sistema operativo Linux o similar 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 usando 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 habituales (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 solo con la fila coincidente. La salida tiene un grupo y un nombre de usuario que pertenecen a ese grupo.
El siguiente comando es para formateo avanzado usando el comando awk, cut & sed juntos para enumerar 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:
Sigue amando y dándole me gusta a nuestra publicación, y comenta más comandos que conozcas para enumerar a los usuarios de diferentes maneras.