如何在linux上列出组中的所有用户

在Linux上,文件有三组权限。一组用于文件组。在将文件分配给组之前,您可能需要检查组成员是谁。...

在Linux上,文件有三组权限。一组用于文件组。在将文件分配给组之前,您可能需要检查组成员是谁。

文件和目录权限

Linux上的文件和目录对所有者有一组权限,对文件分配到的组有另一组权限以及对不属于前两个类别之一的所有人的权限。

每个权限集定义该类别的成员是否可以读取、写入或执行文件。对于目录,执行操作等同于能够cd到目录中。

文件或目录的默认组是所有者的默认组。这通常是创建它的人。组权限用于允许用户集合控制对该组其他成员的文件和目录的访问。

例如,您可能有一个开发团队、文档团队、研究团队等等。可以将每个团队的成员添加到适当命名的组中,以帮助协作。用户可以同时处于多个组中。

这是一个简单但稳健的方案。但是,如果你的文件是敏感的,在与他们分享你的工作之前,你可能会更乐意检查小组成员是谁。有不同的方法可以做到这一点。但要注意。最常推荐的两种方法存在问题。

RELATED:如何在Linux上使用chgrp命令

/etc/groups文件

“/etc/group”文件包含冒号“:”分隔的组和组成员列表。每行有四个字段。

  • 名称:组的唯一名称。
  • 密码:未使用。这将始终保持“x”
  • 组ID:唯一的组标识符。
  • 用户:以逗号分隔的组成员列表。对于系统帐户和守护程序帐户,列表通常为空。

要将文件的内容转储到终端窗口,可以使用cat,但可以用更少的资源滚动文件的内容更方便。

less /etc/group

列表顶部的大多数条目都没有成员,尽管“adm”组有两个,“cdrom”组只有一个。

如果我们想发现特定用户所在的组,可以使用grep搜索具有其用户帐户名的条目。这不是我们手头的任务。我们想看到的是一个团体中的每个成员,而不是一个人所属的团体。但看看对我们来说是有启发性的。

grep "dave" /etc/group

我们列出了包含字符串“dave”的条目。隐藏在他们中间的是一个迹象,表明事情可能不像我们想象的那么简单。

将用户添加到Linux时,默认操作是将其放入与其用户帐户同名的组中。这是他们的主要群体。添加到其中的任何其他组都称为次要组。

问题是用户没有被列为其主要组的成员。这就是为什么组“dave”没有显示任何成员,尽管用户“dave“是该组的成员。

当然,系统管理员可以将任何用户的主组更改为任何其他组的主组。这意味着用户可以是任何组的成员,但不会在“/etc/group”文件中列出。这是一个问题。

第二个问题是“/etc/group”文件不是唯一的真相来源。现代Linux安装可以在比“/etc/passwd”和“/etc/group”更多的位置存储用户和组信息,特别是在部署轻量级目录访问协议(Lightweight Directory Access Protocol)等服务的公司情况下。只看一个地方,你可能看不到全局。

在我们的测试场景中,我们为一个开发部门创建了四个组。他们是:

  • resteam:研究团队。
  • 开发团队:开发团队。
  • pvqteam:产品验证和质量团队。
  • 文档团队:文档团队。

我们为这些团队增加了人员。有些人属于多个团队。如果我们在less中打开“/etc/group”文件并滚动到文件底部,我们将看到新的组和组成员。至少,“/etc/group”文件知道多少成员就有多少。

如果要提取单个组,可以使用grep进行搜索。插入符号“^”表示一行的开始。

grep "^devteam" /etc/group

这将从文件中提取“devteam”条目并列出所有组成员。还是真的?

getent命令

getent命令检查多个数据库中的用户组信息,而不仅仅是“/etc/group”。我们将使用getent显示用户组。

getent group

将getent与group选项一起使用将在该测试机器上产生与使用“/etc/group”文件相同的结果。这是因为我们没有使用LDAP或任何其他集中式命名服务。因此,getent没有其他可参考的来源。

因此,结果与“/etc/group”文件中的结果一致也就不足为奇了。也许我们真正看到的是现实情况。也许一切都很简单,在这台电脑上你看到的就是你得到的?让我们对此保留判断。

getent命令可以为我们查看单个组。我们将看看“devteam”组。

getent group devteam

我们得到了与以前完全相同的结果。不过,有一种方法可以挖得更深。

RELATED:如何在Linux中列出用户

lid命令

lid命令是libuser工具集合的一部分。它已经安装在我们的Fedora 36测试计算机上,但必须安装在Ubuntu 22.04和Manjaro 21上。

此外,在Fedora和Manjaro上,该命令称为lid,但在Ubuntu上,需要使用libuser lid。

要在Ubuntu上安装该命令,请键入:

sudo apt install libuser

在Manjaro上,libuser是从AUR安装的,因此您需要使用自己喜欢的AUR助手。我们用了yay。

yay libuser

您可以使用libuser lid显示有关组或用户的组信息。要显示个人所在的组,请在命令行中传递其用户帐户名。在Fedora和Manjaro上,请记住使用盖子而不是libuser盖子。

sudo libuser-lib dave

要查看组的成员,请使用-g(group)选项和组的名称。

sudo libuser-lid -g devteam

瞧,一个名为“francis”的用户出现在列表中。这是我们第一次见到他。他没有列在“/etc/group”中,getent也没有发现他。

让我们看看使用groups命令的几个用户。

groups abigail
groups hayden
groups francis

  • 用户“abigail”位于一个名为“abigail”的组中,另外两个组是“resteam”和“devteam”
  • 用户“hayden”位于一个名为“haydon”的组中,另外两个组是“pvqteam”和“docteam”
  • 用户“francis”位于单个组“devteam”组中。值得注意的是,他们不属于一个名为“弗朗西斯”的团体
RELATEDAdd a User to a Group (or Second Group) on Linux

我们知道,每个用户都必须是主组的成员,默认情况下,主组具有与用户的UID和帐户名匹配的GID和名称。用户“francis”似乎有些不同

让我们使用id命令,看看UID和GID告诉我们什么。

id abigail
id francis

用户“abigail”具有1002的UID和1002的GID。他们分为三个组,其中一个称为“abigail”。它的GID为1002。这是他们的默认主要组。

用户“francis”的GID为1019,与“devteam”组的GID匹配。此用户被分配了一个新的主组,或者在将此用户添加到系统时将“devteam”组设置为其主组。

无论是哪一个,只有libuser lid检测到它们,并报告它们存在于“devteam”组中。

细节决定成败

因此,重要的是要看到真正的细节。

小组是建立协作的一种很好的方式,只要你知道你要向谁开放。

RELATED:如何在Linux上使用chfn和usermod更改用户数据

  • 发表于 2022-10-01 00:12
  • 阅读 ( 32 )
  • 分类:互联网

你可能感兴趣的文章

新增用户(adduser)和用户添加(useradd)的区别

...期 -b用户主目录的基本目录 -用户ID -g初始组号 -G按名称列出的其他组 -c注释 图04:默认值 添加用户的示例如下:, 图05:使用useradd命令创建用户2 不能以普通用户的身份添加新用户。因此,对于超级用户应该使用sudo。m标志用...

  • 发布于 2020-10-19 22:40
  • 阅读 ( 188 )

如何将linux设备备份到amazon s3

...的学习曲线看起来很陡峭,但实际上很简单。让我们看看如何利用世界领先的云平台。 ...

  • 发布于 2021-03-12 15:53
  • 阅读 ( 249 )

如何隐藏linux上的文件和文件夹

... 我们已经介绍了如何在Windows和Mac上隐藏文件和文件夹。下面介绍如何在Linux上使用终端和Ubuntu中的文件管理器Nautilus隐藏文件和文件夹。我们还将讨论几种安全地隐藏文件和文件夹的方法...

  • 发布于 2021-03-25 15:00
  • 阅读 ( 406 )

如何在linux上使用groupadd管理用户组

... 相关:如何在Linux中更改密码 ...

  • 发布于 2021-03-26 17:15
  • 阅读 ( 185 )

如何在linux中使用ls命令

如果您不知道如何使用ls命令,那么获取与存储上的文件相关的详细信息是很困难的。在这里,我们将讨论Linux上与ls命令相关的所有内容,以及它使用的一些不同的标志。 ...

  • 发布于 2021-03-26 18:01
  • 阅读 ( 188 )

如何在linux中添加用户

想在Linux系统上添加用户但不知道如何添加?在Linux上使用命令行界面管理用户无疑是一项复杂的工作。而对于初学者来说,即使添加新用户也是一场噩梦。 ...

  • 发布于 2021-03-26 23:29
  • 阅读 ( 334 )

如何使用crontab自动化linux中的重复任务

... 在这里,您将了解什么是crontab,如何添加自动化作业,以及一些实际示例。 ...

  • 发布于 2021-03-28 04:45
  • 阅读 ( 209 )

如何在linux上删除用户(并删除所有跟踪)

...死他的进程之前,我们会锁定密码来冻结帐户。 相关:如何使用ps命令监视Linux进程 锁定帐户 在终止进程之前,我们将锁定帐户,因为当我们终止进程时,它将注销用户。如果我们已经更改了他的密码,他就无法登录了。 加密...

  • 发布于 2021-04-02 15:16
  • 阅读 ( 179 )

如何使用ls命令列出linux上的文件和目录

...命令之一。也许这是问题的一部分。有这么多的选择,你如何从中筛选出有用的呢?找到它们之后,你怎么记得它们? ls命令及其选项和参数字符串的有用排列是别名的最佳候选。实际上,在大多数发行版中,您认为的“裸”ls...

  • 发布于 2021-04-02 21:28
  • 阅读 ( 230 )

linux下如何用chfn和usermod修改用户数据

用户帐户不仅仅是用户名。了解如何从命令行设置和更改与Linux用户帐户关联的所有元数据。 名字里有什么? 如果您使用的是Linux或类似Unix的计算机,您将拥有一个用户帐户。指定给帐户的名称是您的用户帐户名。这是用于登...

  • 发布于 2021-04-02 21:38
  • 阅读 ( 166 )
be687317
be687317

0 篇文章

相关推荐