whoami
命令查看当前登录用户名。 ,2. 使用 id
命令查看当前用户的 UID 和所属组信息。 ,3. 查看 /etc/passwd
文件(如 cat /etc/passwd
)获取系统所有用户账号的完整列表。查看 /etc/passwd
文件(最直接的方法)
命令:
cat /etc/passwd
输出示例:
root:x:0:0:root:/root:/bin/bash
alice:x:1001:1001:Alice Smith:/home/alice:/bin/bash
字段解析(以冒号分隔的7列):
- 用户名:登录名称(如
alice
) - 密码占位符:
x
表示密码存储在/etc/shadow
中 - UID:用户ID(0为root,1000+为普通用户)
- GID:主组ID
- 描述:用户全名或备注
- 家目录:用户主路径
- 登录Shell:默认命令行解释器
适用场景:查看所有本地用户,需 sudo
权限读取敏感信息。
使用 getent
命令(支持网络用户)
命令:
getent passwd
优势:
- 同时显示本地用户和网络用户(如LDAP、NIS账户)
- 语法与
/etc/passwd
格式一致
过滤特定用户:
getent passwd alice # 仅显示用户alice的信息
提取纯用户名列表
方法1:awk
处理输出
awk -F: '{print $1}' /etc/passwd
输出:
root
alice
bob
方法2:cut
命令
cut -d: -f1 /etc/passwd
专用工具 lslogins
(详细信息展示)
命令:
sudo lslogins -u
输出示例:
USER UID PWD-LOCK PWD-DENY LAST-LOGIN GECOS
alice 1001 0 0 Jun10 Alice Smith
bob 1002 0 1 - Bob Brown
关键字段:
PWD-LOCK
:密码是否锁定PWD-DENY
:是否禁止登录LAST-LOGIN
:最后登录时间
Bash内置命令 compgen
(仅当前Shell环境)
命令:
compgen -u
特点:
- 快速生成用户名列表
- 仅显示当前Shell可识别的用户
- 无需管理员权限
查看登录用户
- 当前登录用户:
who # 显示已登录用户及终端 w # 显示用户及正在运行的进程
- 最后登录记录:
lastlog # 所有用户最后登录时间
权限说明与安全建议
- 权限要求:
- 读取
/etc/passwd
无需root权限,但部分工具(如lslogins
)需sudo
。 - 敏感操作建议通过管理员账户执行。
- 读取
- 安全提示:
- 禁用无用账户:
sudo usermod -L username
(锁定账户) - 定期审计:检查
/etc/passwd
中异常UID(如0)或非法Shell(如/bin/false
)。
- 禁用无用账户:
如何选择?
场景 | 推荐命令 |
---|---|
查看完整用户信息 | cat /etc/passwd |
提取纯用户名 | awk -F: '{print $1}' /etc/passwd |
检查本地+网络用户 | getent passwd |
获取账户状态详情 | sudo lslogins -u |
引用说明基于Linux核心文档(
man 5 passwd
)及开源社区最佳实践,参考来源包括Linux man-pages项目和Ubuntu官方文档,所有命令已在Ubuntu 22.04/CentOS 7环境下验证,确保准确性。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/39260.html