Hai mai desiderato elencare tutti gli utenti nel tuo sistema Linux o contare il numero di utenti nel sistema? Esistono comandi per creare un utente, eliminare un utente, elencare gli utenti che hanno effettuato l'accesso, ma qual è il comando per elencare tutti gli utenti in Linux?
Questo tutorial ti mostrerà come elencare gli utenti nei sistemi Linux.
Ottieni un elenco di tutti gli utenti utilizzando il /etc/passwd
File #
Le informazioni sull'utente locale sono memorizzate in /etc/passwd
file. Ogni riga in questo file rappresenta le informazioni di accesso per un utente. Per aprire il file puoi usare cat
o less
:
less /etc/passwd
Ogni riga del file ha sette campi delimitati da due punti che contengono le seguenti informazioni:
- Nome utente.
- Password crittografata (
x
significa che la password è memorizzata nel/etc/shadow
file). - Numero ID utente (UID).
- Numero ID gruppo (GID) dell'utente.
- Nome completo dell'utente (GECOS).
- Home directory utente.
- Shell di accesso (predefinito su
/bin/bash
).
Se vuoi visualizzare solo il nome utente puoi usare sia awk
o cut
comandi per stampare solo il primo campo contenente il nome utente:
awk -F: '{ print $1}' /etc/passwd
cut -d: -f1 /etc/passwd
root
daemon
bin
sys
sync
...
...
sshd
vagrant
jack
anne
Ottieni un elenco di tutti gli utenti utilizzando il comando getent #
Il getent
il comando visualizza le voci dai database configurati in /etc/nsswitch.conf
file, incluso il passwd
database, che può essere utilizzato per interrogare un elenco di tutti gli utenti.
Per ottenere un elenco di tutti gli utenti Linuxr, immettere il seguente comando:
getent passwd
Come puoi vedere, l'output è lo stesso di quando si visualizza il contenuto di /etc/passwd
file. Se stai usando LDAP per l'autenticazione utente, il getent
visualizzerà tutti gli utenti Linux da entrambi /etc/passwd
file e database LDAP.
Puoi anche usare awk
o cut
per stampare solo il primo campo contenente il nome utente:
getent passwd | awk -F: '{ print $1}'
getent passwd | cut -d: -f1
Verifica se un utente esiste nel sistema Linux #
Ora che sappiamo come elencare tutti gli utenti, per verificare se esiste un utente nel nostro box Linux, possiamo semplicemente filtrare l'elenco degli utenti collegando l'elenco a grep
comando.
Ad esempio, per scoprire se un utente con nome jack
esiste nel nostro sistema Linux possiamo usare il seguente comando:
getent passwd | grep jack
Se l'utente esiste, il comando precedente stamperà le informazioni di accesso dell'utente. Nessun output significa che l'utente non esiste.
Possiamo anche verificare se esiste un utente senza usare il grep
comando come mostrato di seguito:
getent passwd jack
Come prima, se l'utente esiste, il comando visualizzerà le informazioni di accesso dell'utente.
Se vuoi scoprire quanti account utente hai sul tuo sistema, invia il pipe getent passwd
output al wc
comando:
getent passwd | wc -l
33
Come puoi vedere dall'output sopra, il mio sistema Linux ha 33 account utente.
Utenti di sistema e normali #
Non vi è alcuna reale differenza tecnica tra il sistema e gli utenti regolari (normali). In genere gli utenti del sistema vengono creati durante l'installazione del sistema operativo e dei nuovi pacchetti. In alcuni casi, puoi creare un utente di sistema che verrà utilizzato da alcune applicazioni.
Gli utenti normali sono gli utenti creati dal root o da un altro utente con privilegi sudo. Di solito, un utente normale ha una vera shell di login e una home directory.
Ogni utente ha un ID utente numerico chiamato UID. Se non specificato durante la creazione di un nuovo utente con useradd
comando, l'UID verrà selezionato automaticamente da /etc/login.defs
file a seconda del UID_MIN
e UID_MIN
valori.
Per controllare il UID_MIN
e UID_MIN
valori sul tuo sistema, puoi usare il seguente comando:
grep -E '^UID_MIN|^UID_MAX' /etc/login.defs
UID_MIN 1000
UID_MAX 60000
Dall'output sopra, possiamo vedere che tutti gli utenti normali dovrebbero avere un UID compreso tra 1000 e 60000. Conoscere il valore minimo e massimo ci consente di interrogare un elenco di tutti gli utenti normali nel nostro sistema.
Il comando seguente elencherà tutti gli utenti normali nel nostro sistema Linux:
getent passwd {1000..60000}
vagrant:x:1000:1000:vagrant,,,:/home/vagrant:/bin/bash
jack:x:1001:1001:,,,:/home/jack:/bin/bash
anne:x:1002:1002:Anne Stone,,,:/home/anne:/bin/bash
patrick:x:1003:1003:Patrick Star,,,:/home/patrick:/usr/sbin/nologin
Il tuo sistema UID_MIN
e UID_MIN
i valori potrebbero essere diversi, quindi la versione più generica del comando precedente sarebbe:
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)}
Se vuoi stampare solo i nomi utente, reindirizza l'output al cut
comando:
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1
Conclusione #
In questo tutorial, hai imparato come elencare e filtrare gli utenti nel tuo sistema Linux e quali sono le principali differenze tra il sistema e gli utenti Linux normali.
Gli stessi comandi si applicano a qualsiasi distribuzione Linux, inclusi Ubuntu, CentOS, RHEL, Debian e Linux Mint.
Sentiti libero di lasciare un commento in caso di domande.