Respuestas:
Según gid
, los usuarios del sistema y los usuarios del servicio se pueden separar de la siguiente manera,
/etc/passwd
contiene una lista para todos los usuarios junto con alguna otra información. Los usuarios del servicio o los usuarios reales tienen un valor gid
mayor o igual a 1000. Por lo tanto, se puede obtener una lista de usuarios reales como,
awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
También gid
se puede extraer una lista de usuarios del sistema ( <1000) como,
awk -F: '($3<1000){print $1}' /etc/passwd
Cómo funciona
Los contenidos de /etc/passwd
son como,
root:x:0:0:root:/root:/bin/bash
...
souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash
Cuando se usa awk
con -F:
él, divide el contenido de una línea en varios campos que se tratan :
como separadores de campo. El primer campo contiene el nombre de usuario y el tercer campo tiene el gid
.
Por lo tanto, para extraer usuarios reales, awk
simplemente verifique que el valor del tercer campo sea mayor que igual a 1000 y que no sea usuario de nadie e imprima el primer campo, es decir, el nombre de usuario.
Para enumerar todos los usuarios del sistema, solo verifica que gid
sea inferior a 1000 e imprima el nombre de usuario.
Editar
Como desea enumerar root
(gid = 0) en la lista de usuarios reales. Consigue usuarios reales como,
awk -F: '($3==0)||($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
Obtenga usuarios del sistema como,
awk -F: '($3<1000)&&($1!="root"){print $1}' /etc/passwd
Tenga en cuenta que siempre estoy ignorando al nobody
usuario.
Para enumerar locales (usuarios del sistema) que pueden iniciar sesión y tener homedir y GID menos de 1000
cat /etc/passwd | cut -d: -f 1,3,6 | grep "[1-9][0-9][0-9][0-9]" | grep "/home" | cut -d: -f1
Para enumerar todos los demás usuarios: (principalmente usuarios del sistema y tienen GID inferior a 1000):
cat /etc/passwd | cut -d: -f 1,3,6 | grep -v "[1-9][0-9][0-9][0-9]" | cut -d: -f1