Linux Elenca i membri del gruppo nel terminale Linux
In questo tutorial, esamineremo diversi modi in cui puoi elencare i membri di un gruppo in Linux. Il /etc/group
il file di testo memorizza le informazioni sul gruppo. C’è una voce per riga che contiene le seguenti informazioni:
- Nome del gruppo
- Parola d’ordine
- ID gruppo (GID)
- Elenco degli utenti del gruppo
Per avere un’idea di cosa stiamo parlando, creeremo nuovi utenti e successivamente li aggiungeremo a un gruppo denominato opensource
.
Aggiunta di un nuovo utente
Per aggiungere un nuovo utente a Linux, esegui il seguente comando:
# adduser
You'll be prompted to enter the usernanme passsword and other details such as Phone number. For instance , let's add a new user called Andrew
addser andrew
Adding user `andrew' ...
Adding new group `andrew' (1001) ...
Adding new user `andrew' (1004) with group `andrew' ...
Creating home directory `/home/andrew' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for andrew
Enter the new value, or press ENTER for the default
Full Name []: andrew james
Room Number []: 45
Work Phone []: 555-456
Home Phone []: 987-764
Other []:
Is the information correct? [Y/n] Y
Utilizzando lo stesso comando e la stessa procedura, possiamo aggiungere più utenti, in questo caso ‘James’, ‘Alice’ e ‘Paul’.
Aggiunta di un nuovo gruppo
Per aggiungere un nuovo gruppo, devi usare il comando “groupadd”.
Il seguente comando aggiungerà un nuovo gruppo “opensource”.
# groupadd opensource
Per confermare l’esistenza del gruppo in “/etc/group” eseguire:
# grep -i "opensource" /etc/group
Aggiunta di utenti al gruppo
Ora aggiungiamo gli utenti appena creati al gruppo “opensource”. Useremo il comando usermod per questo.
Per aggiungere l’utente “james” al gruppo “opensource” eseguire il seguente comando:
# usermod -aG opensource james
Come elencare i membri di un gruppo
1) Usando cat /etc/group
Come abbiamo visto in precedenza, le informazioni sul gruppo sono memorizzate in /etc/group
. Per visualizzare queste informazioni, eseguire
# cat /etc/group
Otterrai un elenco di gruppi definiti dal sistema e il gruppo che abbiamo creato in precedenza
# opensource:x:1005:james,alice,paul
Qui,
fonte aperta è il nome del gruppo
X rappresenta password crittografata
1005 rappresenta ID gruppo (GID)
James, Alice, Paul rappresentano UTENTI esistenti nel gruppo.
2) Utilizzando il comando membro
Puoi usare members
comando per elencare gli utenti in un gruppo.
La sintassi per questo è
# members groupname
In questo esempio, avremo
# members opensource
Uscita
james alice paul
3) Utilizzando il comando getent
Puoi anche usare getent
comando per elencare gli utenti nel gruppo.
Di seguito la sintassi:
# getent group groupname
Per esempio
# getent group opensource
Uscita
opensource:x:1005:james,paul
4) Utilizzando uno script perl
Infine, puoi elencare tutti i gruppi sul tuo sistema Linux e visualizzare tutti i membri in quei gruppi usando uno script perl come mostrato.
Innanzitutto, crea lo script utilizzando il tuo editor di testo preferito
# vim userlist.pl
Copy and Paste this script and Save
#!/usr/bin/perl -T
#
# Lists members of all groups, or optionally just the group
# specified on the command line.
use strict; use warnings;
$ENV{"PATH"} = "/usr/bin:/bin";
my $wantedgroup = shift;
my %groupmembers;
my $usertext = `getent passwd`;
my @users = $usertext =~ /^([a-zA-Z0-9_-]+):/gm;
foreach my $userid (@users)
{
my $usergrouptext = `id -Gn $userid`;
my @grouplist = split(' ',$usergrouptext);
foreach my $group (@grouplist)
{
$groupmembers{$group}->{$userid} = 1;
}
}
if($wantedgroup)
{
print_group_members($wantedgroup);
}
else
{
foreach my $group (sort keys %groupmembers)
{
print "Group ",$group," has the following members:n";
print_group_members($group);
print "n";
}
}
sub print_group_members
{
my ($group) = @_;
return unless $group;
foreach my $member (sort keys %{$groupmembers{$group}})
{
print $member,"n";
}
}
Salva ed esci.
Concedi allo script i permessi di esecuzione
# chmod +x userlist.pl
Infine, esegui lo script
# ./userlist.pl
Esempio di output
Group opensource has the following members:
james
paul
Group paul has the following members:
paul
Group plugdev has the following members:
ubuntu
Group postfix has the following members:
postfix
Group proxy has the following members:
proxy
Group root has the following members:
root
Group sudo has the following members:
ubuntu
Group sys has the following members:
sys
Group syslog has the following members:
syslog
Group systemd-bus-proxy has the following members:
systemd-bus-proxy
Group systemd-network has the following members:
systemd-network
Group systemd-resolve has the following members:
systemd-resolve
Group systemd-timesync has the following members:
systemd-timesync
Group ubuntu has the following members:
ubuntu
Group uucp has the following members:
uucp
Group uuidd has the following members:
uuidd
Group video has the following members:
ubuntu
Group www-data has the following members:
www-data
Come visto sopra, siamo stati in grado di ottenere molto con poco sforzo utilizzando lo scripting della shell.
Conclusione
In questo breve tutorial, ti ho mostrato i comandi di base insieme a uno script perl che puoi usare per visualizzare comodamente i gruppi e i membri di quei gruppi. Siamo lieti che tu abbia dedicato del tempo con noi. Resta sintonizzato per ulteriori tutorial informativi.