id
id命令来显示用户的UID、组GID。
著者
由阿诺德·罗宾斯和大卫·麦肯齐撰写。
语法
id [参数] [用户名]
id命令 -Linux手册页
命令选项及作用
执行令 id --help
执行命令结果
参数
- -g 或 --group 显示用户所属群组的ID。
- -G 或 --groups 显示用户所属附加群组的ID。
- -n 或 --name 显示用户,所属群组或附加群组的名称。
- -r 或 --real 显示实际ID。
- -u 或 --user 显示用户ID。
- -help 显示帮助。
- -version 显示版本信息。
常用命令示例
命令:id
显示当前用户信息。
命令:id username
要打印用户的 uid 和 gid。
命令:id -u username
打印用户的 uid。
命令:id -g username
打印用户的 gid。
“真实”与“有效”的用户ID和组ID
真实用户ID
真实用户ID是指启动进程的用户的uid。它会被设定成该进程的父进程的真实用户ID,而且在exec调用期间不会变动。通常,登陆进程会将用户的login shell的真实用户ID设定成该用户的ID,
有效用户ID
有效用户ID是指正在运行的进程的用户ID。进行使用权限的确认时通常会检查此值。有效用户ID会等于真实用户ID,因为当一个进程进行派生时,父进程的有效用户ID会被子进程继承。此外,如果进程发生exec调用,有效用户ID通常不会变动。但是exec()执行期间,可以看出真实用户ID和有效用户ID之间的主要差异:通过setuid(suid)二进制文件,进程可以变更它的有效用户ID。有效用户ID会被设定成程序文件拥有者的用户ID。没有特权的用户可以把有效用户ID设定成真实的或者被保存用户ID,超级用户可以把有效用户ID设定成任何值。
大多数时候,“真实”ID和“有效”ID是相同的。但是也有不同的时候,也就是使用有效ID的时候,比如普通用户需要修改受保护的文件,最常见的场景就是使用 passwd 命令修改密码。修改密码其实是修改的 root 用户所属的 /etc/passwd 文件。