Su Linux, come amministratore di sistema, spesso desideri avere un elenco completo di tutti gli utenti e di tutti i gruppi sul tuo host.
È fondamentale per motivi di sicurezza assicurarsi di avere il numero corretto di utenti e di non aver dimenticato di eliminarne alcuni.
Esistono diversi modi per elencare utenti e gruppi su Linux .
Innanzitutto, puoi leggere la passwd e il file di gruppo sul tuo sistema, con i comandi di taglio per estrarre informazioni utili.
Un modo più efficace è utilizzare il comando getent che si basa su Name Service Switch, una struttura basata su Unix per definire database personalizzati sul tuo host.
Ecco come puoi elencare utenti e gruppi su Linux .
Elenca utenti su Linux
Per elencare gli utenti su Linux, devi eseguire il comando "cat" sul file "/etc/passwd". Quando esegui questo comando, ti verrà presentato l'elenco degli utenti attualmente disponibili sul tuo sistema.
In alternativa, puoi utilizzare il comando “meno” o “più” per navigare all'interno dell'elenco dei nomi utente.
$ cat /etc/passwd
$ less /etc/passwd
$ more /etc/passwd
Ti verrà presentato un elenco di utenti attualmente disponibili sul tuo sistema.
Nota :non significa che gli utenti siano connessi subito!
Ma cosa fanno le colonne del file passwd significa anche?
Come breve nota a margine, una "x" nella colonna della password significa che la password è crittografata e deve essere trovata nel file /etc/shadow.
Ora che sai come elencare gli utenti sul tuo host Linux, vediamo come isolare efficacemente un elenco di nomi utente.
Elenca i nomi utente usando il file /etc/passwd
Come probabilmente avrai notato, il /etc/passwd il file è composto da righe separate da due punti.
a – Elenca i nomi utente usando il taglio
Per elencare i nomi utente su Linux, usa il comando "cat" e reindirizzalo al comando "cut" per isolare i nomi utente disponibili nella prima colonna del tuo file.
Per ottenerlo, esegui il seguente comando
$ cat /etc/passwd | cut -d: -f1
Innanzitutto, stai stampando un elenco di tutti i record nel file passwd. Successivamente, questi risultati vengono reindirizzati (utilizzando pipe e reindirizzamento Linux) al comando cut.
Il comando taglia definisce un separatore personalizzato (con l'opzione d) che è uguale al carattere due punti.
Infine, stiamo isolando il primo campo dei risultati che stiamo ottenendo. In questo caso, questo è uguale ai nomi utente definiti dal nostro schema nelle colonne passwd.
b – Elenca i nomi utente usando awk
Per elencare i nomi utente su Linux, puoi anche usare il comando "cat" inviato tramite pipe con il comando "awk" che è simile al comando "cut" che abbiamo visto prima.
Ricordiamo che il comando awk (o mawk) è un interprete per il linguaggio di programmazione AWK.
AWK è un linguaggio di programmazione progettato per facilitare l'estrazione e la manipolazione dei dati per i flussi di dati.
È ampiamente utilizzato su sistemi basati su Unix quando le strutture di testo sono piuttosto complicate e non possono essere separate con un solo comando.
Per elencare i nomi utente su Linux usando l'interprete awk, esegui il comando seguente
$ cat /etc/passwd | awk -F: '{print $1}'
Elenca gli utenti su Linux usando getent
Il modo più semplice per elencare gli utenti su Linux è usare il comando "geent" con l'argomento "passwd" e specificare un utente facoltativo che vuoi elencare sul tuo sistema.
getent passwd <optional_user>
Come promemoria, il comando getent recupera le voci dai database Name Service Switch .
Name Service Switch è un'utilità Unix che recupera le voci da un insieme di diverse origini dati come file, LDAP, un server DNS o un Network Information Service .
L'elenco di tutte le origini dati disponibili può essere letto da nsswitch.conf file che si trova in /etc.
Nel nostro caso, può essere utilizzato per elencare facilmente utenti e gruppi sul nostro host Linux.
Per elencare gli utenti che utilizzano la funzione getent, esegui il comando seguente
$ getent passwd
a – Elenca i nomi utente con getent
Analogamente alla sezione precedente, è possibile elencare solo i nomi utente quando si interagisce con il comando getent.
Per ottenere ciò, puoi in alternativa eseguire il comando cut o il comando awk nel modo seguente.
$ getent passwd | cut -d: -f1
O con AWK
$ getent passwd | awk -F: '{print $1}'
Elenca gli utenti connessi sul tuo host Linux
Come accennato in precedenza, l'ispezione del file passwd, con less o con getent, non fornirti un elenco di tutti gli utenti collegati sul tuo host.
Per raggiungere questo obiettivo, utilizzerai il comando who.
$ who
Come puoi vedere, ti viene fornito un elenco di utenti attualmente connessi sul tuo host insieme alla shell che stanno utilizzando e quando si sono connessi.
In alternativa, puoi utilizzare il comando users per ottenere lo stesso risultato con meno dettagli.
$ users
devconnected john
Piuttosto a portata di mano!
Ora che abbiamo visto come possiamo elencare gli utenti su un host Linux, vediamo come possiamo applicare la stessa conoscenza per elencare i gruppi sul tuo sistema.
Elenca i gruppi su Linux usando il file /etc/group
Per elencare i gruppi su Linux, devi eseguire il comando "cat" sul file "/etc/group". Quando esegui questo comando, ti verrà presentato l'elenco dei gruppi disponibili sul tuo sistema.
Utilizza uno dei seguenti comandi per elencare i gruppi sul tuo sistema.
$ cat /etc/group
$ less /etc/group
$ more /etc/group
Ma cosa rappresentano anche le colonne del file di gruppo?
Prendiamo una riga completa sul file di gruppo per ispezionarlo.
Come puoi vedere, analogamente al file passwd, le voci sono separate da due punti. Sono abbastanza facili da capire.
Nota :il campo della password non viene utilizzato per la maggior parte del tempo, è riservato alla creazione di gruppi privilegiati sul tuo sistema.
Elenca i nomi dei gruppi usando /etc/group
Come puoi vedere, l'ispezione di /etc/group ti dà un elenco completo e talvolta troppo dettagliato di tutti i gruppi sul tuo sistema.
Tuttavia, a volte vuoi isolare i nomi dei gruppi nel tuo file di gruppo.
Per ottenere ciò, puoi usare il comando taglia o il comando AWK.
$ cat /etc/group | cut -d: -f1
$ cat /etc/group | awk -F: '{print $1}'
Ovviamente puoi scegliere di isolare un gruppo se vuoi vedere quali utenti appartengono al gruppo a cui ti rivolgi.
$ cat /etc/group | grep <group>
Elenca i gruppi usando getent
Di nuovo, puoi scegliere di elencare i gruppi su Linux usando il comando getent.
$ getent <database> <key>
Qui, siamo interessati al database del "gruppo".
Se scegli di non fornire una chiave, ti verrà fornito l'intero file del gruppo.
$ getent group
Analogamente al database passwd, puoi scegliere di "mirare" un gruppo specifico fornendo una chiave per la funzione getent.
$ getent group sudo
Elenca i gruppi per l'utente corrente
I comandi dei gruppi vengono utilizzati per ottenere un elenco di gruppi in cui si trova un utente specifico.
$ groups <username>
Se fornito senza argomenti, restituirà i gruppi per l'utente che ha lanciato il comando.
Per dimostrare che fornisce i gruppi per l'utente che ha lanciato il comando, prova ad avviare il comando con privilegi sudo.
$ sudo groups
Il risultato è... root! Poiché il comando viene eseguito come root e root appartiene solo a un gruppo che è il gruppo root.
Conclusione
In questo tutorial, hai imparato come elencare utenti e gruppi su qualsiasi sistema basato su Linux.
Hai imparato di più su file di configurazione specifici come passwd e gruppo , nonché il comando getent per le funzionalità di cambio del servizio nomi.
Ancora una volta, se sei interessato all'amministrazione del sistema Linux, abbiamo tonnellate di tutorial sull'argomento nella nostra categoria Amministrazione del sistema Linux.
Clicca l'immagine qui sotto per controllarli.