adduser最省事、最不易出错,因其自动创建家目录、设/bin/bash为shell并提示设密码;useradd必须加-m和-s /bin/bash,否则用户无法登录。

直接用 adduser 创建用户最省事、最不容易出错;如果必须用 useradd,就一定得带 -m 和 -s /bin/bash,否则用户根本登不进去。
为什么用 adduser 而不是 useradd
adduser 是 useradd 的交互式封装脚本,在 Ubuntu/Debian 系统上默认可用,它自动完成三件关键事:-m(建家目录)、/bin/bash(设默认 shell)、passwd(提示设密码)。而 useradd 默认不创建家目录、不指定 shell、不设密码,账户处于“锁死”状态。漏掉任意一步,执行 su - username 就会失败或登录后立即退出。
常见错误现象:
-
su - alice后直接退出,没报错也没提示——多半是/etc/passwd里 alice 那行第七字段为/usr/sbin/nologin或空 - SSH 登录时卡在密码后、无响应——家目录不存在或权限不对,
sshd拒绝初始化 session
useradd 必须加的两个参数:-m 和 -s /bin/bash
不用 adduser 时,useradd 命令至少要补全这两项,否则用户无法正常登录:
-
-m:强制创建家目录(如/home/username),不加则ls /home/看不到对应目录,~展开失败,.bashrc等配置文件无处存放 -
-s /bin/bash:显式指定交互式 shell,避免某些发行版(如 CentOS Stream)默认设为/sbin/nologin或/bin/sh,导致无法进入命令行环境
正确写法示例:sudo useradd -m -s /bin/bash devuser
验证方式:grep devuser /etc/passwd,确认第七字段是 /bin/bash;ls -ld /home/devuser,确认目录存在且属主为 devuser。
怎么把用户加进 sudo 组并真正生效
加组只是第一步,权限不会热加载,必须满足三个条件才真正可用:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 系统发行版决定认哪个组:Ubuntu/Debian 看
%sudo行是否在/etc/sudoers中且未被注释;RHEL/CentOS 则认%wheel - 必须用
-aG追加,不是-G(后者会清空该用户所有附加组) - 组变更后需重新登录终端,或运行
newgrp sudo(仅对当前 shell 生效)
常见错误现象:usermod -aG sudo alice 后立刻 su - alice 并运行 sudo whoami,却报 sorry, user alice is not allowed to execute——就是因为没重登录。
验证是否真生效,不能只看 groups alice,必须实测:
-
su - alice(输入密码) -
sudo -l:应显示(ALL : ALL) ALL或具体白名单;若提示not in sudoers file,说明组权限没加载或/etc/sudoers配置异常 -
sudo whoami:返回root才算通
删用户时最容易被忽略的残留问题
sudo userdel username 只删用户条目,不删家目录和邮件池,下次同名重建会混用旧配置,引发权限混乱甚至服务异常。
务必加 -r 参数:sudo userdel -r username,它会同时清理:
/home/username-
/var/mail/username(或/var/spool/mail/username) -
/var/log/journal/中关联日志(部分系统)
删完还要检查三处:
-
id username应报错 “no such user” -
ls /home/ | grep username应无输出 -
getent passwd username应无返回
如果之前手动往 /etc/sudoers 添加过规则,删用户后那行还得手动删掉,否则 sudo -l 仍会显示已失效的授权记录。










