Per configurare e gestire il sistema di autorizzazione, l'amministratore ha bisogno dell'elenco di tutti gli utenti. Ci sono comandi per creare utente, eliminare utente ma è un compito critico elencare tutti gli utenti nel sistema Linux. Inoltre è abbastanza necessario per motivi di sicurezza assicurarsi di avere il numero corretto di utenti e di non aver dimenticato di eliminarne alcuni.
Qui a LinuxAPT, come parte dei nostri servizi di gestione del server, aiutiamo regolarmente i nostri clienti a eseguire query relative al sistema Linux.
In questo contesto, esamineremo come elencare gli utenti nei sistemi Linux.
Come elencare tutti gli utenti usando il file /etc/passwd?
Le informazioni sull'utente sono memorizzate nel file /etc/passwd. Contiene una riga con nome utente per ciascun account utente sul sistema. Puoi usare less o cat comando per vedere il contenuto del file:
$ cat /etc/passwd
Nell'output, vedrai che ogni riga ha sette campi delimitati da due punti che contengono le seguenti informazioni:
- Nome utente.
- Password crittografata dove x significa che la password è salvata in etc/file shadow.
- UID (ID utente).
- GID (ID gruppo utente).
- Nome completo dell'utente.
- Utente $HOME directory.
- Percorso shell di accesso.
Se vuoi elencare solo il nome utente, puoi usare i comandi awk o cut per stampare solo il nome utente:
awk -F: '{ print $1}' /etc/passwd
cut -d: -f1 /etc/passwd
L'output sarà il seguente:
Output
root
daemon
bin
sys
sync
games
man
lp
news
uucp
proxy
www-data
...
...
geoclue
gdm
gnome-initial-setup
sshd
Come elencare tutti gli utenti usando il comando getent?
Il comando Getent leggerà le voci dai database. Elencherà gli utenti sia dal database LDAP che dal file /etc/passwd.
Per ottenere un elenco di tutti gli utenti Linux, digita il seguente comando:
$ getent passwd
L'output sarà lo stesso del contenuto del file /etc/passwd. Puoi anche usare awk o cut per stampare solo il nome utente:
getent passwd | awk -F: '{ print $1}'
getent passwd | cut -d: -f1
Come verificare se esiste un utente nel sistema Linux?
Ora sappiamo come ottenere l'elenco degli utenti. Ma cosa succede se si desidera verificare se un utente esiste o meno sul sistema corrente. Puoi controllare usando il comando grep e senza usare il comando grep.
Ad esempio, vogliamo verificare che l'utente linuxapt esista o meno, quindi dovresti emettere il comando come di seguito:
$ getent passwd | grep linuxapt
$ getent passwd linuxapt
Output
linuxapt:x:1001:1001:,,,:/home/linuxapt:/bin/bash
Se l'utente esiste nel sistema, stamperà i dettagli di quell'utente, altrimenti non stamperà nulla.
Se vuoi che il numero totale di utenti esista sul tuo sistema, puoi ottenerlo da:
$ getent passwd | wc -l
Restituirà il numero di utenti come il seguente output:
Output
47
Come differenziare il sistema e gli utenti normali?
Gli utenti del sistema vengono creati durante l'installazione del sistema operativo o l'aggiornamento di nuovi pacchetti. Non c'è più differenza tra utenti di sistema e utenti normali.
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 UID (User ID) che sia utente di sistema o utente normale. Quando l'utente normale aggiunge l'utente utilizzando il comando adduser. L'utente verrà aggiunto e l'UID verrà assegnato automaticamente con riferimento a UID_MIN e UID_MAX dal file /etc/login.defs.
Puoi controllare UID_MIN e UID_MAX con il comando seguente:
$ grep -E '^UID_MIN|^UID_MAX' /etc/login.defs
Mostrerà l'output come di seguito:
Output
UID_MIN 1000
UID_MAX 60000
Dall'output sopra, possiamo vedere che tutti gli utenti normali dovrebbero avere un ID univoco compreso tra 1000 e 60000.
Ora emetteremo il comando per ottenere l'elenco degli utenti normali il cui ID univoco compreso tra 1000 e 60000.
$ getent passwd {1000..60000}
Output
linuxapt:x:1000:1000:LinuxAPT,,,:/home/linuxapt:/bin/bash
demouser:x:1001:1001:,,,:/home/demouser:/bin/bash
Per stampare solo i nomi utente, digita il seguente comando:
$ eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1
Output
linuxapt
demouser
Come ottenere l'elenco dei gruppi in Linux?
Puoi elencare tutti i gruppi in Linux usando il seguente comando:
$ getent group
Puoi ottenere l'elenco di tutti i gruppi con un utente specifico usando il seguente comando:
$ getent group | grep linuxapt