首页 > Sysadmin > 正文

Linux 查看当前用户权限:4 条命令

huyuanwen 2026-11-02 Sysadmin

想确认自己在 Linux 里的真实身份?本文用 whoami、id、groups 等命令逐层拆解。

草稿待审 — whoami、id、groups、su、sg、/proc/self/status、getent 已在 WSL Ubuntu-24.04 实测通过;newgrp 基于文档核查,尚未实际执行。

1. 当前用户名:whoami

whoami 只做一件事:打印当前有效用户名。它等价于 id -un,适合快速判断”我现在是谁”。

whoami

预期输出形如 root 或普通用户名。如果你刚执行过 su 或 sudo -i,这里会显示切换后的目标用户。

2. 完整身份信息:id

id 是查看用户权限的核心命令,同时输出 UID、GID 和所有附加组。

id

常见精简用法:

id -u      # 仅输出有效 UID(数字)
id -g      # 仅输出有效 GID
id -G      # 输出所有组的 GID 列表
id -un     # 仅输出用户名
id -gn     # 仅输出主组名

在 WSL 实测中,root 的 id 输出为 uid=0(root) gid=0(root) groups=0(root);普通用户则显示 1000+ 的 UID。

3. 所属组列表:groups

groups 直接列出当前用户所属的所有组名称,省略数字 ID,更易阅读。

groups

不加参数时查看自己,加用户名可查看他人:

groups testuser

与 id -Gn 输出内容一致,只是格式不同。

4. 切换身份:su

su 让你以另一个用户身份运行命令或进入交互式 shell。它依赖目标用户的密码,或 PAM 配置。

su - username

- 表示加载目标用户的环境变量。不加用户名时默认切到 root。

sudo 则走 /etc/sudoers 授权,适合执行单条 privileged 命令:

sudo command

sudo -n 会在需要密码时报错退出,不会阻塞等待输入。

5. 进阶读取:/proc、getent

除了用户态命令,内核和 NSS 也暴露了权限信息。

# 查看当前进程的真实/有效 UID、GID
cat /proc/self/status | grep -E '^(Uid|Gid|Groups):'
# 通过 NSS 查询用户和组数据库
getent passwd username
getent group groupname

/proc/self/status 的 Uid/Gid 四列分别对应真实、有效、保存 set-user-ID 和文件系统 ID;Groups 列出所有附加组。getent 会读取 /etc/nsswitch.conf 配置的数据库,不只是本地文件。

排错速查表

现象 原因 处理
su 提示密码错误 目标用户密码不匹配 确认密码或改用 sudo
sudo 提示 “not in the sudoers file” 用户未配置 sudo 权限 由 root 在 /etc/sudoers 中添加
id 报错 “cannot print only of more than one choice” 同时传递多个互斥单字母选项 分开执行,如 id -u && id -g
groups 与 id -Gn 结果不一致 会话期间组数据库被修改 重新登录或执行 newgrp

局限性

  • WSL2 环境中的用户权限与真实 Linux 发行版行为一致,但 Windows 侧对 WSL 用户的管控(如 WSL 用户的 UID/GID 映射)不在本文范围内。
  • 本文未涉及 LDAP/NIS 等远程 NSS 后端的调试,仅覆盖本地文件和标准配置。
  • su 和 sudo 的 PAM 配置差异较大,企业环境可能限制 su 或要求额外 MFA。

附录:实测记录

测试环境:WSL2 Ubuntu-24.04,systemd 启用,内核 5.15.104.1-microsoft-standard-WSL2。 测试账户:root(UID 0)与 testuser(UID 1003,GID 1003)。

关键命令实测结果:

  • whoami → root
  • id → uid=0(root) gid=0(root) groups=0(root)
  • id -u → 0
  • id -g → 0
  • id -G → 0
  • id -un → root
  • id -gn → root
  • groups → root
  • su - testuser -c "id; groups; whoami" → uid=1003(testuser) gid=1003(testuser) groups=1003(testuser);testuser;testuser
  • su - testuser -c "sudo -n whoami"(配置 NOPASSWD 后)→ root
  • cat /proc/self/status | grep -E '^(Uid|Gid|Groups):'(root)→ Uid: 0 0 0 0 / Gid: 0 0 0 0 / Groups: 0
  • cat /proc/self/status(testuser)→ Uid: 1003 1003 1003 1003 / Gid: 1003 1003 1003 1003 / Groups: 1003
  • sg testuser -c "id; groups" → uid=0(root) gid=1003(testuser) groups=1003(testuser),0(root)
  • getent passwd testuser → testuser:x:1003:1003::/home/testuser:/bin/bash
  • getent group testuser → testuser:x:1003:

附录:参考资料

[1] id(1) — coreutils — Debian bookworm. https://manpages.debian.org/bookworm/coreutils/id.1.en.html 访问日期 2026-11-02. 支持:id 命令的选项与输出格式。

[2] whoami(1) — coreutils — Debian bookworm. https://manpages.debian.org/bookworm/coreutils/whoami.1.en.html 访问日期 2026-11-02. 支持:whoami 的功能定义与 id -un 等价关系。

[3] groups(1) — coreutils — Debian bookworm. https://manpages.debian.org/bookworm/coreutils/groups.1.en.html 访问日期 2026-11-02. 支持:groups 命令的用法与输出格式。

[4] su(1) — Ubuntu jammy. https://manpages.ubuntu.com/manpages/jammy/man1/su.1.html 访问日期 2026-11-02. 支持:su 的选项说明、默认行为与 PAM 集成。

[5] sudoers(5) — sudo — Debian bookworm. https://manpages.debian.org/bookworm/sudo/sudoers.5.en.html 访问日期 2026-11-02. 支持:sudoers 文件格式与权限配置机制。


参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。