Lista de miembros del grupo de Linux en la terminal de Linux

En este tutorial, veremos diferentes formas de enumerar los miembros de un grupo en Linux. El /etc/group El archivo de texto almacena información del grupo. Hay una entrada por línea que contiene la siguiente información:

  1. Nombre del grupo
  2. Contraseña
  3. ID de grupo (GID)
  4. Lista de usuarios del grupo

Para tener una idea de lo que estamos hablando, vamos a crear nuevos usuarios y luego agregarlos a un grupo llamado 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, necesita usar el comando ‘groupadd’.

El siguiente comando agregará un nuevo grupo de ‘código abierto’.

# groupadd opensource

Para confirmar que el grupo existe 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 ‘código abierto’, ejecute el siguiente comando:

# usermod -aG opensource james

Cómo listar miembros de un grupo

1) Usando cat / etc / group

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 es el Nombre del grupo
X representa el contraseña cifrada
1005 representa el ID de grupo (GID)
James, Alice, Paul representa el usuarios existente en el grupo.

2) Usando el comando de miembros

Puedes usar members comando para listar usuarios en un grupo.

La sintaxis de esto es

# members groupname

En esto example, tendremos

# members opensource

Producción

james alice paul

3) Usando el comando getent

También puede utilizar el getent comando para listar usuarios en el grupo.

A continuación se muestra la sintaxis:

# getent group groupname

Para example

# getent group opensource

Producción

opensource:x:1005:james,paul

4) Usando un script perl

Finalmente, puede enumerar todos los grupos en su sistema Linux y mostrar todos los miembros en esos grupos usando un script de Perl como se muestra.

Primero, cree el script con 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";
}
}

Save y salir.

Dar 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, hemos podido lograr mucho con poco esfuerzo utilizando el script de shell.

Conclusión

En este breve tutorial, le mostramos comandos básicos junto con un script de perl que puede usar para mostrar convenientemente grupos y miembros de esos grupos. Nos alegra que se haya tomado un tiempo con nosotros. Quédese aquí para obtener más tutoriales informativos.

Leer también:

  • 106 Comandos de Linux: un breve resumen con ejemplos