useradd创建用户最稳妥但需手动配置密码、家目录和shell;adduser在Ubuntu/Debian中交互式自动完成,RHEL中仅为useradd链接。

直接用 useradd 创建用户最稳妥,但不加参数会生成一个没密码、无法登录的账号——这是新手踩坑最多的地方。
为什么 useradd 创建的用户登不进去?
默认情况下,useradd 只建用户目录和基本配置,不设密码、不创建 shell、不初始化家目录文件(比如 .bashrc)。所以即使账号存在,su - username 也会失败,SSH 更是直接拒绝。
- 必须手动运行
passwd username设置密码 - 推荐加
-m参数显式创建家目录(有些系统默认不创建) - 务必用
-s /bin/bash指定合法 shell,否则/bin/false或空值会导致登录被拒 - 检查
/etc/shadow中该用户密码字段是否为!或!!——那是被锁住或无密码状态
useradd 和 adduser 到底用哪个?
在大多数发行版(如 Ubuntu、Debian)中,adduser 是个交互式 Perl 脚本,会自动做密码设置、家目录初始化、拷贝 skeleton 文件;而 useradd 是底层命令,更轻量但也更“裸”。CentOS/RHEL 默认没装 adduser 脚本,它只是 useradd 的符号链接。
- 想快速建一个能立刻 SSH 登录的普通用户?Ubuntu/Debian 上优先用
adduser username - 写自动化脚本或需要精确控制 UID/GID/过期时间?必须用
useradd,比如:useradd -m -s /bin/bash -u 1005 -g users john - 注意:RHEL 系统里
adduser就是useradd,不会交互,别指望它帮你设密码
创建后还要检查哪些关键项?
光跑完命令不等于完事。得确认几个实际影响登录的点:
- 运行
id username看 UID、GID 和所属组是否符合预期 - 检查
/home/username是否存在且权限是700,属主是该用户 - 确认
/etc/passwd中该行第六段(家目录)和第七段(shell)正确,比如:john:x:1005:100::/home/john:/bin/bash - 如果用 SSH 登录,还要看
/etc/ssh/sshd_config是否禁用了密码认证(PasswordAuthentication no),此时必须配 SSH 密钥才能进
最容易被忽略的是 shell 字段——哪怕家目录、密码都对,只要 /etc/passwd 里写成 /sbin/nologin 或拼错成 /bin/bashs,用户就彻底无法交互式登录。










