Come elencare tutti gli utenti in un gruppo su Linux
Pubblicato: 2022-08-29Su 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
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.
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
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".
Se vogliamo estrarre un singolo gruppo, possiamo cercare usando grep
. Il cursore “ ^
” rappresenta l'inizio di una riga.
grep "^devteam" /etc/group
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
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.
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
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
Su Manjaro, libuser
è installato da AUR, quindi dovrai usare il tuo helper AUR preferito. Abbiamo usato yay
.
si libuser
È 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
Per vedere i membri di un gruppo, usa l' -g
(gruppo) insieme al nome del gruppo.
sudo libuser-lid -g 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
- 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".
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
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