Linux SUID,SGID,SBIT

SUID

SUID(Set User ID):
SUID权限位允许一个程序在执行时暂时获得文件所有者的权限。当一个可执行程序具有SUID权限时,无论哪个用户执行该程序,程序都会以文件所有者的权限来运行。这对于某些需要特定权限才能执行的任务非常有用。SUID权限只能应用于可执行文件,对于其他类型的文件无效。

常见的是passwd命令,/usr/bin/passwd 这个文件的权限

状态:『-rwsr-xr-x』

image-20230919221127201

我们看到这个程序的所有者是root,理论上其他用户无法执行,但是在x该在的位置,成了s,这就是典型的SUID权限。因此这个程序就算是普通用户也能执行,执行这个程序的时候,程序会以root的权限运行这个程序

SGID

(Set Group ID)

这个就是在用户组的x该在的位置出现s

SGID权限位类似于SUID,但是它是针对文件所属组的权限。当一个可执行程序具有SGID权限时,无论哪个用户执行该程序,程序都会以文件所属组的权限来运行。这对于需要在特定组环境下执行的任务非常有用。与SUID一样,SGID权限也只能应用于可执行文件。

SBIT

这个 Sticky Bit, SBIT 目前只针对目录有效,对于文件已经没有效果了。

SBIT权限位主要应用于目录。当一个目录具有SBIT权限时,只有目录的所有者、文件所有者和超级用户才能删除或重命名该目录中的文件。这可以防止普通用户删除其他用户的文件。SBIT权限对于公共目录(如/tmp)非常有用,以确保每个用户只能删除自己创建的文件。

SUID/SGID/SBIT 权限设定

  • 4 为 SUID

  • 2为 SGID

  • 1 为 SBIT

假设要将一个文件权限改为『-rwsr-xr-x』时,由于 s 在用户权力中,所以是 SUID ,因此, 在原

先的 755 之前还要加上 4 ,也就是:chmod 4755 filename来设定

除了数字法之外,也可以透过符号法来处理chmod u=rwxs,go=x test