Linux终端中的Linux列表组成员
时间:2020-03-05 15:28:34 来源:igfitidea点击:
在本教程中,我们将查看不同方式如何在Linux中列出一个组的成员。
"/etc/group"文本文件存储组信息。
每行有一个条目,其中包含以下信息:
- 组的名字
- 密码
- 组ID(GID)
- 组用户列表
要拍摄我们所谈论的内容,我们将创建新用户,后来将它们添加到一个名为"OpenSource"的组中。
添加新用户
要将新用户添加到Linux运行以下命令:
# 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
使用相同的命令和过程,我们可以添加更多用户,在这种情况下,'James','Alice'和'Paul'。
添加一个新组
添加新组,我们需要使用'groupadd'命令。
以下命令将添加新组"openSource"。
# groupadd opensource
要确认该组存在于'/etc/group'运行中:
# grep -i "opensource" /etc/group
将用户添加到组
现在,让我们将新创建的用户添加到组"OpenSource"中。
我们将使用usermod命令为此。
要将用户的"james"添加到"OpenSource"的"OpenSource"运行以下命令:
# usermod -aG opensource james
如何列出组成员
1)使用CAT/etc/group
正如我们之前所看到的那样,小组信息存储在"/etc/group"中。
显示此信息运行
# cat /etc/group
我们将获得系统定义的组列表和我们之前创建的组
# opensource:x:1005:james,alice,paul
其中
OpenSource是组名称X表示加密密码1005表示组ID(GID)James,Alice,Paul表示组中存在的用户)使用成员命令
我们可以使用"成员"命令列出组中的用户。
这个语法是
# members groupname
在这个例子中,我们将拥有
# members opensource
输出
james alice paul
3)使用Getent命令
我们还可以使用"getent"命令"列出组中的用户。
以下是语法:
# getent group groupname
例如
# getent group opensource
输出
opensource:x:1005:james,paul
4)使用Perl脚本
最后,我们可以列出Linux系统中的所有组,并使用Perl脚本显示这些组中的所有成员,如图所示。
首先,使用我们喜欢的文本编辑器创建脚本
# 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";
}
}
保存并退出。
给脚本执行权限
# chmod +x userlist.pl
最后,运行脚本
# ./userlist.pl
示例输出
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

