利用linux find命令,帮忙写一个组合命令搜索Linux系统中全局可写文件,排除掉/proc和/sys目录

要搜索Linux系统中全局可写的文件(包括目录),同时排除 /proc/sys 目录,可以使用以下组合命令:

1
sudo find / -path /proc -prune -o -path /sys -prune -o ! -type l -perm -0002 -print 2>/dev/null

命令详解:

  1. sudo
    以管理员权限运行,确保能访问所有系统文件。

  2. find /
    从根目录开始搜索。

  3. 排除目录逻辑

    • -path /proc -prune -o:若路径是 /proc,则跳过整个目录(-prune),否则(-o)继续后续条件。
    • -path /sys -prune -o:同上,跳过 /sys 目录。
  4. 筛选目标文件

    • ! -type l:排除符号链接(因为符号链接的权限无关紧要)。
    • -perm -0002:匹配其他用户(others)有写权限的文件(权限位 0002 表示 other 可写)。
  5. 输出与错误处理

    • -print:打印符合条件的文件路径。
    • 2>/dev/null:将错误信息(如权限不足)重定向到空设备,避免干扰输出。

关键选项说明:

  • **-prune**:跳过整个目录树,高效排除 /proc/sys
  • -perm -0002- 表示权限位必须包含 0002(即 other 写权限必须存在)。
  • **! -type l**:忽略符号链接,聚焦实际文件/目录。

示例输出:

1
2
3
4
/var/tmp/example
/home/user/public_dir
/dev/shm/tempfile
...

注意事项:

  • 运行权限:必须使用 sudo 确保访问所有目录。
  • 安全警告:结果可能包含系统关键文件,修改前需确认风险。
  • 扩展需求:若需更详细输出(如文件属性),可将 -print 替换为 -ls

此命令高效且精准,适用于系统安全审计或排查全局可写文件。