Linux Enumera los miembros del grupo en la terminal de Linux
En este tutorial, veremos diferentes formas de enumerar los miembros de un grupo en Linux. los /etc/group
archivo de texto almacena información de grupo. Hay una entrada por fila que contiene la siguiente información:
- Nombre del grupo
- Clave
- ID de grupo (GID)
- Lista de usuarios del grupo
Para tener una idea de lo que estamos hablando, crearemos nuevos usuarios y luego los agregaremos a un grupo nombrado opensource
.
Agregar un nuevo usuario
Para agregar un nuevo usuario a Linux, ejecute el siguiente 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
Usando el mismo comando y procedimiento, podemos agregar más usuarios, en este caso ‘James’, ‘Alice’ y ‘Paul’.
Agregar un nuevo grupo
Para agregar un nuevo grupo, debe usar el comando «groupadd».
El siguiente comando agregará un nuevo grupo «opensource».
# groupadd opensource
Para confirmar la existencia del grupo en «/etc/group» ejecute:
# grep -i "opensource" /etc/group
Agregar usuarios al grupo
Ahora agreguemos los usuarios recién creados al grupo «código abierto». Usaremos el comando usermod para esto.
Para agregar el usuario «james» al grupo «opensource», ejecute el siguiente comando:
# usermod -aG opensource james
Cómo enumerar los miembros de un grupo
1) Usar gato/etc/grupo
Como vimos anteriormente, la información del grupo se almacena en /etc/group
. Para mostrar esta información, ejecute
# cat /etc/group
Obtendrá una lista de grupos definidos por el sistema y el grupo que creamos anteriormente
# opensource:x:1005:james,alice,paul
Aquí,
fuente abierta Está El nombre del grupo
X representa contraseña encriptada
1005 representa ID de grupo (GID)
James, Alice, Paul representan USUARIOS existente en el grupo.
2) Usando la orden de miembro
Puedes usar members
Comando para listar usuarios en un grupo.
La sintaxis para esto es
# members groupname
En este ejemplo tendremos
# members opensource
Salida
james alice paul
3) Usando el comando getent
También puedes usar getent
Comando para listar los usuarios en el grupo.
A continuación se muestra la sintaxis:
# getent group groupname
P.ej
# getent group opensource
Salida
opensource:x:1005:james,paul
4) Usando una secuencia de comandos perl
Finalmente, puede enumerar todos los grupos en su sistema Linux y mostrar todos los miembros en esos grupos usando un script perl como se muestra.
Primero, cree el script usando su editor de texto favorito
# 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";
}
}
Guardar y Salir.
Otorgue permisos de ejecución al script
# chmod +x userlist.pl
Finalmente, ejecute el script
# ./userlist.pl
Salida de muestra
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
Como se vio anteriormente, pudimos lograr mucho con poco esfuerzo usando secuencias de comandos de shell.
Conclusión
En este breve tutorial, le mostré los comandos básicos junto con un script de perl que puede usar para mostrar grupos y los miembros de esos grupos de manera conveniente. Nos alegra que se haya tomado el tiempo con nosotros. Estén atentos para más tutoriales informativos.