Linux中的三种特殊权限
2026/7/23 18:30:31 网站建设 项目流程

在 Linux 里,文件权限大家都很熟:r / w / x,再加上属主、属组、其他用户,日常用起来已经够多了。但真正在生产环境里混久了,总会遇到几个“看起来怪怪的权限位”——多出来的st,甚至数字前面多了一个 4、2、1。
这就是 Linux 的 三种特殊权限。它们不常用,但一旦用上,往往都很关键。

一、SUID:谁执行,权限就像谁?

先说 SUID(Set User ID)。
正常情况下,一个程序是“谁运行,就用谁的权限”。那如果一个普通用户想执行一个必须用 root 权限才能完成的操作,怎么办?

这时候就轮到 SUID 出场了。

当一个可执行文件设置了 SUID 位后,程序在运行时,会临时拥有文件属主的身份,而不是执行者的身份。最经典的例子就是passwd命令。
你有没有想过:普通用户为什么能改/etc/shadow?明明那个文件只有 root 才能写。

答案很简单:passwd是 root 拥有的,并且设置了 SUID。你运行它时,表面上是你在执行,实际上程序是“以 root 的身份”在干活。

所以 SUID 的核心一句话可以记住:
“执行者不重要,重要的是这个文件是谁的。”

当然,这个权限也很危险。给错了程序,等于给了别人一把“半个 root 的钥匙”。

二、SGID:不只是文件,目录更关键

SGID(Set Group ID) 和 SUID 很像,只不过它管的是“组”。

在可执行文件上,SGID 表示:
程序运行时使用文件所属的组权限。

但它真正常用的地方,其实是 目录。

当一个目录设置了 SGID 后,会发生一件非常实用的事:
在这个目录里新建的文件,默认继承目录的属组,而不是创建者自己的主组。

这在多人协作目录里非常重要。否则会出现什么问题?
A 建的文件,组是 A 的;B 建的文件,组又是 B 的;权限一乱,协作立刻变成灾难。

所以 SGID 更像是在说:
“进了这个目录,就按这里的组规矩来。”

三、Sticky Bit:能创建,不一定能删

最后一个是 Sticky Bit,也就是常见的t

它几乎只对 目录 有意义,用来解决一个非常现实的问题:
所有人都能写的目录,谁来保证文件不会被乱删?

典型场景就是/tmp目录。
所有用户都能往里面写文件,但如果没有 Sticky Bit,那任何人都可以删除别人的临时文件,这显然不现实。

开启 Sticky Bit 后,规则变成了:
只有文件的所有者、目录的所有者,或者 root,才能删除或重命名这个文件。

所以 Sticky Bit 的本质不是“限制创建”,而是:
“你可以在这放东西,但别动不属于你的。”

总结一下这三种特殊权限

  • SUID:程序执行时,临时获得文件属主的权限

  • SGID:

    • 文件:执行时继承文件属组

    • 目录:新文件继承目录的属组

  • Sticky Bit:目录里,谁创建谁负责,别人不能乱删

如果说普通权限解决的是“你能不能读、写、执行”,
那这三种特殊权限解决的就是更现实的问题:
你到底是“以谁的身份”在做事,又“能对谁的东西动手”。

这也正是它们存在的意义。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询