命令简介

id 命令是一个 Linux/Unix 下用于打印真实以及有效的用户 ID(UID)、组 ID(GID) 的命令。它可以显示当前用户所属的用户 ID、组 ID、有效的组 ID 列表等信息。id 命令还可以用于指定用户名或用户 ID 来查询相关信息。

命令格式

1
id [options] [user]

参数说明

参数 说明 备注
-a 打印所有信息(UID、GID、组列表) -
-u 只打印有效的用户 ID -
-g 只打印有效的组 ID -
-G 只打印有效的附加组 ID 列表 -
-n 打印名称而不是数字 -
-r 打印真实的 ID 而不是有效的 ID -
-z 删除不存在的条目 -
user 指定要查询的用户名或 ID 可选参数

命令实例

基础用法

1.显示当前用户的 UID、GID 和组列表

1
2
$ id
uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)

2.只显示 UID

1
2
$ id -u
1000

3.只显示 GID

1
2
$ id -g
1000

4.只显示组列表

1
2
$ id -G
1000 4 24 27 30 46 113 128

5.显示指定用户的信息

1
2
$ id root
uid=0(root) gid=0(root) groups=0(root)

6.使用名称而不是数字显示信息

1
2
$ id -nu
user

7.显示真实的 ID 而不是有效的 ID

1
$ id -r

8.删除不存在的条目

1
$ id -z

扩展用法

1.显示用户的 UID、GID、组列表以及全名

1
2
$ id -a -nu
uid=user(User Name) gid=user(Group Name) groups=user(Group Name),adm(Admin Group),cdrom(CDROM Group),sudo(Sudo Group),dip(DIP Group),plugdev(Plugdev Group),lpadmin(LPAdmin Group),sambashare(Samba Share Group)

2.显示指定用户的真实 ID 和名称

1
2
$ id -nr root
uid=0(root) gid=0(root) groups=0(root)

3.在脚本中使用 id 命令

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

# 获取当前用户的 UID
current_uid=$(id -u)

# 判断 UID 是否为 0 (root)
if [ "$current_uid" -eq 0 ]; then
echo "You are running as root."
else
echo "You are not running as root."
fi

高级用法

id 命令本身是一个比较简单的命令,主要用于查看用户和组信息。但是,结合其他命令,它可以实现一些更高级的功能。

1.列出用户所属的所有组

1
2
$ id -nG user | tr ' ' ','
user,adm,cdrom,sudo,dip,plugdev,lpadmin,sambashare

在上面的命令中,id -nG 列出了用户所属的所有组的名称,然后使用 tr 命令将空格替换为逗号,从而方便进一步处理。

2.检查用户是否属于特定组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash

user="user"
group="sudo"

# 获取用户所属的组列表
groups=$(id -Gn "$user")

# 检查用户是否属于指定的组
if echo "$groups" | grep -qw "$group"; then
echo "$user belongs to the $group group."
else
echo "$user does not belong to the $group group."
fi

上面的脚本首先获取指定用户所属的所有组,然后使用 grep 命令检查该用户是否属于指定的组。

3.切换到指定用户环境

1
2
$ sudo -u user id
uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)

在上面的命令中,sudo -u user 允许以指定用户的身份执行命令。然后,使用 id 命令查看切换后的用户信息。

4.查看用户的 UID/GID 范围

1
2
3
4
5
6
7
$ cat /etc/login.defs | grep UID
UID_MIN 1000
UID_MAX 60000

$ cat /etc/login.defs | grep GID
GID_MIN 1000
GID_MAX 60000

在上面的命令中,我们查看了 /etc/login.defs 文件中定义的 UID 和 GID 范围。这对于管理员管理用户和组非常有用。

以上就是关于 id 命令的详细介绍和使用示例,希望对你有所帮助。如果还有任何疑问或需要进一步的帮助,欢迎随时提出。