新用户创建后无法登录,最常见原因是漏掉两个关键步骤:未执行passwd设置密码(导致/etc/shadow密码字段为空或*,账户被禁用),或useradd未加-m参数创建家目录(/home/username不存在,ssh直接拒绝登录)。

直接用 useradd -m -s /bin/bash username 创建,再立刻跑 passwd username 设密码——不加 -m 就没家目录,不设密码就根本登不进去。
为什么新用户创建后无法登录?
最常见原因是两个步骤漏掉其一:只运行了 useradd 但没执行 passwd;或者用了 useradd username 没带 -m,导致 /home/username 目录不存在,SSH 登录时直接拒绝。
-
useradd默认不建家目录,也不设密码,只写一条记录进/etc/passwd -
passwd不仅设密码,还会在/etc/shadow中初始化密码字段(否则该字段是空或*,系统视作禁用账户) - 检查是否成功:运行
id username看 UID/GID,ls -ld /home/username看目录是否存在且属主正确
adduser 和 useradd 到底用哪个?
adduser 是 Debian/Ubuntu 系发行版的 Perl 脚本封装,自动调用 useradd、passwd、mkhomedir_helper 等,交互式填完就完事;useradd 是所有 Linux 都有的底层命令,参数多、无提示、适合脚本批量操作。
- 如果你在 Ubuntu 或 Debian 上,直接
sudo adduser newuser,回车跳过可选信息即可,不用记参数 - 如果你在 CentOS/RHEL/AlmaLinux 上,
adduser实际就是useradd的符号链接,此时必须用useradd -m -s /bin/bash显式声明 - 跨发行版写自动化脚本时,别依赖
adduser,统一用useradd+ 参数更可靠
如何让新用户能执行 sudo 命令?
创建完用户后,它默认不在 sudo 组里,sudo 会拒绝执行。不能直接改 /etc/sudoers 文件——手误会导致系统无法提权。
- 正确做法:运行
sudo usermod -aG sudo username(Ubuntu/Debian)或sudo usermod -aG wheel username(RHEL/CentOS/AlmaLinux) -
-aG表示“追加到组”,漏掉-a会清空用户原有附加组,只剩你指定的那个 - 验证:切换到该用户后运行
sudo id,输入密码应能成功输出;若报 “user is not in the sudoers file”,说明组没加对或组名错了
真正容易被忽略的是家目录权限:即使 -m 创建了 /home/username,它的属主可能仍是 root:root(某些精简系统或容器环境会发生),导致用户登录后 shell 提示符异常、配置文件不加载。创建后顺手跑一句 sudo chown -R username:username /home/username 更稳妥。











