Introduzione
In Linux, un gruppo è una raccolta di utenti. Lo scopo principale dei gruppi è definire un insieme di privilegi come l'autorizzazione di lettura, scrittura o esecuzione per una determinata risorsa che può essere condivisa tra gli utenti all'interno del gruppo. Gli utenti possono essere aggiunti a un gruppo esistente.
Questo tutorial spiega come mostrare tutti i gruppi di cui un utente è membro. Spiegheremo anche come elencare tutti i membri di un gruppo.
Gruppi su Linux
Esistono due tipi di gruppi a cui un utente può appartenere:
- Gruppo primario o di accesso : è il gruppo assegnato ai file creati dall'utente. Di solito, il nome del gruppo primario è uguale al nome dell'utente. Ogni utente deve appartenere esattamente a un gruppo primario.
- Gruppo secondario o supplementare : utilizzato per concedere determinati privilegi a un insieme di utenti. Un utente può essere membro di zero o più gruppi secondari.
Elenca tutti i gruppi di cui un utente è membro
Esistono diversi modi per scoprire i gruppi a cui appartiene un utente.
Il gruppo dell'utente primario è archiviato nel file /etc/passwd e i gruppi supplementari, se presenti, sono elencati nel file /etc/group.
Un modo per trovare i gruppi dell'utente è elencare il contenuto di quei file usando cat, less o grep. Un'altra opzione più semplice è utilizzare un comando il cui scopo è fornire informazioni sugli utenti e sui gruppi del sistema.
Usando il comando groups
Il comando più facile per elencare tutti i gruppi di cui un utente è membro è il comando groups. Se eseguito senza un argomento, il comando stamperà un elenco di tutti i gruppi a cui l'utente attualmente connesso appartiene:
groups
Il primo gruppo è il gruppo primario.
noviello sudo plugdev lpadmin
Per ottenere un elenco di tutti i gruppi a cui appartiene un utente specifico, indicare il nome utente al comando groups come argomento:
groups noviello
Il primo gruppo è il gruppo primario.
noviello : noviello sudo
Usando il comando id
Il comando id stampa informazioni sull'utente specificato e sui suoi gruppi. Se il nome utente viene omesso, mostra le informazioni per l'utente corrente.
Ad esempio, per ottenere informazioni sull'utente noviello, digitare:
id noviello
Il comando mostrerà il nome utente ( uid ), il gruppo primario dell'utente ( gid ) e i gruppi secondari dell'utente ( groups)
uid=1001(noviello) gid=1001(noviello) groups=1001(noviello),27(sudo)
Per stampare solo i nomi senza ID utente e gruppo utilizzare l'opzione -n. L'opzione -g stampa solo il gruppo primario e l'opzione -G stampa tutti i gruppi.
Il comando seguente stamperà i nomi dei gruppi di cui l'utente corrente è membro:
id -nG
noviello sudo plugdev lpadmin
Elenca tutti i membri di un gruppo
Per elencare tutti i membri di un gruppo, utilizzare il comando getent group seguito dal nome del gruppo.
Ad esempio, per scoprire i membri di un gruppo con il nome ftp, utilizzare il comando seguente:
getent group ftp
Se il gruppo esiste, il comando stamperà il gruppo e tutti i suoi membri:
ftp:x:126:piero,ftpuser
Se non c'è output significa che il gruppo non esiste.
Elenca tutti i gruppi
Per visualizzare tutti i gruppi presenti sul sistema è sufficiente aprire il file /etc/group. Ogni riga in questo file rappresenta le informazioni per un gruppo.
less /etc/group
Un'altra opzione è quella di utilizzare il comando getent che visualizza le voci dei database configurati nel file /etc/nsswitch.conf incluso il database group che possiamo usare per interrogare un elenco di tutti i gruppi.
Per ottenere un elenco di tutti i gruppi, digitare il comando seguente:
getent group
L'output è lo stesso di quando si visualizza il contenuto del file /etc/group. Se si utilizza LDAP per l'autenticazione dell'utente il comando getent mostrerà tutti i gruppi sia dal file /etc/group che dal database LDAP.
Puoi anche usare awk o cut per stampare solo il primo campo contenente il nome del gruppo:
getent group | awk -F: '{ print $1}'
getent group | cut -d: -f1
Conclusione
In questo tutorial, hai imparato come trovare i gruppi di cui un utente è membro. Gli stessi comandi si applicano a qualsiasi distribuzione Linux, inclusi Ubuntu, CentOS, RHEL, Debian e Linux Mint.