查看所有系统用户
/etc/passwd
文件解析
这是存储用户信息的核心文件,需用 root
或 sudo
权限查看:
cat /etc/passwd
输出示例:root:x:0:0:root:/root:/bin/bash
每行包含 7个字段(以冒号分隔):
- 用户名(如
root
) - 密码占位符(
x
表示密码在/etc/shadow
) - 用户ID(UID):系统用户通常 UID < 1000,普通用户 UID ≥ 1000
- 组ID(GID)
- 用户描述(如全名)
- 家目录路径
- 默认Shell(如
/bin/bash
,/sbin/nologin
表示禁止登录)
getent
命令
兼容性更强(支持LDAP等数据库):
getent passwd
输出格式与 /etc/passwd
相同。
列出可登录用户
过滤有效Shell的用户:
grep -v "/nologin\|/false" /etc/passwd | cut -d: -f1
或使用 awk
:
awk -F: '$7 !~ /\/nologin|\/false/ {print $1}' /etc/passwd
查看当前登录用户
who
命令
显示已登录用户及登录源:
who
输出:用户名 终端 登录时间 IP地址
w
命令
更详细(含正在运行的命令):
w
输出包括:用户、终端、登录时间、空闲时间、当前进程。
users
命令
仅显示用户名:
users
查看用户登录历史
last
命令
审计用户登录记录:
last
显示:用户名、终端、IP、登录/登出时间。
关键参数:
last -5
:显示最近5条记录last username
:查看特定用户记录
查看特定用户信息
id
命令
检查用户UID、GID及所属组:
id username # 如 id root
输出示例:uid=0(root) gid=0(root) groups=0(root)
finger
命令(需安装)
显示用户详细信息:
sudo apt install finger # Debian/Ubuntu finger username
输出:登录名、真实姓名、Shell、家目录等。
高级工具
lslogins
命令
专业用户管理工具(需安装 util-linux
):
lslogins -u # 查看所有用户
输出包含:UID、GID、最后登录时间、是否锁定等。
compgen
命令(仅限Bash)
生成用户列表:
compgen -u
注意事项
- 权限要求:
- 查看
/etc/passwd
无需特权,但修改需root
权限。 - 敏感文件(如
/etc/shadow
)仅root
可读。
- 查看
- 安全建议:
- 禁止删除系统用户(UID<1000),可能导致服务崩溃。
- 定期审计用户:检查异常UID为0的用户(非root)。
- 用户状态判断:
- 密码字段为 或 表示账户被锁定。
nologin
Shell 用户无法登录系统(如服务账户)。
场景 | 推荐命令 |
---|---|
查看所有用户 | cat /etc/passwd |
检查当前登录用户 | w 或 who |
审计登录历史 | last |
获取用户详细信息 | id 或 finger |
专业级用户管理 | lslogins |
重要提示:直接编辑用户文件(如
/etc/passwd
)可能导致系统不稳定,建议使用useradd
、usermod
等命令管理用户。
引用说明: 基于 Linux man-pages
官方文档(如 man 5 passwd
)。
- 命令兼容性参考 GNU Coreutils 及 util-linux 工具集。
- 安全规范遵循 Linux Foundation 最佳实践指南。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4452.html