Linux 下可以获取uid 表吗?

Linux 下可以获取uid 表吗?

我是一名大学学生,我可以通过 SSHfingerid所有用户(学生等)通信。

这是 id 命令

e147200@beluga:~$ id e201634
uid=22678(e201634) gid=3561(stat_bs) groups=3561(stat_bs)

在这里我可以看到id为e201634的学生是统计系(stat)的研究生(bs)。

有没有办法下载这个 gid(或组)表?

3561 stat_bs
3562 stat_ms
3611 chem_bs
3687 biol_bs
...

答案1

如果服务器有getent,并且允许用户查看此类信息,您也许可以使用getent group stat_bs。这将为您提供用户列表,以逗号分隔。

如果getent group不允许,您仍然可以passwd使用getent passwd.然后,您可以将 GID(第四列)与所需的组关联起来。

答案2

按照 @Chirag64 建议读取/etc/group文件只会产生系统本地用户组。

您可能想使用getent group(或getent passwd用于用户列表)来代替。输出的格式与passwdgroup文件相同(因此您可以查看相应的联机帮助页)团体密码有关文件格式的帮助)

要获取组名称及其 GID 的列表,请尝试以下操作

getent group|cut -d: -f1,3

如果您想要与示例中相同的格式,则sed输出:

getent group|cut -d: -f1,3|sed -e 's/\(^[^:]*\):\(.*\)/\2 \1/'

答案3

您只需使用或即可读取该/etc/group文件,该文件应包含每个组的名称和 GID 以及其中的用户列表。catless

如果你想获取每个用户的UID,你可以从/etc/passwd文件中获取它们。

编辑:作为克里斯·唐姆雷图布如上所述,这不太可能在大学服务器设置中起作用,因为它们只会显示系统的本地用户组,​​并且大多数系统可能使用 NIS 或 LDAP 或其他方式登录。

相关内容