如何在Linux下利用Find -Perm /7000全局搜索具有特殊位(SUID/SGID/Sticky)的高风险空目录

风瑶同学_6559

风瑶同学_6559

2026-06-06

796人浏览

原创

find不能用-perm /7000搜高风险空目录,因suid对目录无效,仅sgid(2000)或sticky(1000)有意义;正确命令是find / -xdev -type d ( -perm -2000 -o -perm -1000 ) -empty 2>/dev/null。

如何在linux下利用find -perm /7000全局搜索具有特殊位(suid/sgid/sticky)的高风险空目录

不能直接用 find -perm /7000 搜索“高风险空目录”——因为特殊权限位(SUID/SGID/Sticky)本身**不作用于目录的空/非空状态**,且SUID 对目录完全无效,SGID 和 Sticky 才可能出现在目录上。所谓“高风险空目录”,实际是指:设置了 SGID 或 Sticky 位、但内部无文件、却可能被滥用的目录(例如被误配为 world-writable + sticky 的临时目录)。

先明确:哪些特殊位能出现在目录上?

– SUID(4000)对目录无意义,Linux 忽略它,ls -l 中不会显示,find -perm /4000 查到的只是带 SUID 的可执行文件,不是目录。
– SGID(2000)可用于目录:新创建的文件/子目录自动继承父目录的组(常用于协作目录)。
– Sticky(1000)仅用于目录:如 /tmp,确保用户只能删除自己创建的文件。

搜索真正有意义的“带特殊位的空目录”

要找的是:同时满足两个条件的目录: ① 权限中包含 SGID(2000)或 Sticky(1000)位; ② 是空目录(不含任何文件、子目录、隐藏文件)。

推荐命令:

Linux installer
Linux installer

先解析安全源,运行本地CLI安装、启动、卸载Linux桌面应用。用户请求时使用。

下载
  • 查所有带 SGID 位的空目录:
    find / -xdev -type d -perm -2000 -empty 2>/dev/null
  • 查所有带 Sticky 位的空目录:
    find / -xdev -type d -perm -1000 -empty 2>/dev/null
  • 查两者任一(SGID 或 Sticky)的空目录:
    find / -xdev -type d \( -perm -2000 -o -perm -1000 \) -empty 2>/dev/null

说明:
– -xdev 防止跨文件系统(跳过 /proc、/sys、挂载点等);
– -perm -2000 表示“必须有 SGID 位”,不是“只要含 SGID 位”(/2000 是“或”逻辑,会误匹配普通 755 目录);
– -empty 精确匹配空目录(不含 . 开头的隐藏项);
– 2>/dev/null 屏蔽权限不足的报错。

为什么不用 /7000?

-perm /7000 是“按位或”匹配,意思是“只要权限中任意一位(4000 或 2000 或 1000)被置位就命中”。但:
– 它会把 drwxr-xr-x(即 755)也当成匹配——因为 755 的八进制值是 755,二进制末12位不含高位,但 /7000 实际检测的是高4位,而 755 的高位为 0,所以不会误匹配;不过更关键的是:
– 它无法区分“只设了 SGID”和“SGID+Sticky 同时设”,也无法排除 SUID(尽管目录上无效);
– 更重要的是:/7000 会漏掉权限如 2755(SGID+rw-r-xr-x)或 1777(Sticky+rw-rw-rw-)这类常见组合——因为 /7000 要求至少一个高位为 1,而 2755 的高位是 2,符合;但语义模糊,不如 -perm -2000 明确。

发现后该怎么做?

对搜出的目录,快速评估风险:

  • 运行 ls -ld /path/to/dir,看其他用户(others)是否有写权限(w):
    – 若是 drwxrwsrwt(即 3777)且 world-writable → 高风险(如配置错误的共享 tmp);
    – 若是 drwxr-s---(2750)且组内可控 → 通常安全。
  • 检查是否属于服务目录(如 /var/tmp, /run/user),避免误删;
  • 确认是否由包管理器或系统服务创建(rpm -qf 或 dpkg -S),不要随意改权限。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java 网络安全
Java 网络安全

本专题聚焦 Java 在网络安全与加密通信中的应用,系统讲解常见加密算法(MD5、SHA、AES、RSA)、数字签名、HTTPS证书配置、令牌认证(JWT、OAuth2)及常见安全漏洞防护(XSS、SQL注入、CSRF)。通过实战项目(如安全登录系统、加密文件传输工具),帮助学习者掌握 Java 安全开发与加密技术的实战能力。

2025.10.13

4465

12

PHP 安全与防护
PHP 安全与防护

本专题聚焦于PHP开发中的安全问题与防御措施,详细讲解SQL注入、XSS攻击、CSRF攻击、文件包含漏洞等常见安全风险及其修复方法。通过结合实际案例,帮助开发者理解漏洞成因,掌握输入验证、会话安全、加密存储与安全编码规范,全面提升PHP网站的安全防护水平。

2025.11.04

395

21

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3870

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3333

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2473

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5950

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5582

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3293

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2785

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习