Linux find 命令:查找可疑文件的实用指南
在 Linux 系统运维和安全排查中,find 命令是查找文件的强大工具。当怀疑系统存在可疑文件(如木马、后门)时,可以结合文件修改时间、类型和名称等条件进行精准搜索。以下是几个常用且实用的查找场景和命令。
1. 查找最近30天内被修改的文件
查找当前目录及其子目录下,最近30天内被修改过的所有文件,并列出详细信息。这有助于发现近期可能被篡改或植入的文件。
find ./ -mtime -30 -type f -exec ls -l {} ;
-mtime -30:表示修改时间在30天以内。-type f:限定查找对象为普通文件。-exec ls -l {} ;:对找到的每个文件执行ls -l命令,显示详细信息。
2. 查找并列出所有 .txt 文件
查找当前目录及其子目录下所有扩展名为 .txt 的文件。
find ./ -name "*.txt" -print
在现代系统中,-print 是默认动作,通常可以省略。
3. 查找并删除所有 .txt 文件
警告:此命令会直接删除文件,请谨慎使用! 建议先使用不带 -exec 的命令预览要删除的文件列表。
find ./ -name "*.txt" -exec rm -rf {} ;
-exec rm -rf {} ;:对找到的每个文件执行rm -rf命令进行强制删除。
4. 查找最近30天内被修改的 .php 文件
这是安全排查的典型场景,用于查找近期可能被植入恶意代码的 PHP 文件。
find ./ -name "*.php" -mtime -30 -type f -exec ls -l {} ;
修正说明: 原文命令中的 -typef 应为 -type f(中间有空格)。已修正。
5. 查找特定时间窗口内被修改的 .php 文件
查找修改时间在30天以内,但超过1天(即1天前到30天前之间)的PHP文件。这有助于缩小排查范围,聚焦于某个历史时间段。
find ./ -name "*.php" -mtime -30 -mtime +1 -type f -exec ls -l {} ;
-mtime +1:表示修改时间在1天以前。- 组合条件
-mtime -30 -mtime +1表示“修改时间在1天到30天之间”。
修正说明: 原文命令中的 -execls 应为 -exec ls(中间有空格)。已修正。
安全排查进阶建议
- 结合文件权限查找: 可使用
-perm参数查找具有可疑权限(如777)的文件,例如:find ./ -type f -perm 777。 - 查找可疑隐藏文件: 使用
find ./ -name ".*"查找所有隐藏文件。 - 先预览后操作: 在执行任何删除或修改操作前,务必先使用
-exec ls -l或-print预览结果,确认无误。 - 结合其他工具: 对于找到的可疑文件,应使用杀毒软件、
strings命令或在线病毒扫描服务进行进一步分析。
熟练掌握 find 命令的用法,能极大提升系统安全审计和问题排查的效率。