2026-10-23 06:55:50
Linux特殊权限之suid、sgid、sbit权限
在Linux系统中,除了基本的rwx权限外,还存在一些特殊权限,它们分别是suid、sgid和sbit。这些特殊权限为系统管理和文件访问提供了额外的灵活性和安全性。
一、suid权限
基础原理
suid通过S字符标识,存在于用户权限位的x对应权限位置。
若某文件本身的用户权限位就有x权限,则设置suid权限时,会以s(小写)表示。
给文件设置s权限对应的数字表示为4,在八进制数下可以用4000表示。
suid同样也可以使用chmod命令设置权限,可以使用字符或数字表示。
功能与应用
suid仅适用于可执行的文件。
当用户对设有suid的文件有执行权限时,执行该文件时会以该文件属主的用户身份去执行。执行完毕后,身份的切换也会随之消失。
例如,/usr/bin/passwd文件具有suid权限,因此普通用户执行passwd命令时,能够以root用户身份修改/etc/passwd和/etc/shadow文件。
危险性与管理
suid权限会对系统有一定的危险,因为它允许执行者拥有文件属主的全部权限。
一般使用sudo命令代替suid权限执行相应的操作,以提供更细粒度的权限控制。
在对Linux系统优化时,会尽量去除所有不必要的suid命令。
二、sgid权限
基础原理
对于二进制文件,sgid与suid的作用、使用方法大致相同,但sgid是设置文件属组的权限。
sgid主要作用于文件夹:当为某个文件夹设置sgid权限后,在该文件夹中创建的文件都会以该文件夹的属组权限为准。
功能与应用
当执行具有sgid权限的二进制文件时,执行者会获得该命令在执行期间所属组的身份与权限。
当设置了sgid权限的文件夹中创建文件或文件夹时,这些文件或文件夹会保持与上一级目录相同的属组权限属性。
实践案例
创建一个共享目录,并设置其属组和sgid权限,以确保在该目录下创建的文件都继承相同的属组权限。
三、sbit粘滞位
基础原理
粘滞位(sbit)设置在o的权限位上,通过t或T字符标识。
当一个目录有了粘滞位,除了root用户外,任何用户都只能删除、移动自己创建的文件或目录,而不会影响到其他用户的文件或目录。
功能与应用
粘滞位主要用于共享目录,以防止用户误删除或移动其他用户的文件。
若文件夹没有设置粘滞位,并且文件夹权限的rwx权限很大,任何具有该目录写和执行权限的用户都可以删除和移动其中的任何文件。
实践案例
在/tmp等共享目录中设置粘滞位,以确保用户只能删除自己的文件。
总结
这些特殊权限为Linux系统提供了额外的安全性和灵活性,但也需要谨慎使用,以避免潜在的安全风险。