Puoi usare awk
per questa attività:
awk -F: '$3 >= 1000' /etc/passwd
Questo dividerà il /etc/passwd
file per due punti, quindi se il campo 3 (userid) è maggiore o uguale a 1000, stamperà l'intero /etc/passwd
registrare.
Se vuoi ottenere solo il nome utente da questo elenco allora:
awk -F: '$3 >= 1000 {print $1}' /etc/passwd
Dove $1 è il primo campo di etc/passwd
che è il nome utente.
Supponendo che il sistema riconosca solo gli utenti locali (ovvero quelli registrati in /etc/passwd
, al contrario di qualsiasi autenticazione tramite un servizio remoto come LDAP, NIS o Winbind), puoi utilizzare grep
, sed
o awk
per estrarre i dati da /etc/passwd
. awk
è il più flessibile di quelli, ma che ne dici di una soluzione con sed
:
sed -n '/^\([^:]\+\):[^:]\+:[1-9][0-9]\{3\}/ { s/:.*//; p }' /etc/passwd
Devi ottenere tutti gli utenti con gid
è maggiore o uguale a 1000. Usa questo comando per questo:
awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
Se vuoi utenti di sistema (gid<1000) sarà:
awk -F: '($3<1000){print $1}' /etc/passwd