一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Linux用户安全:定期清除无效账户与关联权限

时间:2026-07-03 10:06:46 编辑:袖梨 来源:一聚教程网

应识别UID≥1000、90天无登录且Shell为nologin/false、密码锁定或过期的账户,优先用passwd -l、usermod -s /usr/sbin/nologin、chage -E 0三步禁用,确认无服务依赖后再userdel -r删除,并同步收紧sudo、SSH等权限。

定期清理无效账户是Linux用户安全管理中最直接有效的加固手段之一。它不是“删掉就完事”,而是要识别准、禁用稳、删除慎,再配合权限收口,才能真正切断潜在攻击面。

怎么识别真正的无效账户

不能只看名字像不像“test”“demo”,也不能只查有没有家目录。关键看三点是否同时成立:

  • UID ≥ 1000(普通用户范围),且不是你明确知道在用的业务账号
  • 最近90天无成功登录记录(last -s "-90 days" | awk '{print $1}' | sort -u
  • shell为/sbin/nologin/bin/false,且/etc/shadow中密码字段为*!(已被锁定)或已过期(chage -l 用户名 | grep "Password expires"

系统自带的daemonsyslogsshd等低UID账号,即使不登录也不建议动——它们是服务依赖主体,删错可能中断日志、SSH等基础功能。

先禁用,别急着删

对疑似无效账户,优先执行三步禁用,观察1–2天系统日志是否异常(journalctl -u systemd-logind -n 50grep "Invalid user" /var/log/auth.log):

  • 锁定密码:sudo passwd -l 用户名
  • 关闭交互式登录:sudo usermod -s /usr/sbin/nologin 用户名
  • 设账户立即过期:sudo chage -E 0 用户名

这三步组合可彻底阻断认证路径,但保留账号结构和文件归属,既安全又可逆。

确认无依赖后再删除

删除前必须交叉验证四项:

  • 该用户不在任何crontab -l/etc/cron.*
  • 没有运行中的进程:pgrep -u 用户名 返回为空
  • 未被任何systemd service文件(/etc/systemd/system/*.service)以User=指定
  • 所属主组无其他成员(getent group 组名 输出仅含该用户名)

满足全部条件后,再执行:sudo userdel -r 用户名-r才删家目录;新手建议先省略,手动检查/home/用户名/var/spool/mail/用户名后再删)。

同步收紧剩余账户权限

清理只是起点,权限最小化才是常态:

  • 删掉/etc/sudoers里非运维人员的ALL=(ALL) ALL行,改用/etc/sudoers.d/下按组白名单授权
  • 确保PermitRootLogin noPasswordAuthentication no已在/etc/ssh/sshd_config中启用
  • 每季度运行一次审计命令:sudo awk -F: '$3 >= 1000 {print $1}' /etc/passwd | xargs -I{} sh -c 'echo {}; sudo chage -l {} 2>/dev/null | grep -E "(Last password change|Account expires|Password expires)"'

每次操作前备份关键文件:sudo cp /etc/{passwd,shadow,group} /root/etc-backup-$(date +%F),出问题能秒级回退。

热门栏目