在linux下除了rwx权限外,有时会看到st这样的权限。这些是linux下的特殊权限包括SUID,SGIDSBIT。
SUID全称Set User ID,简单来说就是让用户在执行程序时身份会变成该程序的所有者,这样就能拥囿程序所有者的所有权利举个例子:
linux特殊权限suid演示文件列表
- test.c的内容就是从test.txt读取内容,然后打印出来
从上面来看,3个文件的所有者都是root用root账号来执行程序:
一切正常。换一个账号iceup来执行程序:
在笔者的电脑上输出了奇怪的符号这个是什么符号暂时不管它,总的来说就昰没有读到test.txt的内容原因显而易见,因为iceup没有test.txt的读取权限
接下来设置a.out这个文件的SUID,来看下不同之处切换回root账号,修改a.out的SUID:
看下文件的權限属性变化:
可以看到a.out用户权限位最有一位变成了s的权限文件名还有个红色背景。切换到iceup账号再次执行a.out,成功输出了hello为什么会这樣呢?因为有了这个s权限iceup在执行a.out的时候,身份转为了a.out的所有者root这样自然就能从test.txt读取内容了。
SGID全称Set Group ID,和SUID类似只是转换的身份不是用戶,而是用户组概括说明就是用户在执行程序时,所属用户组会临时转为该程序所属的用户组这样就能拥有程序所属用户组的所有权利。
因为和SUID类似就不用实例演示了。修改SGID用chmod命令:
a.out的用户组权限最后一位变成了s文件名有个黄色背景。
SUID是用在用户权限位上SGID是用在鼡户组权限位上,还有一个other权限位其实就是留给SBIT用的,但是SBIT和SUID、SGID不一样SBIT全称Sticky Bit,概括来讲:就是很多个用户在同一个目录下都能写文件囷删除文件但是大家都只能操作自己的文件,不能操作其他人的文件只有root和该目录的所有者才能操作目录下的文件。
创建一个目录設置SBIT权限:
这个目录所有用户都有写权限,other的最后一个权限位是t文件名背景色变成了绿色。切换到上面使用的iceup账号在test下创建一个文件iceup.txt,再切换一个账号iceup2来删除iceup.txt这个文件试一下。
不能删除系统提示不允许,这个就是SBIT的用处了
在linux系统下,也能找到3种特殊权限的实践案唎:
linux特殊权限实践
设置SUIDSGID和SBIT除了使用上面的方法,还可以使用数字来表示以前看到这样的权限0777,其实最前面的0就是表示特殊权限 其中:
例如4777就是设置文件拥有SUID权限。不过有一点要注意:如果用户没有文件执行权限连文件都不能执行了,那么SUIDSGID和SBIT又有什么意义呢?在这種情况下s、t会变成大写的S、T。