SUID、SGID和Sticky Bit是linux特殊权限,分别用于以文件所有者身份执行、继承组权限及限制删除文件。SUID用4000表示,如chmod 4755;SGID用2000,可作用于文件和目录;Sticky Bit用1000,常用于/tmp等共享目录。三者可通过数字或符号方式设置,组合使用时需谨慎以防安全风险。

在linux系统中,文件和目录的权限管理非常关键。除了常见的读(r)、写(w)、执行(x)权限外,还有三种特殊权限位:SUID、SGID 和 Sticky Bit。它们用于实现更精细的安全控制和功能需求。下面详细介绍这三个特殊权限的作用、使用场景及设置方法。
SUID(Set User ID)
作用:SUID 仅对可执行文件有效。当一个文件设置了 SUID 权限时,任何用户在执行该文件时,都会以该文件所有者的身份运行,而不是以执行者自己的身份。
这在需要临时提升权限的场景中非常有用。例如,普通用户需要修改密码,而密码信息保存在 /etc/shadow 文件中,默认只有 root 可写。passwd 命令就设置了 SUID,使得普通用户执行时能以 root 身份写入 shadow 文件。
如何识别与设置:
- 在 ls -l 输出中,SUID 显示为所有者权限的 x 位变为 s(如果原位置有执行权限)或 S(无执行权限)。
- 例如:
-rwsr-xr-x 1 root root表示设置了 SUID。 - 用数字表示时,SUID 是 4000。设置命令:
chmod 4755 filename或chmod u+s filename。
SGID(Set Group ID)
作用:SGID 可作用于文件和目录。
- 对于文件:执行该文件时,进程将继承文件所属组的身份。类似于 SUID,但针对的是用户组。
- 对于目录:在此目录中创建的新文件将自动继承目录的属组,而不是创建者的主组。这对团队协作非常有用,确保多个用户创建的文件属于同一组,便于共享。
如何识别与设置:
- ls -l 中,SGID 显示为所属组权限的 x 位变为 s(有执行权限)或 S(无执行权限)。
- 例如:
-rwxr-sr-x 1 user team表示设置了 SGID。 - 数字表示为 2000。设置命令:
chmod 2755 dirname或chmod g+s dirname。
Sticky Bit(粘滞位)
作用:Sticky Bit 主要用于目录。一旦目录设置了粘滞位,只有文件的所有者、目录所有者或 root 用户才能删除或重命名该目录中的文件。
典型应用是 /tmp 目录。所有用户都可以在 /tmp 中创建文件,但不能删除别人创建的文件,防止误删或恶意操作。
如何识别与设置:
- ls -l 中,其他用户权限的 x 位变为 t(有执行权限)或 T(无执行权限)。
- 例如:
drwxrwxrwt 2 root root表示设置了 Sticky Bit。 - 数字表示为 1000。设置命令:
chmod 1777 /tmp或chmod +t /tmp。
这三个特殊权限可以组合使用,如 4755(SUID)、2755(SGID)、1777(Sticky Bit),甚至同时设置多个,如 7777 表示三项都启用(不推荐生产环境使用)。
基本上就这些。理解 SUID、SGID 和 Sticky Bit 的作用,有助于更好地管理 Linux 系统权限,既满足功能需求,又避免安全风险。注意:滥用这些权限可能带来安全隐患,应只在必要时谨慎使用。


