Linux 中的 id 命令:5 个实际示例
Linux 中的每个用户都有一个唯一的数字用户 ID 和一个具有唯一数字组 ID 的默认组。 id 命令打印此信息。
Linux中的id命令用于显示用户真实有效的用户ID和组ID。
在本教程中,我将通过一些最常见和有用的示例向您展示如何在 Linux 中使用 id 命令。
Linux 中的 id 命令
这是 id 命令的语法:
id [options] [username]
如果您不提供用户名,该命令将显示有关当前登录用户的详细信息。
id
这是它在 Ubuntu Linux 中为我显示的输出。
abhishek@linux:~$ 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 概念的地方。最常见的示例是使用 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、数值,而不显示名称。
abhishek@linux:~$ id -u
1000
3. 只打印用户的GID
同样,您可以使用选项-g
来打印用户的GID。当我说 GID 时,它是用户所属的默认组的数字 ID。
id -g username
同样,它只会显示组的数字 ID。
abhishek@linux:~$ id -g nobody
65534
4. 打印该用户所属的所有其他组的ID
一个用户可以属于多个组。这是Linux 文件系统的基本特征。您可以使用 usermod 命令并将其添加到 sudo 组以赋予其 root 权限。
您可以使用-G
选项显示用户所属的所有组的ID。
id -G username
这也仅显示 ID。
abhishek@linux:~$ id -G abhishek
1000 4 24 27 30 46 119 130 131
5.打印姓名而不是数字ID
仅数字 ID 可能会造成混淆。如果您需要名称,可以将 -n
选项与 -u
、-g
或 -G
结合使用显示名称。
例如,如果你想显示一个用户所属的所有组,你可以这样使用:
id -nG username
如果我将前面的示例与选项 -n
一起使用,则显示如下:
abhishek@linux:~$ id -nG abhishek
abhishek adm cdrom sudo dip plugdev lpadmin lxd sambashare
额外提示:打印真实身份证件
以上示例均显示有效 ID。几乎所有时候它都是真实的 ID。
但是,如果您想确保获得真实的 ID,可以将选项 -r
与 -u
、-g
或 -G
。
它可以这样使用:
id -ru username
好吧!我想您现在对 id 命令已经足够了解了。如果您有疑问或建议,请随时发表评论。