Commands

Linux 中的 ID 命令使用

luobo · 1月19日 · 2020年 · ·

id是一个命令行程序,可打印真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID。id命令已经默认预装在大多数Linux系统中。要使用它,只需要在你的控制台输入id。不带选项输入id会显示如下。结果会使用活跃用户。

当我们想知道某个用户的UID和GID时id命令是非常有用的。一些程序可能需要UID/GID来运行。id使我们更加容易地找出用户的UID以GID而不必在/etc/group文件中搜寻。如往常一样,你可以在控制台输入man id进入id的手册页来获取更多的详情。

使用id命令

id命令的语法如下:

id [OPTIONS] [USERNAME]

如果省略用户名,则id命令显示有关当前登录用户的信息。

在不带任何选项的情况下调用id时,将打印真实用户ID(uid),用户的真实主要组ID(gid)和用户所属的补充组(组)的真实ID。 仅当有效用户ID,组ID和补充组ID与实际用户ID不同时,才打印它们。

id
uid=1000(linuxci) gid=1000(linuxci) groups=1000(linuxci),4(adm),27(sudo),998(docker)

如果启用了SELinux,则id还将显示用户的安全上下文(上下文):

uid=1000(linuxci) gid=1000(linuxci) groups=1000(linuxci) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

要获取有关另一个用户的信息,请将用户名或用户标识作为参数传递给id命令:

id mark
uid=1001(mark) gid=1001(mark) groups=1001(mark),998(docker)

如果系统上存在名称与提供的ID相同的用户,则优先使用名称查找。 使用用户ID作为参数时,请在ID前面加上+符号,以避免将ID解释为名称。

例如,如果您有一个名称为1010的用户和另一个ID为1010的用户,则如果键入id 1010,该命令将显示有关名称为1010的用户的信息。要获取有关ID为1010的用户的信息,请键入id +1010

id命令选项

id命令接受几个选项,这些选项仅允许您显示特定信息。 在shell脚本中使用id时,这很有用。

要仅打印有效的用户标识,请使用-u(--user)选项:

id -u
1000

-g(--group)选项告诉id仅打印有效的组ID:

id -g
1000 4 27 998

使用-G(--groups)选项可打印用户所属的所有组的有效ID:

id -G
1000

要打印名称而不是数字,请使用-n--name选项。 该选项只能与-u-g-G结合使用。

id -un
linuxci

使用-un选项运行id命令将产生与运行whoami相同的输出,并且id -Gn的输出等同于groups命令的输出。

-r(--real)选项可以与-u-g-G结合使用以打印实数,而不是有效值:

id -ur

要仅打印流程的安全上下文(通常是用户的安全上下文),请使用-Z (--context)选项:

id -Z
# 输出如下:
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

如果SELinux被禁用,则id显示一条错误消息:

id: --context (-Z) works only on an SELinux-enabled kernel

-z (--zero)选项告诉id用NUL字符而不是空格来分隔输出项:

id -znG
# 输出如下:
linuxciadmsudodocker

当将输出传递给可以解析换行符的命令时,这很有用。

文章结语

如果未提供用户名或ID作为参数,则id命令将显示有关给定用户或当前登录用户的信息。

如有任何疑问,请随时发表评论。

0 条回应