Risposte:
In base a gid
, gli utenti del sistema e gli utenti del servizio possono essere separati come segue,
/etc/passwd
contiene un elenco per tutti gli utenti insieme ad alcune altre informazioni. Gli utenti del servizio o gli utenti reali hanno un valore gid
maggiore o uguale a 1000. Pertanto, è possibile ottenere un elenco di utenti reali come,
awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
È inoltre gid
possibile estrarre un elenco di utenti del sistema ( <1000) come,
awk -F: '($3<1000){print $1}' /etc/passwd
Come funziona
I contenuti di /etc/passwd
sono come
root:x:0:0:root:/root:/bin/bash
...
souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash
Quando si utilizza awk
con -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 awk
basta 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 gid
sia 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' nobody
utente.
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