linux id 命令

45 阅读1分钟

Linux 中的 id 命令

语法:

id [options] [username]

如果没有提供 username(即用户名),那么该命令将会显示当前登录用户的信息。

比如,下面例子为在 lighthouse 中显示当前登录用户的信息:

lighthouse@VM-4-7-ubuntu:~$ id
uid=1001(lighthouse) gid=1001(lighthouse) groups=1001(lighthouse),998(docker)

可看到,用户 lighthouse 的 uid为1001,gid为1001,这是用户lighthouse 默认所属的主要组。

除此之外,用户 lighthouse 也是某些其他组998(docker)的成员,这些组也显示在输出中。

id命令的最常见选项:

-u 打印有效的用户ID

-g 打印有效的组ID

-G 打印用户所属的所有组的ID

-n 打印名称(需与-u、-g 或 -G 组合)

-r 打印真实ID(需与-u、-g 或 -G 组合)

这可能会让你感到有些疑惑,什么是 “真实” 的用户ID?什么是 “有效” 的用户ID?

在系统中创建用户时,会为其指定用户名、用户ID(uid)和默认的组,该默认组的ID就是该用户的gid,这就是“真实”的用户ID和组ID。

同时,在Linux中,进程可以通过其他用户和组运行,所以还有第二组ID,即称为“有效”的ID。

大多数时候,“真实”ID和“有效”ID是相同的。但是也有不同的时候,也就是使用有效ID的时候,比如普通用户需要修改受保护的文件,最常见的场景就是使用 passwd 命令修改密码。修改密码其实是修改的 root 用户所属的 /etc/passwd 文件。

id 命令的实例。

1,打印某个用户的 uid 和gid

要打印用户的 uid 和 gid,只需在 id 命令后指定用户名即可:

id <username>

lighthouse@VM-4-7-ubuntu:~$ id
uid=1001(lighthouse) gid=1001(lighthouse) groups=1001(lighthouse),998(docker)

2,仅打印用户的 UID

可以使用 -u 选项来打印用户的 uid。如果省略用户名,它会显示当前登录用户的信息。

语法结构:

id -u <userame>

lighthouse@VM-4-7-ubuntu:~$ id -u
1001

3,仅打印用户的 gid

可以使用选项 -g 来打印用户的 gid。这里所说的 gid 是指用户所属的默认组的组ID,它是一个数值。

id -g <username>

lighthouse@VM-4-7-ubuntu:~$ id -g
1001

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

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

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

id -G <username>

lighthouse@VM-4-7-ubuntu:~$ id -G lighthouse
1001 998

5.可以使用 -n 选项,与 -u、-g 或者 -G 结合使用,来显示用户名

比如,如果想要显示用户所属的所有组,可以这样使用:

id -nG

lighthouse@VM-4-7-ubuntu:~$ id -nG
lighthouse docker
lighthouse@VM-4-7-ubuntu:~$ id -nu
lighthouse