技术博客

Linux 特殊权限位:SUID、SGID、Sticky Bit 到底有什么用?

除了 rwx,Linux 还有 SUID、SGID、Sticky Bit 等特殊权限位。理解它们是权限排查和安全加固的基础。

Linux权限SUIDSGIDSticky Bit

学习 Linux 权限时,很多人只记住 rwx,但生产环境里真正容易出问题的,往往是特殊权限位。SUID、SGID 和 Sticky Bit 会改变文件执行或目录访问行为,既有用,也可能带来安全风险。

SUID

SUID 用在可执行文件上,表示普通用户执行该文件时,可以临时获得文件所有者的权限。典型例子是 passwd,普通用户需要修改自己的密码,但密码文件本身需要高权限访问。

查看时,如果所有者执行位显示为 s,说明有 SUID:

ls -l /usr/bin/passwd

风险在于:如果一个可写或有漏洞的程序带 SUID root,可能被利用提权。

SGID

SGID 用在文件上时,执行者会临时获得文件所属组权限。用在目录上时,新建文件会继承目录所属组。这在团队共享目录里很常见。

例如项目目录希望所有成员创建的文件都属于同一个组,可以使用 SGID。

Sticky Bit

Sticky Bit 常见于 /tmp。它允许多人写入目录,但用户只能删除自己拥有的文件,不能随便删除别人的文件。

ls -ld /tmp

看到权限末尾的 t,就是 Sticky Bit。

运维检查

生产环境建议定期扫描异常 SUID 文件:

find / -perm -4000 -type f 2>/dev/null

重点关注新增文件、非系统路径文件和权限异常文件。权限不是越大越方便,权限越大,责任越大。

参考资料