方法1:直接读取用户配置文件(推荐)
命令:
cat /etc/passwd
说明:
/etc/passwd
是存储用户信息的核心文件,每行代表一个用户,包含7个字段(用户名:密码占位符:UID:GID:描述:主目录:登录Shell)。- 输出示例:
root:x:0:0:root:/root:/bin/bash alice:x:1000:1000:Alice:/home/alice:/bin/bash
- UID规则:
0
:超级用户(root)1-999
:系统服务用户(通常无需登录)1000+
:普通用户
适用场景:查看所有用户(包括系统用户和普通用户),无需安装额外工具。
方法2:使用 getent
命令(跨系统兼容)
命令:
getent passwd
说明:
getent
从系统数据库(包括NIS/LDAP)查询用户信息,输出格式与/etc/passwd
相同。- 优势:兼容网络用户管理,适合企业环境。
方法3:过滤普通用户(排除系统用户)
命令:
awk -F: '$3 >= 1000 && $3 != 65534 {print $1}' /etc/passwd
说明:
- 通过
awk
筛选UID≥1000且非nobody
(UID 65534)的用户,精准定位普通用户。 - 适用场景:日常管理时快速识别可登录用户。
方法4:使用 compgen
命令(仅限Bash)
命令:
compgen -u
说明:
- Bash内置命令,列出所有用户名(包括系统用户),但不显示UID等详细信息。
- 限制:仅适用于Bash环境,无其他Shell(如zsh)支持。
方法5:高级工具 lslogins
(需安装)
命令:
sudo lslogins -u
安装:
# CentOS/RHEL sudo yum install util-linux
输出示例:
USER UID LAST-LOGIN root 0 Apr 10 08:30 alice 1000 Apr 11 14:20
优势:提供用户状态、最后登录时间等扩展信息,适合安全审计。
⚠️ 注意事项
- 系统用户 vs 普通用户:
- 系统用户(UID<1000)用于运行服务,通常无登录权限。
- 普通用户(UID≥1000)可交互登录。
- 密码安全:
- 密码哈希存储在
/etc/shadow
(需root权限访问)。
- 密码哈希存储在
- 环境差异:
某些发行版(如Arch Linux)默认UID从1000开始,但可通过配置修改。
总结建议
需求场景 | 推荐命令 |
---|---|
查看所有用户详情 | cat /etc/passwd |
快速列出普通用户名 | awk 过滤法(方法3) |
获取用户登录状态 | lslogins -u |
兼容网络用户管理 | getent passwd |
引用说明参考Linux
man
手册(man 5 passwd
、man getent
)及Linux Filesystem Hierarchy Standard,所有命令均在Ubuntu 22.04/CentOS 7环境下验证。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6904.html