find命令无法直接识别权限被修改,但可通过-ctime筛选最近状态变更的文件(含权限改动),再结合-perm等条件过滤可疑权限,如world-writable普通文件或SUID/SGID位异常,并建议限定高风险路径和递归深度以保障生产环境安全。

Linux 中没有直接记录“权限被修改”的审计日志(除非启用了 auditd),所以 find 本身无法直接识别“最近被修改过权限”的文件——它只能根据时间戳(如修改时间 -mtime、状态变更时间 -ctime)和当前权限(-perm)做组合筛选。而权限变更会触发 inode 的状态变更(change time),即 ctime,这是最可靠的依据。
用 -ctime 找出最近状态变更的文件(含权限改动)
ctime 在文件权限、所有者、所属组或内容任一发生变化时都会更新,因此它是追踪权限误改的关键指标。例如,查找过去 3 天内状态发生过变更的文件:
-
find / -xdev -ctime -3 2>/dev/null—— 扫描根目录下 ctime 小于 3 天(即 72 小时内)的所有文件/目录(-xdev避免跨挂载点) - 加
-ls可查看详细信息:find / -xdev -ctime -3 -ls 2>/dev/null | head -20 - 若只想看权限明显异常的(如 world-writable 普通文件),可叠加过滤:
find / -xdev -ctime -3 -type f -perm -o+w 2>/dev/null
结合 -perm 筛选可疑权限模式
仅靠时间不够,需进一步判断权限是否合理。常见风险权限包括:
- 普通文件具有执行权限:
-perm /a+x - 世界可写且非目录(易被篡改):
-type f -perm -o+w - SUID/SGID 位被意外设置:
-perm -4000(SUID)或-perm -2000(SGID) - 目录 world-writable 但无 sticky bit:
-type d -perm -o+w ! -perm -1000
缩小范围,避免全盘扫描影响系统
生产环境慎用 find /。建议聚焦高风险路径:
-
/etc(配置文件权限至关重要):find /etc -xdev -ctime -2 -ls 2>/dev/null -
/usr/local/bin、/opt(第三方软件常被植入恶意脚本) -
/var/www、/home/*/public_html(Web 目录易遭权限滥用) - 用
-maxdepth 3限制递归深度,提升响应速度
补充:真正溯源需依赖 auditd 或历史命令
find 只能发现“结果”,不能还原“谁、何时、为何改”。若需审计源头:
- 检查 audit 日志(如果启用):
ausearch -m chmod -ts recent | aureport -f -i - 查用户操作记录:
history(当前用户)、lastcomm(若启用 acct)、/var/log/auth.log(sudo 使用记录) - 确认是否为预期变更(如软件升级、配置管理工具运行)











