Come elencare gli utenti in Linux

Pubblicato: 2022-06-25
Laptop Linux che mostra un prompt bash
fatmawati achmad zaenuri/Shutterstock.com

Linux è un sistema operativo multiutente, quindi creare numerosi account utente è facile. Nel tempo, è facile perdere traccia di quali account sono richiesti. L'elenco degli account utente ti aiuta a gestirli.

Profili utente

I progressi tecnologici spesso portano i loro nuovi problemi. Non appena i computer sono stati in grado di supportare più utenti, è diventata evidente la necessità di delimitare e incapsulare il lavoro di ogni persona da tutti gli altri. Ciò ha portato al concetto di account utente. Ogni utente ha un ID e una password nominati. Queste sono le credenziali che consentono loro di accedere al proprio account. I loro file sono conservati in un'area privata per ciascun utente.

In un sistema occupato, è facile perdere di vista quali account hai creato e quali non sono più necessari. Dal punto di vista della sicurezza, è una cattiva pratica mantenere gli account utente che non devono più essere configurati e accessibili sul proprio computer. Dovresti rimuovere quegli utenti.

Anche se non hai altre persone che usano il tuo computer, potresti aver creato degli account solo per imparare come farlo, o per imparare e fare pratica con i processi di amministrazione.

Come eliminare un utente su Linux (e rimuovere ogni traccia)
CORRELATI Come eliminare un utente su Linux (e rimuovere ogni traccia)

Il primo passaggio consiste nell'elenco degli account utente configurati sul computer. Ciò ti consente di esaminarli ed esprimere un giudizio che può essere eliminato. Esistono diversi metodi per elencare gli utenti. Indipendentemente dalla distribuzione in uso, queste tecniche dovrebbero funzionare per te senza la necessità di installare applicazioni o utilità.

Elenca gli utenti con il comando cat

Un elenco degli utenti configurati viene mantenuto, insieme alle informazioni su ciascun utente, nel file "/etc/passwd". Questo è un file di testo che gli utenti normali possono elencare nella finestra del terminale. Non è necessario utilizzare sudo per esaminare il file "/etc/passwd".

Come modificare i dati utente con chfn e usermod su Linux
CORRELATI Come modificare i dati utente con chfn e usermod su Linux

Possiamo usare il comando cat per inviare il contenuto del file “/etc/passwd” alla finestra del terminale. Questo elencherà l'intero contenuto del file. Ciò significa che vedrai anche le voci per gli account utente che sono di proprietà dei processi e del sistema, non delle persone.

 gatto /etc/passwd 

Inviando il contenuto del file /etc/passwd alla finestra del terminale con cat

C'è una linea di informazioni dense riportate per ogni account utente.

Il contenuto del file /etc/passwd

Le informazioni per l'account utente chiamato "dave" contengono queste informazioni, con i due punti " : " tra di loro.

  • dave : il nome dell'account utente. Di solito il nome della persona che possiede l'account.
  • x : un tempo conteneva la password dell'account. Al giorno d'oggi, le password sono memorizzate nel file "/etc/shadow". La "x" significa che la password è in quel file.
  • 1000 : L'ID utente per questo account. Tutti gli account utente hanno un ID numerico univoco. Gli account utente regolari di solito iniziano da 1000, con ogni nuovo account che prende l'ID gratuito successivo, come 1001, 1002 e così via.
  • 1000 : L'ID del gruppo predefinito a cui appartiene l'utente. In circostanze normali, il gruppo predefinito ha lo stesso valore dell'ID utente.
  • dave,,, : una raccolta di informazioni aggiuntive opzionali sull'utente. Questo campo contiene dati con virgole " , " tra di loro. Possono contenere elementi come il nome completo dell'utente, il numero dell'ufficio e il numero di telefono. La voce per l'account utente "mary" mostra che il suo nome completo è Mary Quinn.
  • /home/dave : il percorso della cartella home dell'utente.
  • /bin/bash : la shell predefinita per questo utente.

Se conduciamo l'output di questo comando tramite l'utilità wc e utilizziamo l'opzione -l (linee), possiamo contare le righe nel file. Questo ci darà il numero di account configurati su questo computer.

 gatto /etc/passwd | wc -l 

Conteggio del numero di account nel file /etc/passwd

Tale cifra include gli account di sistema e gli utenti creati dalle applicazioni. Ci sono circa 400 utenti regolari configurati su questo computer. È probabile che il tuo risultato sia molto inferiore.

Con così tanti account, è più conveniente usarne less per visualizzare il file "/etc/passwd".

 meno /etc/passwd 

Aprendo il file /etc/passwd in meno

L'uso di less consente anche di cercare all'interno dell'output, se si desidera cercare un account utente particolare.

Cercando l'account mary nel file /etc/passwd, in less

Il comando awk

Usando il comando awk possiamo visualizzare solo il nome utente. Questo può essere utile quando stai scrivendo uno script che deve fare qualcosa per molti account utente. Elencare i nomi degli account utente e reindirizzarli in un file di testo può essere un ottimo risparmio di tempo. Tutto quello che devi fare è copiare e incollare il resto del comando su ciascuna riga.

Come utilizzare il comando awk su Linux
CORRELATI Come utilizzare il comando awk su Linux

Diremo ad awk di usare i due punti “:” come separatore di campo e di stampare il primo campo. Useremo l'opzione -F (separatore di campo).

 awk -F: '{stampa $1}' /etc/passwd 

Un comando awk per selezionare solo i nomi utente da /etc/passwd

I nomi degli account utente vengono scritti nella finestra del terminale senza nessuna delle altre informazioni sull'account.

I nomi degli account utente visualizzati nella finestra del terminale

Il comando di taglio

Possiamo ottenere lo stesso genere di cose usando il comando cut . Dobbiamo usare l'opzione -d (delimitatore) e chiedergli di selezionare solo il primo campo, usando l'opzione -f (campi).

 taglia -d: -f1 

Usando il comando cut per visualizzare solo i nomi utente dal file /etc/passwd

Questo elenca tutti gli account utente, incluso il sistema e altri account non umani.

Il comando compgen

Il comando compgen può essere utilizzato con l'opzione -u (utente) per elencare gli account utente. Indirizzeremo l'output tramite il comando column per elencare gli account utente in colonne, invece di un lungo elenco con un unico nome utente per riga.

 compgen -u | colonna 

Utilizzo dei comandi compgen e column per elencare in colonne i nomi degli account utente dal file /etc/passwd

Anche in questo caso, i primi account utente elencati appartengono a processi, non umani.

UID MIN e UID MAX

Agli account utente viene assegnato un ID numerico, che abbiamo visto in precedenza. Di solito, gli account utente umani regolari iniziano da 1000 e gli account utente di sistema, non umani, iniziano da 0. L'ID dell'account root è 0.

Se siamo in grado di verificare gli ID utente più bassi e più alti possibili, possiamo utilizzare tali informazioni per selezionare gli account utente che si trovano tra questi due valori. Ciò ci consentirà di selezionare solo gli account utente appartenenti a persone reali.

Linux tiene traccia di questi due valori usando parametri di configurazione chiamati UID_MIN e UID_MAX . Questi sono conservati nel file "/etc/login.defs". Possiamo facilmente vedere questi valori usando grep .

Utilizzeremo l'opzione -E (espressione regolare estesa). La nostra stringa di ricerca cerca le righe che iniziano con "UID_MIN" o "UID_MAX" nel file "/etc/login.defs". Il cursore “ ^ ” rappresenta l'inizio di una riga.

 grep -E '^UID_MIN|^UID_MAX' /etc/login.defs 

L'intervallo per gli ID utente su questo computer è compreso tra 1000 e 60.000.

CORRELATI: Come utilizzare le espressioni regolari (regex) su Linux

Il comando getent

Il comando getent legge le informazioni dai database di sistema. Possiamo dirgli di elencare le voci nel file "/etc/passwd" usando "passwd" come parametro.

 getent passwd 

Usare getent per scaricare il file /etc/passwd nella finestra del terminale

Questo ci dà la stessa lettura che possiamo ottenere usando cat . Ma dove getent brilla è accettando valori noti come "chiavi". Una chiave determina su quali informazioni getent riportati i rapporti. Se vogliamo vedere la voce per un singolo utente, possiamo passare il nome del suo account utente sulla riga di comando.

 getent passwd Sarah

Si noti che il nome dell'account utente fa distinzione tra maiuscole e minuscole.

 getent passwd sarah 

Alla ricerca di un account utente singolo con getent

Possiamo anche superare i limiti superiore e inferiore degli ID account utente che vogliamo vedere. Per vedere assolutamente tutti gli account utente regolari, possiamo utilizzare i valori di UID_MIN e UID_MAX .

 getent passwd {1000..60000} 

Utilizzo di ID account superiore e inferiore con getent

Questo richiede del tempo per l'esecuzione. Alla fine, verrai restituito al prompt dei comandi.

Il contenuto del file /etc/passwd inviato alla finestra del terminale da getent

Il motivo del lungo tempo di esecuzione è che getent cerca di trovare corrispondenze per tutti i valori dell'account utente fino a 60000.

Vediamo qual è l'ID account utente più alto. Useremo il comando cut , ma questa volta chiederemo il campo tre, il campo dell'ID utente. Indirizzeremo l'output tramite l' sort e utilizzeremo l' -g (ordinamento numerico generale).

 taglia -d: -f3 /etc/passwd | ordina -g 

Il comando per reindirizzare l'output da cut al comando di ordinamento

Il valore ID più alto di un account utente di proprietà umana è 1401.

Un elenco ordinato di ID account utente

L'ID utente 65534 è assegnato al concetto di sistema di "nessuno".

 getent passwd {65534..65534} 

L'utente del sistema nessuno, con ID 65534

Quindi sappiamo che invece di usare il valore UID_MAX di 60000, su questo computer possiamo usare un valore più realistico come 1500. Questo accelererà notevolmente le cose. Invieremo anche l'output attraverso il cut per estrarre solo i nomi degli account utente.

getent passwd {1000..1500} | taglia -d: -f1

L'output di getent reindirizzato attraverso il taglio per elencare i nomi degli account utente

Gli utenti vengono elencati e si torna immediatamente al prompt dei comandi.

Invece di convogliare l'output attraverso cut , convogliamo l'output attraverso wc e contiamo ancora una volta le righe. Questo ci darà il numero di account utente "reali".

 getent passwd {1000..1500} | wc -l 

Contando gli account utente regolari con getent e wc

Ora possiamo vedere che su questo computer, in definitiva, ci sono 400 account utente configurati, di proprietà umana.

Potenza e semplicità

Una di queste tecniche soddisferà sicuramente le tue esigenze quando devi rivedere gli account utente su un computer Linux. Questi comandi dovrebbero essere presenti su tutte le distribuzioni e nessuna di esse richiede l'accesso sudo , quindi sono tutti disponibili per ogni utente.

CORRELATI: Come controllare sudo Access su Linux