文件特殊访问权限:SUID,SGID,SBIT

本文详细解释了Unix/Linux文件权限中的SUID、SGID和SBIT特殊权限的含义及其工作原理。通过实例演示,帮助读者理解这些权限如何在执行程序时改变用户权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般来讲unix/linux文件的权限是三个用户(owner,group,others),都是rwx,这是大家比较熟悉的,其实还有三个特殊的权限,SUID,SGID,SBIT三个,先看一下,

怎么权限位中会出现t和s呢?详解如下:

一 SetUID:当s这个标志出现在文件所有者的x权限上时,如上图/usr/bin/passwd 的权限状态”rwsr-xr-x”,此时就称为Set UID,简称SUID的特殊权限。 

SUID的限制与功能:

  • SUID权限仅对二进制程序有效;
  • 执行者对于该程序需要具有X的可执行权限;
  • 本权限仅在执行程序的过程中有效;
  • 执行者将具有该程序的所有者权限;

这么说可能不会明白,但是举个例子就容易明白了,如果需要修改自己用户的密码怎么办(我自己的用户名为kinglong),直接passwd就可以啊。但是与密码有关的文件/etc/shadow文件只有root用户才有写的权限,怎么回事?


1  kinglong对于/usr/bin/passwd这个程序来说是具有x权限的(作为others),表示kinglong可以执行/usr/bin/passwd;

2 passwd的拥有者是root这个帐号;

3 kinglong执行passwd的过程中,会暂时获得root的权限;

4 /etc/shadow可以被kinglong这个一般用户所执行的passwd所修改;


二 Set GID

当s标志位在用户组的x时则称为Set GID, SGID。

SGID有如下的功能:

1 SGID对二进制程序有作用;

2 程序执行者对于该程序来说,需具备X的权限;

3 执行者在执行的过程中将会获得该程序用户组的支持;

以locate命令来举例说明,/usr/bin/locate(即locate)命令会去查询/var/lib/mlocate/mlocate.db这个 文件,但是kinglong这个用户对于mlocate.db并没有读的权限,如下图:

没有mlocate.db的读权限,但能去读mlocate.db文件,怎么回事呢?这就是SGID的功能,普通用户对locate具有组x权限,那么在执行locate过程中,将获得组的用户权限的支持,如上图,那么locate会获得root用户组的权限,当然可以读mlocate.db文件了。

除了二进制文件外,SGID对于目录也具有作用,

1 用户若对于次目录具有r与x的权限时,该用户能够进入此目录;

2 用户在次目录下的有效用户组(effective group)将会变成该目录的用户组;

3 若用户在次目录下具有w的权限,则用户所创建的新文件的用户组与此目录的用户组相同;


三 最后一个Sticky Bit

这个Sticky Bit(有时也称黏住位)目前只针对目录有效,对于文件没有效果。对于目录的作用是:

1 当用户对于次目录具有w,x权限,即具有写入的权限时;

2 当用户在该目录下创建文件或目录时,仅自己与root用户才具有删除的权利;

举例来说吧:当甲这个用户于A目录是具有用户组或其他人的身份,并且拥有该目录w的权限,这表示甲用户对于该目录内的文件或目录具有删除, 重命名, 移动的权限。不过如果将目录A加上了SBIT的权限项目时,则甲只能够针对自己创建的目录或文件进行删除,重命名,移动等操作,而无法删除他人的文件。

例如/tmp目录:

/tmp目录是“drwxrwxrwt”,在这样的权限下,任何人都能够创建,修改文件,但仅该文件/目录的拥有者或root能够删除自己的目录或文件。



SUID/SGID/SBIT权限设置

一般文件的权限是:rwx分别对应数字4:2:1

其实这三个也一样:SUID:4   SGID:2 SBIT: 1

在temp下练习一下





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值