首页/安全/安全加固速查/SGID 文件与目录清点
主机加固基线90 条

SGID 文件与目录清点

SGID 文件以属组身份运行;SGID 目录让新建文件继承属组(如共享协作目录)。两类都要清点,重点核查运行时可写的 SGID 文件。

安全加固速查安全更新于 2026-10-13

SGID 的两类用法

SGID 有两类:SGID 文件在执行时以文件属组的身份运行;SGID 目录让目录内新建的文件自动继承目录的属组,常用于共享协作目录。两类都要清点,重点核查「运行时可写」的 SGID 文件——这类文件会以属组权限执行,一旦其他用户也能改它,就构成了现成的提权通道。

基本信息

适用平台RHEL / CentOS 系与 Debian / Ubuntu 系
检查点-perm -2000 的清单可解释且与基线一致
风险等级中
常见预期项共享协作目录、/var/log/journal 等 SGID 目录
关联项SUID(-perm -4000)需单独清点与处置

典型使用场景

  • 提权面清点:列出所有以属组身份运行的程序
  • 共享协作目录配置核查,确认新文件是否继承属组
  • 基线比对:确认 SGID 清单没有新增项
  • 应急响应阶段查找被植入的可疑 SGID 文件
  • 权限整改前评估误删风险,避免破坏协作目录

清点文件与目录

清点文件与目录
find / -xdev -type f -perm -2000 -print 2>/dev/null | sort > /root/sgid-files-baseline.txt   # SGID 文件基线
find / -xdev -type d -perm -2000 -print 2>/dev/null | sort > /root/sgid-dirs-baseline.txt   # SGID 目录基线
find / -xdev -type f -perm -2000 -writable -print 2>/dev/null   # 运行时可写的 SGID 文件,优先核查
ls -l /path/to/file        # 查看属主属组与执行位,确认以谁的权限运行

输出逐列读法

列含义判读
属组执行位 sSGID 已设置出现在非预期路径就要核查
文件属组执行时采用的属组身份属组为特权组时风险更高
可写位其他用户能否修改该文件SGID 加全局可写即提权通道
目录属组目录内新文件的继承属组共享协作目录依赖此项
基线差异与上次清单相比的新增项新增项必须能解释来源
SGID 目录多数是功能设计(共享目录让新文件继承属组、日志目录让组内成员可读),判定要看属主属组与实际用途,不能一律清除。
清点结果里「可被其他用户写入的 SGID 文件」要优先处理:任何能修改这个文件的人,都能以它所属组的身份执行代码。

易错点

  • 把 SGID 与 SUID 合并检查、用同一套处置策略,误删功能所需的 SGID 协作目录会直接破坏业务
  • 对目录设置 setgid 位会改变新建文件的属组,变更前必须确认目录用途,共享目录与普通目录的策略正好相反
  • 只清点清单不看可写位,漏掉真正危险的「可写 SGID 文件」
  • 清点结果不留基线,下次无法判断哪个 SGID 是新增的,应保存清单并做差异比对

数据来源与参考

  • CIS Linux Benchmark:Ensure SGID files are reviewed
  • find(1) 手册

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌