BASH - 查找一组文件中引用的所有世界可写文件

BASH - Find all world writable files referenced in a set of files

问题: 我如何找到 RHEL 5 服务器的 /etc/init.d 目录中的启动脚本中引用的所有全局可写文件?

限制条件:

这是我目前的情况。

worldWritable=$(find / -type f -perm -002)
startupScripts=$(ls -l /etc/init.d/* | tr '1' ' ' | tr -s ' ' | cut -f 9,9 -d " ")
for file in $worldWritable
do
    for line in $startupScripts
    do
        grep -w "$file" $line | grep -v "^#" >> outFile
    done
done

这种方法可行,但需要很长时间,并且其中包含很多不正确的地方(至少不是我要找的)。我只需要 "outFile" 包含在 /etc/init.d 目录中的任何脚本中引用的世界可写文件列表。

如果有人能提供更好的解决方案,我不介意完全放弃这种方法。我只需要更快、更可靠的东西。谢谢!

主要的缓慢当然来自 find /,扫描整个文件系统。反过来会更快:

  • 从初始化脚本中提取所有绝对路径
    • 使用适当的正则表达式,例如排除在同一行中较早出现 # 的匹配项
  • 对于每个提取的潜在路径,检查:
    • 文件实际存在
    • 文件是全局可写的

结果应该明显更快。