linux SetUID(SUID)、SetGID(SGID)、Sticky BIT

SUID 只对可执行的二进制程序文件(命令)有效;
SGID 对可执行的二进制程序文件(命令)和目录都有效;
SBIT 只对目录有效。
没有 x 权限的可执行的二进制程序文件(命令)或目录,即便赋予特殊权限,也无法发挥它们的功能,没有任何意义。

SetUID功能理解:
必须是可执行的二进制程序文件,通俗来讲就是命令;
命令执行者对该可执行的二进制程序文件(命令)具有执行权限(x);
命令执行者在执行命令期间,身份变成所属者身份;
SetUID只在程序执行过程中有效,程序执行结束即失效。
[root@localhost ~]# chmod 7666 ftest
[root@localhost ~]# ll ftest
-rwSrwSrwT. 1 root root Apr 23:54 ftest

可以看到,相应的权限位会被标记为 S(大写)和 T(大写),指的就是设置的 SUID、SGID 和 SBIT 权限没有意义。

[root@localhost ~]# ll /usr/bin/vim
-rwxr-xr-x. 1 root root 2324712 724 2015 /usr/bin/vim
[root@localhost ~]# chmod u+s /usr/bin/vim
[root@localhost ~]# ll /usr/bin/vim
-rwsr-xr-x. 1 root root 2324712 724 2015 /usr/bin/vim
[root@localhost ~]# chmod u-s /usr/bin/vim
[root@localhost ~]# ll /usr/bin/vim
-rwxr-xr-x. 1 root root 2324712 724 2015 /usr/bin/vim

SetUID (SUID )对可执行的二进制程序文件(命令)的作用
SUID 特殊权限仅适用于可执行的二进制程序文件(命令),所具有的功能是,只要用户对设有 SUID 的可执行的二进制程序文件(命令)有执行权限,那
么当用户执行时,会以可执行的二进制程序文件(命令)所有者的身份去执行此文件,一旦文件执行结束,身份的切换也随之消失。

SetGID(SGID)对可执行的二进制程序文件(命令)的作用

针对文件
必须是可执行的二进制程序,通俗来讲就是命令;
命令执行者对该程序具有执行权限(x);
命令执行者在执行命令期间,组身份变成所属组身份;
SetUID只在程序执行过程中有效,程序执行结束即失效。

同 SUID 类似,对于可执行的二进制程序文件(命令)来说,SGID 具有如下几个特点:
SGID 只针对可执行的二进制程序文件(命令)有效,换句话说,只有可执行的二进制程序文件(命令)才可以被赋予 SGID 权限,普通文件赋予 SGID 没有意义。
用户需要对此可执行的二进制程序文件(命令)有 x 权限;
用户在执行具有 SGID 权限的可执行的二进制程序文件(命令)时,用户的群组身份会变为可执行的二进制程序文件(命令)所属群组;
SGID 权限赋予用户改变组身份的效果,只在可执行的二进制程序文件(命令)运行过程中有效;
其实,SGID 和 SUID 的不同之处就在于,SUID 赋予用户的是可执行的二进制程序文件(命令)所有者的权限,而 SGID 赋予用户的是可执行的二进制程序文件(命令)所属组的权限,就这么简单。

SetGID(SGID)对目录的作用

针对目录
普通用户对此目录必须有 r 和 x 权限,才能进入此目录;
普通用户有效组化身为此目录所属组;
普通用户对此目录有 w 权限,新建文件默认属组就是就是这个目录的属组

事实上,SGID 也能作用于目录,且这种用法很常见。

当一个目录被赋予 SGID 权限后,进入此目录的普通用户,其有效群组会变为该目录的所属组,会就使得用户在创建文件(或目录)时,该文件(或目录)的所属组将不再是用户的所属组,而使用的是目录的所属组。

也就是说,只有当普通用户对具有 SGID 权限的目录有 rwx 权限时,SGID 的功能才能完全发挥。

Sticky BIT,简称 SBIT 特殊权限,可意为粘着位、粘滞位、防删除位等。

中文翻译:粘着位 
有效范围:只针对目录有效
普通用户对此目录有 w 和 x 权限,即普通用户拥有写入权限
一旦设置粘着位,用户只能删除自己的文件,不能删除其他用户的文件
一旦没有设置粘着位,用户能删除自己的文件,其他用户也能删除。

SBIT 权限仅对目录有效,一旦目录设定了 SBIT 权限,则用户在此目录下创建的文件或目录,就只有自己和 root 才有权利修改或删除该文件。

设置特殊权限
设置suid: chmod u+s test_folder

设置sgid: chmod g+s test_folder

设置sticky: chmod o+t test_folder

与普通权限一样,特殊权限也可以使用数字的方式表示

SUID = 4
SGID = 2
STICKY = 1

所以我们可以通过以下命令设置:

chmod 4755 test_folder
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值