如何在 Linux 中使用 id 命令:5 个有用的示例

Linux 中的 id 命令用于显示用户真实有效的用户 ID 和组 ID。

在本教程中,我将通过一些最常见和最有用的示例向您展示如何在 Linux 中使用 id 命令。

Linux中的id命令

这是 id 命令的语法:

id [options] [username]

如果您不提供用户名,该命令将显示有关当前登录用户的详细信息。

id

这是它在 Ubuntu Linux 中为我显示的输出。

[email protected]:~$ id
uid=1000(abhishek) gid=1000(abhishek) groups=1000(abhishek),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),119(lpadmin),130(lxd),131(sambashare)

在上面的输出中,用户 abhishek 有 uid 1000 和 gid 1000。这是用户的主要组 abhishek 默认属于。

除此之外,用户 abhishek 也是某些其他组的成员,并且这些组也已显示在输出中。

id 命令示例

以下是 id 命令最常用的选项:

选项描述
-u打印有效用户id
-G打印有效组id
-G打印用户所属的所有组的 ID
-n打印名称而不是 ID(必须与 -u、-g 或 -G 结合使用)
-r打印真实 ID 而不是有效 ID(必须与 -u、-g 或 -G 结合使用)

真实与有效的用户和组 ID?

这可能会让您感到困惑。 创建用户时,会为其提供用户名、用户 ID (uid)、默认组,并且该默认组的 id 是该用户的 gid。 这是“真正的”用户和组 ID。

由于在 Linux 中,进程可以作为其他用户和组运行,因此还有第二组 ID,称为有效 ID。

大多数时候真实有效的 UID 和 GID 是相同的。 但是在某些情况下,普通用户必须修改特权文件。 这就是使用有效 ID 概念的地方。 最常见的 example 是使用 passwd 命令更改修改 root 拥有的 /etc/passwd 文件的密码。

我不能在这里详细介绍,但我建议阅读它 这里. 您还应该阅读 Linux 中的 SUID、GUID 和粘性位权限。

1.打印某个用户的UID和GID

要打印用户的 uid 和 gid 以及所有其他组 ID,您只需指定用户名:

id username

您可以列出 Linux 系统中的所有用户以获得所需的用户名。

2.只打印一个用户的UID

您可以使用 -u 在 Linux 中打印 UID 的选项。 如前所述,如果省略用户名,则会显示有关登录用户的信息。

id -u userame

请记住,它只显示 UID、数值,而不是名称。

[email protected]:~$ id -u
1000

3.只打印一个用户的GID

同样,您可以使用该选项 -g 打印用户的 GID。 当我说 GID 时,它是用户所属的默认组的数字 ID。

id -g username

同样,它只会显示组的数字 ID。

[email protected]:~$ id -g nobody 
65534

4.打印用户所属的所有其他组的ID

一个用户可以属于多个组。 这是 Linux 文件系统的基本特性。 您可以使用 usermod 命令并将其添加到 sudo 组给它root权限。

您可以使用 -G 选项以显示用户所属的所有组的 ID。

id -G username

这也仅显示 ID。

[email protected]:~$ id -G abhishek
1000 4 24 27 30 46 119 130 131

5. 打印姓名而不是数字 ID

只有数字 ID 可能会造成混淆。 如果你想要名字,你可以结合 -n 选项 -u, -g 或者 -G 显示名称。

为了 example,如果要显示用户所属的所有组,可以这样使用:

id -nG username

如果我使用以前的 example 带选项 -n 这是它显示的内容:

[email protected]:~$ id -nG abhishek
abhishek adm cdrom sudo dip plugdev lpadmin lxd sambashare

额外提示:打印真实 ID

以上所有示例均显示有效 ID。 几乎所有时候它都是真实的ID。

但是,如果您想确保获得真实 ID,您可以组合选项 -r-u, -g 或者 -G.

它可以这样使用:

id -ru username

好的! 我想你现在对 id 命令已经足够了解了。 如果您有任何问题或建议,请随时发表评论。