Linux特殊权限

admin 2021年01月16日 1,045次浏览

在Linux中,有三个特殊权限SUID、SGID、SBIT

SUID

  • SUID权限在文件权限中的位置

    SUID权限是出现在文件的属主的 x 权限上

    [root@localhost ~]# ll /usr/bin | grep passwd
    -rwsr-xr-x. 1 root root      27856 4月   1 2020 passwd
    
  • SUID的作用与限制

    • 执行者将临时具有程序拥有者的执行权限
    • SUID仅对二进制程序有效
    • 执行者需要对该程序有 x 的可执行权限
    • 本权限仅在执行该程序的过程中有效

SGID

  • SGID权限在文件权限中的位置

    SGID权限是出现在文件的属组的 x 权限上

    [root@localhost ~]# ll /usr/bin | grep locate
    -rwx--s--x. 1 root slocate   40520 4月  11 2018 locate
    
  • SGID的作用

    SGID权限不但可以对二进制程序设置,还可以对目录进行设置,而且对目录的设置在日常工作中比较常用

    • 对于二进制程序

      执行者在执行的过程中,将会获得该程序用户组权限的支持

    • 对于目录 (常用)

      • 用户如果对该目录有 r、x 的权限,那么该用户就可以进入该目录
      • 用户在此目录下的有效用户组,将会变成该目录的用户组
      • 如果用户在此目录下有 w 权限,那么该用户在此目录下新建文件的用户组与该目录的默认用户组相同

SBIT

  • SBIT权限在文件权限中的位置

    [root@localhost ~]# ll /
    drwxrwxrwt.  24 root root 4096 1月  16 22:29 tmp
    
  • SBIT的作用

    如果一个目录设置了SBIT,那么对于此目录具有 w、x 权限的用户可以在该目录下创建目录或者文件,该用户在此目录下创建的目录或文件,只有创建者和root可以删除,其他人无法删除

特殊权限设置

  • 权限编号

    • SUID:4
    • SGID:2
    • SBIT:1
  • 权限设置

    • 权限设置

      在原有权限前面添加对应权限编号,或者使用u+s、g+s、o+t

    • 权限取消

      将文件权限修改为3位权限,或者使用u-s、g-s、o-t

  • 权限设置示例

    如果原文件权限为“750”,需要给该文件设置SBIT,只需将该文件权限设置为“1750”即可

    [root@localhost ~]# chmod 1755 /tmp/test/
    [root@localhost ~]# ll /tmp
    drwxr-xr-t  2 root  root         6 1月  16 22:38 test
    

注意: 在文件特殊权限中,可能会出现"S"或“T”,这表示特殊权限为空权限,原因是属主都不具备相应权限