useradd默认不创建家目录,因/etc/login.defs中create_home默认为no;需将其改为yes或使用-m选项。

useradd 创建用户时为什么家目录没生成
默认情况下 useradd 不会自动创建家目录,除非显式加 -m 选项。CentOS 8/RHEL 8 默认行为已改,和旧版 CentOS 7 不同——不带 -m 就只建用户记录,/home/username 目录压根不会出现。
常见错误现象:运行 useradd alice 后,ls /home 看不到 alice,且用户首次登录失败(提示“no home directory”)。
- 正确做法:始终带上
-m,例如useradd -m alice - 如果漏了,补救方式不是手动 mkdir,而是用
usermod -m -d /home/alice alice+cp -r /etc/skel/. /home/alice/+chown -R alice:alice /home/alice -
-M是明确禁止创建家目录,仅用于系统服务账户(如nginx、redis)
删除用户时文件残留怎么彻底清理
userdel username 只删账号记录,不碰 /home/username 和 /var/spool/mail/username。这是设计行为,不是 bug——系统默认假设你可能要保留数据迁移或审计。
容易踩的坑:直接删用户后重装软件,发现旧配置还在 /home 下导致冲突;或者误以为用户已清空,其实邮件队列或 cron 任务还挂着。
- 要连家目录一起删,必须加
-r:userdel -r username -
-r会删掉/home/username、/var/mail/username(或/var/spool/mail/username),但不会删 NFS 挂载点、Docker volume 或自定义路径下的数据 - 如果用户曾运行过 systemd user session,还需手动清理
/run/user/UID和/var/lib/systemd/catalog/database-UID(需 root 权限)
普通用户怎么获得 sudo 权限而不是改 sudoers
硬编辑 /etc/sudoers 风险高,一行格式错就锁死所有管理员登录。现代 Linux(包括 CentOS 8+、Ubuntu 20.04+)推荐走用户组机制,更安全也更易审计。
关键点:不是所有系统都默认启用 wheel 组的 sudo 权限,得先确认配置是否生效。
- 检查
/etc/sudoers是否有这行(未被注释):%wheel ALL=(ALL) ALL - 把用户加进
wheel组:usermod -aG wheel username(注意必须带-a,否则会覆盖原有附加组) - 验证:切换到该用户,运行
sudo -l,应显示可执行命令列表;若报 “user is not in the sudoers file”,说明%wheel行被注释或拼写错误 - Debian/Ubuntu 系默认用
sudo组而非wheel,对应命令是usermod -aG sudo username
passwd 修改密码后用户仍无法登录
输对密码却提示 “Authentication failure”,大概率不是密码错,而是 shell 或账户状态问题。
最常被忽略的三个检查点:
- 看
/etc/passwd第七列:运行getent passwd username,确认末尾是/bin/bash或/bin/sh,不是/sbin/nologin或/usr/sbin/nologin - 检查账户是否被锁定:运行
passwd -S username,输出中第二列为LK表示锁定,需passwd -u username解锁 - PAM 认证模块可能拦截:比如设置了
auth [default=die] pam_faillock.so authfail deny=3 unlock_time=600,连续输错三次后会被临时封 10 分钟,此时faillock --user username --reset可清空计数
用户管理真正麻烦的从来不是命令记不住,而是每一步背后隐含的状态依赖:家目录权限、shell 可用性、PAM 策略、组权限继承顺序……漏查任意一环,都会让看似成功的操作在登录那一刻失效。











