在Linux系统中,suid
、sgid
和sticky bit
是文件权限位的三种特殊设置,它们提供了额外的安全特性。以下是对这些术语的详细说明:
- suid(Set User ID upon execution):
suid
位允许一个程序以文件所有者的权限运行,而不是以执行该程序的用户权限运行。当一个可执行文件设置了suid
位时,无论哪个用户执行该文件,都会以文件所有者的权限来运行。- 这种权限通常用于需要高权限但不希望持续保持高权限的程序,例如
passwd
命令。 - 在
ls -l
命令的输出中,suid
位会显示为文件权限的第一个字符是s
(例如-rwsr-xr-x
)。
- sgid(Set Group ID upon execution):
sgid
位的作用类似于suid
,但它是针对组权限的。当一个文件设置了sgid
位时,执行该文件的用户将获得文件所属组的权限。- 这通常用于共享文件,例如,一个组内的用户可以访问并修改一个共享目录,但其他组的用户则不能。
- 在
ls -l
命令的输出中,sgid
位会显示为文件权限的第二个字符是s
(例如-rwxr-sr--
)。
- sticky bit(Sticky bit):
sticky bit
主要用于目录,当设置在目录上时,只有文件的所有者、目录的所有者或超级用户(root)可以删除或重命名目录中的文件。- 这个特性可以防止一个用户删除或重命名另一个用户在共享目录中的文件。
- 在
ls -l
命令的输出中,sticky bit
会显示为文件权限的第三个字符是t
(例如drwxrwxr-x
)。
设置这些特殊权限位的方法是使用chmod
命令。例如:
- 设置
suid
位:chmod u+s 文件名
- 设置
sgid
位:chmod g+s 文件名
- 设置
sticky bit
:chmod o+t 目录名
撤销这些特殊权限位的方法是在相应的命令后添加-
号,例如:
- 撤销
suid
位:chmod u-s 文件名
- 撤销
sgid
位:chmod g-s 文件名
- 撤销
sticky bit
:chmod o-t 目录名
综上所述,这些特殊权限位的使用需要谨慎,因为它们可能会引入安全风险,尤其是在多用户系统中。管理员应该仔细考虑何时以及如何使用这些权限位。