046 useradd命令

命令说明

useradd 是底层的新建用户命令(RHEL/CentOS 通用),按参数直接写 /etc/passwd 等文件,不会自动设密码;Debian 系更常用交互式的前端脚本 adduser。

语法

useradd [选项]... 用户名

常用参数

参数说明
-m同时创建家目录(RHEL7+ 默认开启,老版本需显式加)
-M不创建家目录,适合服务账号
-u UID指定用户 ID,如 -u 1001
-g 组指定主组(组必须已存在)
-G 组1,组2指定附加组,逗号分隔
-s Shell指定登录 shell,如 /bin/bash;/sbin/nologin 禁止登录
-d 目录指定家目录路径
-e 日期设置账号过期时间 YYYY-MM-DD
-c 备注填写 GECOS 注释信息(姓名/电话)
-r创建系统账号(UID < 1000,无家目录)

使用示例

$ useradd zhangsan

创建用户并默认建家目录(RHEL7+)

$ useradd -m -s /bin/bash dev

显式创建家目录并指定 bash

$ useradd -u 1500 -g developers -G docker,git ops

指定 UID、主组与附加组

$ useradd -s /sbin/nologin nginx

创建仅运行服务用的不可登录账号

$ useradd -r -M -s /bin/false backup

创建系统账号(备份程序用)

$ useradd -e 2026-12-31 temp01

创建年底自动过期的临时账号

$ passwd zhangsan

useradd 后必须单独设密码才能登录

$ id zhangsan

验证用户与组信息创建结果

$ useradd -D

查看 useradd 的默认配置(/etc/default/useradd)

实用技巧

  • useradd 与 adduser 区别:useradd 是底层二进制命令、无交互;adduser 是封装了 useradd 的友好 Perl 脚本(Debian 默认,RHEL 是 useradd 的软链),会交互式提示设密码和填信息。
  • 新建用户后密码为空是无法登录的,必须 passwd 用户名 设置;服务账号用 /sbin/nologin 比 /bin/false 更友好(会提示 This account is currently not available)。
  • 默认值来自 /etc/default/useradd 与 /etc/login.defs(UID 起点、是否建家目录、密码策略),改默认模板目录是 /etc/skel。
  • useradd 不会自动创建不存在的组:-g developers 前要先 groupadd developers,否则报 group does not exist。
  • 批量建账号脚本里用 useradd + echo "user:pass" | chpasswd 比交互式 passwd 高效。