LINUX

Come elencare gli utenti utilizzando la riga di comando di Linux

elenca gli utenti Linux

Nel sistema operativo Linux o Unix, il file “/etc/passwd” memorizza tutte le informazioni dell’utente. Questo file contiene utenti normali (regolari) e di sistema.

In questo tutorial, ti mostrerò come elencare gli utenti in Linux usando la riga di comando.

I comandi che ho elencato di seguito funzionerebbero su tutte le distribuzioni Linux come Ubuntu/Centos e Arch Linux.

1) Da “/etc/passwd – Utilizzo del comando Cut & Awk

Come accennato in precedenza, il file /etc/passwd memorizza l’elenco di tutti gli utenti, indipendentemente dal fatto che l’account sia stato creato per un account umano, associato a un servizio o utente di sistema funzionale. Ogni riga di /etc/passwd è un utente distinto. Questi comandi dovrebbero funzionare anche su Centos/Ubuntu/Arch e altre distribuzioni Linux.

Utilizzare il comando seguente per elencare tutti gli utenti

$ 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
...

ottenere l’elenco senza informazioni inutili utilizzando,

$ cut -d : -f 1 /etc/passwd

Qui il comando cut viene utilizzato per estrarre il primo campo dal file denominato “/etc/passwd” utilizzando il delimitatore (;) e visualizzare l’output richiesto sulla console

Ricorda, il comando cut richiede l’opzione, altrimenti dà errore.

root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
proxy
www-data
backup
....

Proviamo qualcos’altro,

$ cat /etc/passwd | grep "/home" |cut -d: -f1
syslog
administrator
linoxide
...

Ora quello che ho fatto è che ho passato l’output del comando precedente a un’altra variabile “cut”

$ cut -d: -f1

-d definisce il delimitatore “:”
-f1 visualizza il primo campo della riga, ovvero il nome utente.

Proviamo un po’ di formattazione usando l’utility Awk. Questo strumento consente a un amministratore di sistema di creare comandi che definiscono modelli di testo da cercare in un file.

Il seguente comando awk elencherà tutti gli utenti con il loro nome completo e la home directory insieme ai loro dettagli di accesso,

$ awk -F":" '{print "Login:" $1 "tName:" $5 "tHome:" $6}' /etc/passwd

guarda l’output, vedrai un output ben formattato e decorato.

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
...

Il seguente comando elencherà tutti gli utenti, inclusi gli utenti di sistema e gli utenti regolari (normali):

$ 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

Per elencare tutti gli utenti normali (solo)

I sistemi Linux mantengono gli account di “sistema” sotto un ID utente specifico, quindi usa awk cerca UID superiori al limite certian.

$ awk -F: '$3 >= 500 {print}' /etc/passwd

2) Ordine getente

Il comando getent fa la stessa cosa del comando cut che abbiamo visto prima, il comando getent recupera le voci dai database supportati dalla libreria Name Service. Se per l’ordine sono fornite una o più opzioni, verranno visualizzate solo le voci che corrispondono all’opzione. In caso contrario, verranno visualizzate tutte le voci. sintassi per ottenere il comando end,

getent [option] [database]

Mostra tutti gli utenti

È come elencare gli utenti usando cat /etc/passwd, a meno che non siano fornite altre opzioni, il comando getent usa passwd come riferimento al database ed elenca tutti gli utenti.

$ 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
...

Trova tutti i gruppi

I comandi seguenti elencano tutti i gruppi senza alcuna condizione o corrispondenza se non vengono fornite altre opzioni, il comando getent utilizza il gruppo come riferimento al database ed elenca tutti i gruppi.

$ 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:
...

Cerca tutti i gruppi con un utente specifico

$ getent group | grep username

Il comando precedente recupera l’intero gruppo, passando il nome utente alla pipeline elenca solo la riga che corrisponde. L’output ha un gruppo e un nome utente che appartiene a quel gruppo.

Il comando seguente è per la formattazione avanzata utilizzando i comandi awk, cut e sed insieme per elencare tutti gli utenti e gli utenti appartenenti a un gruppo specifico.

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

Leggi anche:

Continua ad amare e ad apprezzare il nostro post e commenta più comandi che conosci per elencare gli utenti in modi diversi.

Related Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back to top button
Close