核心区别在于用途、权限范围、登录能力及系统角色定位:系统用户(uid 1–999)专为服务运行设计,禁登录、无家目录、shell为/sbin/nologin;普通用户(uid ≥1000)面向人类操作,可登录、有家目录、shell为/bin/bash,需设密码。

添加系统用户和普通用户,核心区别不在命令本身,而在于用途、权限范围、登录能力及系统角色定位。用 useradd 命令都能创建,但参数和后续配置决定了它是“干活的”还是“干活+登录的”。
用途与身份定位不同
系统用户专为服务或进程设计,比如 www-data 运行 Nginx,mysql 运行数据库。它不对应真实操作者,只代表一个运行上下文。普通用户则面向人类使用者,用于登录、执行命令、管理个人文件。
UID 范围与默认行为有约定
系统用户 UID 通常设在 1–999 区间(部分发行版上限为 499 或 999),普通用户 UID 默认从 1000 起(如 Ubuntu、CentOS)。虽然可手动指定,但系统工具(如 useradd)会依据 UID 范围自动调整默认设置:
- UID ≤ 999:默认不创建家目录(
-m不生效),shell 设为/sbin/nologin或/bin/false - UID ≥ 1000:默认创建家目录(
/home/用户名),shell 设为/bin/bash
是否允许登录是关键分水岭
系统用户原则上禁止交互式登录——它的 shell 字段在 /etc/passwd 中通常是 /sbin/nologin 或 /usr/sbin/nologin,登录时直接拒绝;普通用户 shell 是 /bin/bash 等可交互 shell,能正常进入命令行环境。即使手动给系统用户设了 /bin/bash,也不建议登录,否则破坏最小权限原则。
密码与认证机制常被忽略
系统用户一般不需要密码,/etc/shadow 中密码字段常为 * 或 !,表示锁定或无密码;普通用户需通过 passwd 设置强密码,并受密码策略(如过期时间、复杂度)约束。部分系统用户甚至不写入 /etc/shadow(如某些容器化部署中仅靠 UID 隔离)。











