Come elencare tutti gli utenti in un gruppo su Linux

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

Su Linux, i file hanno tre set di autorizzazioni. Un set è per il gruppo del file. Prima di allocare un file a un gruppo, potresti voler controllare chi sono i membri del gruppo.

Autorizzazioni di file e directory

I file e le directory su Linux hanno una serie di autorizzazioni per il proprietario, un'altra serie per il gruppo a cui è allocato il file e autorizzazioni per tutti coloro che non sono in una delle due categorie precedenti.

Ciascun set di autorizzazioni definisce se i membri di quella categoria possono leggere, scrivere o eseguire il file. Nel caso di una directory, l'azione di esecuzione equivale a essere in grado di eseguire cd nella directory.

Il gruppo predefinito per un file o una directory è il gruppo predefinito del proprietario. Di solito è la persona che lo ha creato. Le autorizzazioni di gruppo vengono utilizzate per consentire a una raccolta di utenti di avere accesso controllato ai file e alle directory degli altri membri di quel gruppo.

Ad esempio, potresti avere un team di sviluppatori, un team di documentazione, un team di ricerca e così via. I membri di ogni squadra possono essere aggiunti a un gruppo opportunamente nominato, per favorire la collaborazione. Gli utenti possono essere in più gruppi contemporaneamente.

È uno schema semplice ma robusto. Ma se i tuoi file sono sensibili, potresti sentirti più felice di controllare chi sono i membri del gruppo, prima di condividere il tuo lavoro con loro. Ci sono diversi modi per farlo. Ma prendi nota. I due metodi consigliati più frequentemente sono problematici.

CORRELATI: Come utilizzare il comando chgrp su Linux

Il file /etc/groups

Il file “/etc/group” contiene un elenco di gruppi e membri del gruppo delimitato da due punti “ : ”. Ogni riga ha quattro campi.

  • Nome : il nome univoco del gruppo.
  • Password : non utilizzata. Questo conterrà sempre "x".
  • ID gruppo : l'identificatore univoco del gruppo.
  • Utenti : un elenco delimitato da virgole dei membri del gruppo. L'elenco è generalmente vuoto per gli account di sistema e daemon.

Per scaricare il contenuto del file nella finestra del terminale, puoi usare cat , ma è più comodo poter scorrere il contenuto del file con less .

 meno /etc/group 

Usare cat per vedere il contenuto del file /etc/group

La maggior parte delle voci in cima all'elenco non ha membri, sebbene il gruppo "adm" ne abbia due e il gruppo "cdrom" ne abbia uno.

La prima parte del file /etc/groups nel visualizzatore di file less

Se vogliamo scoprire i gruppi in cui si trova un utente specifico, possiamo utilizzare grep per cercare voci con il nome dell'account utente. Questo non è il nostro compito a portata di mano. Vogliamo vedere tutti i membri di un gruppo, non i gruppi a cui appartiene una persona. Ma è istruttivo per noi dare un'occhiata.

 grep "dave" /etc/group 

L'elenco dei gruppi di cui l'utente dave è membro

Le voci che contengono la stringa "dave" sono elencate per noi. E nascosto tra loro c'è un segno che le cose potrebbero non essere così semplici come pensavamo.

Quando un utente viene aggiunto a Linux, l'azione predefinita è inserirlo in un gruppo con lo stesso nome del suo account utente. Questo è il loro gruppo principale . Tutti gli altri gruppi a cui vengono aggiunti sono noti come gruppi secondari .

Il problema è che gli utenti non sono elencati come membri dei loro gruppi primari . Ecco perché il gruppo "dave" non mostra alcun membro, sebbene l'utente "dave" sia un membro di quel gruppo.

Naturalmente, gli amministratori di sistema possono modificare il gruppo principale di qualsiasi utente in quello di qualsiasi altro gruppo. Ciò significa che un utente può essere un membro di qualsiasi gruppo ma non sarà elencato come tale nel file "/etc/group". Questo è un problema.

Il secondo problema è che il file "/etc/group" non è un'unica fonte di verità. Le moderne installazioni di Linux possono archiviare le informazioni di utenti e gruppi in più posizioni rispetto a "/etc/passwd" e "/etc/group", specialmente in situazioni aziendali in cui sono distribuiti servizi come Lightweight Directory Access Protocol. Guardando solo in un punto, potresti non vedere il quadro generale.

Nel nostro scenario di test, abbiamo creato quattro gruppi per un reparto di sviluppo. Sono:

  • resteam : Il gruppo di ricerca.
  • devteam : Il team di sviluppo.
  • pvqteam : Il team di verifica e qualità del prodotto.
  • docteam : Il team di documentazione.

Abbiamo aggiunto persone a queste squadre. Alcune persone sono in più di una squadra. Se apriamo il file “/etc/group” in less e scorriamo fino alla fine del file, vedremo i nuovi gruppi e membri del gruppo. Almeno, tanti membri quanti ne conosce il file "/etc/group".

La parte inferiore del file /etc/group nel visualizzatore di file less

Se vogliamo estrarre un singolo gruppo, possiamo cercare usando grep . Il cursore “ ^ ” rappresenta l'inizio di una riga.

 grep "^devteam" /etc/group 

Utilizzo di grep per estrarre i membri per un singolo gruppo

Questo estrae la voce "devteam" dal file ed elenca tutti i membri del gruppo. O lo fa?

Il comando getent

Il comando getent controlla più database per informazioni sui gruppi di utenti, non solo "/etc/group". Useremo getent per mostrarci i gruppi di utenti.

 gruppo getent 

Utilizzo di getent per elencare tutti i gruppi definiti

L'uso di getent con l'opzione group produce, su questa macchina di prova, gli stessi risultati dell'utilizzo del file "/etc/group". Questo perché non utilizziamo LDAP o altri servizi di denominazione centralizzati. Quindi non ci sono altre fonti a getent fare riferimento.

L'output del gruppo getent che mostra i gruppi e i membri

Non sorprende quindi che i risultati coincidano con quelli del file “/etc/group”. Forse quello che stiamo vedendo davvero è la realtà della situazione. Forse tutto è semplice e, su questo computer, quello che vedi è quello che ottieni? Riserviamoci il giudizio su questo.

Il comando getent può esaminare un singolo gruppo per noi. Daremo un'occhiata al gruppo "devteam".

 gruppo di sviluppo getent 

Utilizzo del gruppo getent per estrarre i dettagli di un singolo gruppo

Otteniamo esattamente gli stessi risultati di prima. C'è un modo per scavare più a fondo però.

CORRELATI: Come elencare gli utenti in Linux

Il comando del coperchio

Il comando lid fa parte della raccolta di strumenti libuser . Era già installato sul nostro computer di prova Fedora 36 ma doveva essere installato su Ubuntu 22.04 e Manjaro 21.

Inoltre, il comando si chiama lid su Fedora e Manjaro, ma su Ubuntu è necessario utilizzare libuser-lid .

Per installare il comando su Ubuntu, digita:

 sudo apt install libuser 

Installazione di libuser su Ubuntu

Su Manjaro, libuser è installato da AUR, quindi dovrai usare il tuo helper AUR preferito. Abbiamo usato yay .

 si libuser 

Installazione di libuser su Manjaro

È possibile utilizzare libuser-lid per visualizzare informazioni sui gruppi su gruppi o utenti. Per mostrare i gruppi in cui si trova un individuo, passa il nome dell'account utente sulla riga di comando. Su Fedora e Manjaro ricordarsi di usare lid invece di libuser-lid .

 sudo libuser-lib dave 

Utilizzo di libuser-lid per mostrare i gruppi di cui l'utente dave è membro

Per vedere i membri di un gruppo, usa l' -g (gruppo) insieme al nome del gruppo.

 sudo libuser-lid -g devteam 

usando libuser-lid per elencare i membri del gruppo devteam

Ecco, un utente chiamato "francis" è apparso come membro della lista. Questa è la prima volta che lo vediamo. Non è elencato in “/etc/group” e getent lo ha scoperto.

Diamo un'occhiata ad alcuni utenti con il comando groups .

 gruppi abigail
 gruppi Hayden
 gruppi Francesco 

Utilizzo del comando gruppi su una selezione di utenti

  • L'utente "abigail" fa parte di un gruppo chiamato "abigail" e di altri due gruppi, "resteam" e "devteam".
  • L'utente "hayden" fa parte di un gruppo chiamato "hayden" e di altri due gruppi, "pvqteam" e "docteam".
  • L'utente "francis" è in un unico gruppo, il gruppo "devteam". È da notare che non fanno parte di un gruppo chiamato "francis".
Aggiungi un utente a un gruppo (o secondo gruppo) su Linux
CORRELATI Aggiungi un utente a un gruppo (o secondo gruppo) su Linux

Sappiamo che ogni utente deve essere un membro di un gruppo principale e che per impostazione predefinita il gruppo principale ha un GID e un nome che corrispondono all'UID e al nome dell'account dell'utente. Sembrerebbe che ci sia qualcosa di diverso nell'utente "francis".

Usiamo il comando id e vediamo cosa ci dicono UID e GID.

 id abigail
 id Francesco 

Utilizzando il comando id sugli utenti abigail e francis

L'utente "abigail" ha un UID di 1002 e un GID di 1002. Sono suddivisi in tre gruppi, uno dei quali è chiamato "abigail". Ha un GID di 1002. Questo è il loro gruppo principale predefinito .

L'utente "francis" ha un GID di 1019, che corrisponde al GID del gruppo "devteam". A questo utente è stato assegnato un nuovo gruppo principale oppure il gruppo "devteam" è stato impostato come gruppo principale quando questo utente è stato aggiunto al sistema.

Qualunque fosse, solo libuser-lid li ha rilevati e ha segnalato la loro presenza nel gruppo "devteam".

Il diavolo è nei dettagli

Quindi è importante vedere i dettagli autentici.

I gruppi sono un ottimo modo per avviare una collaborazione, purché tu sappia con chi la stai aprendo.

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