linux中无find-empty命令,应使用find -xdev -type d -empty查找空目录,需注意排除系统路径、过滤误报,并结合时间戳、命名特征和权限分析排查恶意行为。

你提到的 “Find-Empty” 很可能是对 find 命令的误称,或是某个小众、自定义脚本的名称(例如用 Python/Shell 封装的 find 空目录逻辑)。标准 Linux 发行版中,查找空目录的可靠方式是使用内置的 find 命令配合 -empty 和 -type d 选项。
✅ 正确方法:用 find 查找递归空目录(含隐藏目录)
恶意脚本常创建大量隐藏空目录(如 .cache_abc、.__tmp)用于占位、规避检测或后续写入。要完整扫描,需注意三点:包含隐藏项、限定为目录、排除挂载点干扰。
-
基础命令(含隐藏目录):
find /path -xdev -type d -empty 2>/dev/null -
-xdev防止跨文件系统(跳过 /proc、/sys、/dev、/run 等虚拟或独立挂载点,避免卡死或报错) -
2>/dev/null屏蔽权限不足提示(如 /root 下无权读取的目录) - 默认情况下,
find会匹配以.开头的隐藏目录(无需额外参数)
⚠️ 注意:哪些“空目录”可能被误报?
并非所有空目录都可疑。以下属于正常系统行为,建议先白名单过滤:
-
/var/lock、/var/run(systemd 早期习惯,现多为符号链接) -
/tmp下瞬时空目录(若 tmpfs 挂载且未清理) - 用户家目录中的
.local/share/Trash/files(清空后可能暂为空) - 容器或沙箱环境残留(如
/var/lib/docker/tmp/...)
可加 -not -path "/var/*" -not -path "/proc/*" -not -path "/sys/*" 排除常见路径。
? 进阶排查:关联时间戳与异常父路径
恶意脚本生成的空目录往往具有特征:创建时间集中、父目录非常规、名称随机。可组合筛选:
- 查最近 24 小时新建的空目录:
find /home -xdev -type d -empty -ctime -1 2>/dev/null - 筛出含疑似随机字符串的目录名:
find /tmp -xdev -type d -empty -name ".*[a-z0-9]{4,}" 2>/dev/null(需 shell 支持扩展 glob,或改用-regex) - 检查父目录权限是否异常(如 world-writable 空目录):
find /tmp -xdev -type d -empty -perm -002 2>/dev/null
?️ 安全建议:发现后不要直接删
确认是否恶意前,请先记录上下文:
- 用
stat /path/to/empty_dir查看创建(Birth)、修改(Modify)、访问(Access)时间 - 用
ls -la /path/to/parent观察同级是否存在可疑文件(如 .sh、.py、.so) - 检查进程树:
lsof +D /path/to/empty_dir(若有进程正占用该路径,说明尚未真正“空闲”) - 必要时保留快照:
tar -cf empty-suspect-$(date +%s).tar /path/to/dir
不复杂但容易忽略:真正的威胁往往不在空目录本身,而在其创建者——建议同步检查定时任务(crontab -l、/etc/cron*)、systemd 用户服务(systemctl --user list-timers)、以及最近安装的可疑包(apt list --installed | grep -i suspicious 或 rpm -qa --last | head -20)。











