使用 useradd -r 可规范创建系统用户,自动分配低 uid、禁用 shell、不设密码及家目录;可叠加 -s、-d、-u 等选项定制权限与路径,并需手动授权目录、禁止设密码。

在 Linux 系统中,useradd 是创建新用户的核心命令。创建“系统用户”与普通用户的关键区别在于:系统用户通常 UID 范围较小(一般 0–999),无交互式 shell、无家目录、不设密码,且用于运行服务或守护进程。直接使用 useradd -r 即可规范创建。
创建基础系统用户
执行以下命令即可创建一个标准系统用户:
-
sudo useradd -r servicename—— -r 选项明确标识为系统账户,自动分配 UID(通常从 1 开始递减或按 /etc/login.defs 中的SYS_UID_MIN设置) - 系统用户默认不创建家目录、不指定 shell(/sbin/nologin 或 /bin/false)、不设置密码,符合最小权限原则
- 该用户会写入
/etc/passwd,其行末字段类似:servicename:x:998:996::/var/empty:/sbin/nologin
自定义系统用户参数
如需控制具体行为,可在 -r 基础上叠加常用选项:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
-s /bin/false或-s /usr/sbin/nologin:显式禁用登录 shell(即使 -r 已默认设置,显式声明更清晰) -
-d /var/lib/servicename:指定专用运行目录(注意:-r 不自动创建该目录,需手动mkdir -p并chown) -
-U:自动创建同名初始组(即servicename组),避免依赖 wheel 或 root 组 -
-c "Web cache service":添加描述信息,便于识别用途
验证与后续操作
创建后建议立即确认并完成必要配置:
- 检查是否写入:
grep servicename /etc/passwd,确认 UID 在系统用户范围内(如 ≤999) - 查看组归属:
id servicename,确保其主组和附加组符合服务需求 - 若服务需读写特定目录,用
chown servicename:servicename /path授权,勿随意给 sudo 权限 - 禁止手动设置密码(
passwd servicename),除非特殊调试需要;正常情况下系统用户不应交互登录
系统用户的本质是“无人值守的身份容器”,重点在于隔离权限、限定上下文。用好 -r 选项,再辅以精准的 -s、-d、-U,就能安全高效地交付服务账户。










