Home
» LINUX
»
Linux: come elencare tutti gli utenti
Linux: come elencare tutti gli utenti
Per elencare tutti gli utenti su Linux, il comando generico migliore è `getent` getent passwd. Se si desiderano solo i nomi utente, eseguire `getent` getent passwd | cut -d: -f1. Questo è solitamente più completo rispetto alla lettura /etc/passwddiretta perché `getent` segue la configurazione del Name Service Switch (NSS) del sistema , quindi può includere account forniti da servizi come LDAP o altre fonti di identità configurate.
Elenca tutti gli utenti con getent
Apri un terminale ed esegui:
getent passwd
Ogni riga rappresenta un record utente. Per visualizzare solo i nomi di accesso, utilizzare:
getent passwd | cut -d: -f1
È inoltre possibile visualizzare un account conosciuto senza scorrere l'intero elenco:
getent passwd alice
La documentazione della libreria GNU C spiega che NSS controlla il modo in cui i database di sistema, come ad esempio, passwdvengono risolti tramite /etc/nsswitch.conf. Vedi la documentazione NSS della libreria GNU C.
getent passwdMostra i record degli account disponibili tramite le origini del database utente configurate.
Elenca gli utenti locali da /etc/passwd
Se desideri specificamente che gli account vengano memorizzati nel database locale delle password, consulta il file /etc/passwd. Il file contiene un record separato da due punti per ogni account locale. Un record tipico include il nome utente, il segnaposto della password, l'UID, il GID primario, il campo dei commenti, la directory home e la shell di login.
Solo per i nomi utente:
cut -d: -f1 /etc/passwd
Lo stesso risultato può essere ottenuto con awk:
awk -F: '{print $1}' /etc/passwd
Questo elenco normalmente include sia utenti umani che account di servizio come root, daemon, o account creati da software installato.
Il cutcomando estrae solo il primo campo, ovvero il nome utente.
Visualizza i dati completi dell'account locale
Per visualizzare l'intero file locale, utilizzare lessil comando che consente di scorrere comodamente:
less /etc/passwd
È anche possibile stampare il file direttamente:
cat /etc/passwd
Sui moderni sistemi Linux, il campo password contiene comunemente x. Ciò non significa che la password venga memorizzata come testo in chiaro in /etc/passwd; gli hash delle password vengono normalmente conservati separatamente in /etc/shadow, che ha permessi più restrittivi. Il progetto Linux man-pages documenta i sette campi e questo comportamento della password ombra in passwd(5) .
Una /etc/passwdvoce completa contiene il nome utente, l'UID, il GID, la directory home, la shell e altri campi dell'account.
Elenca i nomi utente con Bash compgen
Se utilizzi Bash, compgenpuoi generare candidati per il completamento del nome utente:
compgen -u
Per un risultato lungo, sfoglialo pagina per pagina con:
compgen -u | less
Oppure rimuovi i nomi duplicati e ordina l'output:
compgen -u | sort -u
compgenè un comando integrato di Bash, quindi è meno universale rispetto getentagli script che devono funzionare su shell diverse. Il manuale di GNU Bash lo documenta compgencome parte delle funzionalità di completamento programmabile di Bash.
In Bash, compgen -u | lessfornisce un elenco di nomi utente paginato.
Come visualizzare gli utenti regolari anziché gli account di servizio
Non esiste un singolo valore limite UID corretto per ogni distribuzione Linux o organizzazione. Molti sistemi riservano UID inferiori agli account di sistema e li assegnano agli utenti regolari a partire da un valore minimo configurato, ma questa politica può variare. Se il tuo sistema utilizza /etc/login.defs, puoi verificarne il valore minimo configurato con:
grep '^UID_MIN' /etc/login.defs
Puoi anche cercare account con shell interattive come indizio pratico:
Si tratta solo di un'ipotesi euristica: un account può avere una shell interattiva senza essere un normale utente desktop, e gli utenti gestiti esternamente possono seguire politiche UID diverse.
Salva, conta o cerca nell'elenco utenti
Una volta ottenuto l'elenco necessario, gli strumenti standard della shell ne semplificano il riutilizzo:
Salva i nomi utente:getent passwd | cut -d: -f1 > ~/linux-users.txt
Migliore impostazione predefinita; segue le sorgenti utente NSS configurate
cut -d: -f1 /etc/passwd
Solo nomi utente locali
cat /etc/passwdoless /etc/passwd
Ispezione dei registri completi dell'account locale
compgen -u
Elenco rapido dei nomi utente da Bash
Per la maggior parte degli amministratori e degli utenti desktop, inizia con getent passwd | cut -d: -f1. Usa /etc/passwdquando hai bisogno intenzionalmente solo di account locali.