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 高效。