直接用 useradd -m 或 adduser 就能创建可用的普通用户,但漏掉 -m、不设密码、没加组权限,用户大概率登录失败或无法执行管理命令。

直接用 useradd -m 或 adduser 就能创建可用的普通用户,但漏掉 -m、不设密码、没加组权限,用户大概率登录失败或无法执行管理命令。
useradd 创建用户必须带 -m 参数
很多新手运行 sudo useradd username 后发现切过去是空壳环境,甚至 su - username 直接报错 “No directory, logging in with HOME=/”。这是因为默认不创建家目录(/home/username),shell 也可能是 /bin/sh 或 /sbin/nologin。
正确写法是:
sudo useradd -m -s /bin/bash username
其中:-m 强制建家目录,-s /bin/bash 显式指定可交互 shell。部分精简系统(如 Alpine、某些容器镜像)连 -m 都不默认启用,必须手动加。
- 不加
-m:家目录不存在,su -失败,图形登录拒绝,~路径解析为/ - 不指定
-s:可能继承系统默认 shell(如/bin/sh),缺少历史记录、补全等交互功能 - UID/GID 一般不用手设,系统自动分配即可;除非有集群 UID 对齐等特殊需求
adduser 更适合新手,但只在 Debian/Ubuntu 系统预装
adduser 是个 Perl 脚本封装,它自动调用 useradd 并复制 /etc/skel/ 下的配置文件(如 .bashrc)、设好权限、引导输入密码——全程交互提示,容错率高。
执行:
sudo adduser username
它会依次问密码、全名、房间号等,除密码外全可回车跳过。完成后家目录已就绪,su - username 可直接进。
宝塔Linux面板11.8.1为官网当前正式版,新增AI建站能力并经过宝塔网站工程师深度调教,开放自定义AI功能API,同时对WAF进行界面重构和深度优化,提升拦截能力与运维效率。
- CentOS/RHEL/Fedora 默认不带
adduser,装了也是符号链接到useradd,无交互功能 - 如果你在 Ubuntu 上用
useradd却没加-m,再补mkdir /home/username && cp -r /etc/skel/. /home/username很容易漏权限修复 -
adduser不支持批量或脚本化,适合单次、人工操作
新用户没 sudo 权限?得手动加进 sudo 或 wheel 组
刚创建的用户默认没有任何管理员权限。运行 sudo ls 会提示 “username is not in the sudoers file”。这不是密码错了,是根本没被授权。
根据发行版选择对应命令:
- Debian/Ubuntu:
sudo usermod -aG sudo username - CentOS/RHEL/Fedora:
sudo usermod -aG wheel username
注意 -aG 中的 -a(append)不能省——漏掉就等于覆盖原有组,用户可能被踢出 users 或其他必要组。
验证是否生效:groups username 输出里应含 sudo 或 wheel;切换过去后 sudo -l 可查允许执行的命令。
密码设置和验证环节最容易被跳过
useradd 创建的用户密码字段在 /etc/shadow 里是 * 或 !,代表“锁定”或“无密码”,根本无法登录。必须显式运行:
sudo passwd username
输入两次密码即完成。此时密码哈希才写入 /etc/shadow。
-
adduser会在创建流程中自动引导设密码,所以这步不会漏 - 如果用
sudo passwd -d username清空密码,该账户将无法密码登录(除非配了 SSH 密钥) - 验证登录最简单方式:
su - username→ 输入密码 → 成功进入即 OK;whoami应返回用户名
真正麻烦的是那些“看起来创建成功但登不进去”的情况——八成卡在没 -m、没 passwd、或 shell 被设成 /sbin/nologin 上。别急着重装系统,先看 getent passwd username 和 sudo cat /etc/shadow | grep username 这两行输出。










