Risposte:
In base a gid, gli utenti del sistema e gli utenti del servizio possono essere separati come segue,
/etc/passwdcontiene un elenco per tutti gli utenti insieme ad alcune altre informazioni. Gli utenti del servizio o gli utenti reali hanno un valore gidmaggiore o uguale a 1000. Pertanto, è possibile ottenere un elenco di utenti reali come,
awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
È inoltre gidpossibile estrarre un elenco di utenti del sistema ( <1000) come,
awk -F: '($3<1000){print $1}' /etc/passwd
Come funziona
I contenuti di /etc/passwdsono come
root:x:0:0:root:/root:/bin/bash
...
souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash
Quando si utilizza awkcon -F:esso suddivide il contenuto di una linea in diversi campi che trattano :come separatore di campo. Il primo campo contiene il nome utente e il terzo campo ha il gid.
Quindi per estrarre utenti reali awkbasta controllare che il valore del terzo campo sia maggiore di uguale a 1000 e non è nessuno utente e stampa il primo campo, cioè il nome utente.
Per elencare tutti gli utenti del sistema, controlla che gidsia inferiore a 1000 e stampa il nome utente.
modificare
Come si desidera elencare root(gid = 0) nell'elenco utenti reale. Ottieni utenti reali come,
awk -F: '($3==0)||($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
Ottieni utenti di sistema come,
awk -F: '($3<1000)&&($1!="root"){print $1}' /etc/passwd
Nota Ignoro sempre l' nobodyutente.
Per elencare locali (utenti del sistema) che possono accedere e avere homedir e GID meno di 1000
cat /etc/passwd | cut -d: -f 1,3,6 | grep "[1-9][0-9][0-9][0-9]" | grep "/home" | cut -d: -f1
Per elencare tutti gli altri utenti: (principalmente utenti di sistema e GID inferiore a 1000):
cat /etc/passwd | cut -d: -f 1,3,6 | grep -v "[1-9][0-9][0-9][0-9]" | cut -d: -f1