便宜VPS主机精选
提供服务器主机评测信息

如何在linux中列出所有用户(linux列出所有用户方法)

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

文件和目录权限

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

每组权限定义该类别的成员是否可以读取、写入或执行文件。在目录的情况下,执行动作等同于能够cd进入目录。

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

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

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

/etc/groups 文件

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

Name:组的唯一名称。

密码:未使用。这将始终保持“x”。

组 ID:唯一的组标识符。

用户:组成员的逗号分隔列表。对于系统和守护程序账户,该列表通常为空。

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

少 /etc/group

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

023b5bb5c9ea15ce98891791b8f9e0f93887b2c3.png@f_auto

如果我们想发现特定用户所在的组,我们可以使用grep他们的用户账户名来搜索条目。这不是我们手头的任务。我们希望看到属于某个组的每个人,而不是一个人所属的组。但对我们来说看看是有启发性的。

grep “戴夫” /etc/group

9358d109b3de9c821c353ef062785a0018d84305.png@f_auto

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

将用户添加到 Linux 时,默认操作是将他们放在与其用户账户同名的组中。这是他们的 主要 群体。将它们添加到的任何其他组称为 辅助 组。

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

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

第二个问题是“/etc/group”文件不是单一的事实来源。现代 Linux 安装可能会将用户和组信息存储在比“/etc/passwd”和“/etc/group”更多的位置,尤其是在 部署了轻量级目录访问协议等服务的公司情况下。只看一个地方,你可能看不到全局。

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

resteam:研究团队。

devteam:开发团队。

pvqteam:产品验证和质量团队。

docteam:文档团队。

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

f9198618367adab4239dec01822d69168601e423.png@f_auto

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

grep “^devteam” /etc/group

72f082025aafa40f19da415aa09dd94579f01918.png@f_auto

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

getent 命令

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

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

 

9a504fc2d56285359e76f6afb116accca5ef63a9.png@f_auto

 

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

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

getent group devteam

 

2e2eb9389b504fc207dc5475ed243d1b92ef6dc7.png@f_auto

 

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

未经允许不得转载:便宜VPS测评 » 如何在linux中列出所有用户(linux列出所有用户方法)