Linux 系统中怎么清理系统中长期未登录的冗余用户账号

冬雪君_8304

冬雪君_8304

2026-11-04

111人浏览

原创

清理长期未登录冗余账号核心是“先识别、再冻结、后清理”:须同时满足90天无登录、UID≥1000、shell为nologin/false且shadow密码字段有效三条件;冻结用usermod -s /usr/sbin/nologin并观察日志2天;清理前查进程、挂载、邮件、文件活跃度;归档后userdel -r删除,再手动清sudo、ssh密钥、tmp等残留。

linux 系统中怎么清理系统中长期未登录的冗余用户账号

清理长期未登录的冗余用户账号,核心是“先识别、再冻结、后清理”,避免误删系统关键账户或引发服务异常。重点不在删得快,而在判得准、动得稳。

一、精准识别哪些用户真该清

不能只看last或lastlog简单筛选。真正需清理的是同时满足三个条件的账号:

  • 90天内无成功登录记录(用lastlog -b 90,不是last)
  • UID ≥ 1000(排除root、syslog、sshd等系统账号)
  • shell为/sbin/nologin或/bin/false,且/etc/shadow中密码字段不为*或!(说明曾有有效凭证,非纯占位)

快速筛查命令示例:

lastlog -b 90 | awk '$1 !~ /^(root|sync|shutdown|halt|operator|nobody|daemon)/ && $5 != "Never" {print $1}' | while read u; do [ $(id -u "$u" 2>/dev/null) -ge 1000 ] && grep -qE "^$u:.*nologin|false" /etc/passwd && [ "$(awk -F: -v u="$u" '$1==u {print $2}' /etc/shadow)" != "*" ] && echo "$u"; done

二、先冻结,留出观察窗口

锁定比删除更安全。冻结后观察1–2天,确认无服务报错或日志异常:

  • 禁止登录:sudo usermod -s /usr/sbin/nologin 用户名(比passwd -l更彻底,防SSH密钥绕过)
  • 清空定时任务:sudo crontab -u 用户名 -r
  • 停用用户级服务:sudo systemctl --user --machine-id= --scope stop --all 用户名.* 或直接 sudo loginctl terminate-user 用户名

观察日志:journalctl -u systemd-logind -S "2 days ago" | grep 用户名 和 tail -n 50 /var/log/auth.log,确认无认证失败或服务调用痕迹。

Linux Security Scanner
Linux Security Scanner

Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...

下载

三、清理前必须做的检查项

冻结无异常后,执行清理前务必逐项确认:

  • 查进程:ps -u 用户名 -f 或 pgrep -u 用户名 —— 有则用 pkill -u 用户名 终止
  • 查挂载:findmnt -U | grep "/home/用户名" —— 若有,先 sudo umount /home/用户名
  • 查邮件路径:ls -l /var/{mail,spool/mail}/用户名 2>/dev/null —— 两个位置都可能存邮件
  • 查主目录活跃度:find /home/用户名 -type f -mtime -30 | head -5 确认近期无文件访问

四、分步清理与残留扫除

确认无误后,按顺序操作:

  • 归档备份(建议保留至少30天):sudo tar -czf /backup/用户名_$(date +%Y%m%d).tar.gz /home/用户名 /var/mail/用户名 2>/dev/null
  • 删除账号及主目录:sudo userdel -r 用户名
  • 手动清理常见残留:
    • sudo rm -f /var/spool/cron/用户名
    • sudo grep -r "用户名\|%用户名" /etc/sudoers* -l | xargs -r sudo sed -i '/用户名\|%用户名/d'
    • sudo find /root/.ssh/authorized_keys /etc/ssh/authorized_keys* -type f -exec sed -i '/用户名/d' {} + 2>/dev/null
    • sudo find /tmp /var/tmp -user 用户名 -delete 2>/dev/null

清理后验证:id 用户名(应提示 no such user)、getent passwd 用户名(无输出)、ls -ld /home/用户名(No such file)。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4390

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3693

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2973

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

7310

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6942

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3973

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3465

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3699

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习