Linux特殊权限 SUID、SGID、Sticky

Linux特殊权限 SUID、SGID、Sticky,第1张

文件的特殊权限有三种:1、suid2、sgid3、sticky,其中,suid和sgid用于累加提升权限,简单来说就是如果原来的用户可以访问,反而切换到的用户或者组不能访问,这时候照样是可以访问的,下面介绍下这三种权限。

SUID:

1、需要注意的是,只对二进制可执行程序有效,不能为普通文件

2、发起者对程序文件必须拥有执行权限

3、启动为进程之后,其进程的宿主为原程序文件的宿主

4、SUID设置在目录上毫无意义。

SGID:

可以应用在二进制文件和作用在文件夹下,当作用在二进制文件下时,作用和SUID相似,只不过SUID是把发起者临时变为文件的所有者,而SGID是把进程的发起者变成源程序文件的属组,默认情况下,用户创建文件时,其属组为此用户所属的主组,当SGID作用在目录下时,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组,通常用于创建一个协作目录。

Sticky:

默认情况下用户可以删除具有写权限的目录中的任何文件,无论该文件的权限或拥有权,如果在目录设置Sticky位,只有文件的所有者或root**可以删除该文件,Sticky位是作用在文件夹的,设置在文件上毫无意义。

• 在Linux系统中文件除了有读写执行权限外,ext2文件系统还支持强制位 (setuid 、setgid)与冒险位(sticky)的特别权限

• 针对文件创建者可以添加强制位(setuid),文件属组也可以添加强制位 (setgid),针对其它用户又可以添加冒险位(sticky)

• 强制位与冒险位添加在执行权限(x)的位置上。如果该位置上原已有执行权限,则强制位与冒险位以小写字母(s或t)的方式表示,否则,以大写字母(S或T)表示

• 例:如果文件的权限为”rwx r-- r-x”,那么如果设置了强制位与冒险位则新的权限为“rwsr-Sr-t”

• 对创建者设置强制位setuid,一般针对的是一个 系统中的指令 可执行文件

• 在默认情况下,用户执行一个指令,会以该用户的身份来运行

• 当对一个指令对应的可执行文件设置了(setuid),那么任何一个用户在执行这个文件的时候,都会以指令对应的可执行文件的创建者身份来执行这个文件

• 语法:chmod u±s <文件名>

• 例:chmod u+s /bin/ls

可以查看到/bin/ls的所有者和所有组都是root。假如现在有一个文件夹是属于root用户root组,权限为-rwx--x--x,也就是除了root用户,所属组和其他用户对这个文件夹除了cd没有任何权限。这时随便切换一个other用户,发现在这个文件夹里敲ls会被拒绝。用ll /bin/ls 查看发现权限是-rwxr-xr-x,即除了root用户其他所有用户有读和执行的权限(即使将该文件的权限改成777,other用户仍然无法在该文件夹里敲ls)。用chmod u+s /bin/ls命令后,再用ll /bin/ls 查看发现权限变成了-rwsr-xr-x,说明我使/bin/ls这个命令在被执行的时候是按照这个可执行文件的创建者,即root来执行的,这时敲ls就不会被拒绝了。

bin文件夹和sbin文件夹里都是系统文件,所以即使是root用户把自己的权限(文件属主和属组)给其他普通用户,他也不能进行u±s *** 作。但是其他普通文件夹就可以

root用户赋予普通用户,普通用户权限随root

如果之后普通用户权限赋予root,root用户也会随这个普通用户的权限

• 对组设置强制位setgid,一般针对的是一个目录

• 在默认情况下,用户在某目录中创建的文件或子目录的属组是该用户的主属组

• 如果对一个目录设置了属组的强制位,则任何用户在此目录中创建的文件或子目录都会继承此目录的属组(前提:用户有权限在目录中创建文件或子目录)

• 语法:chmod g±s <目录>

• 例:chmod g+s /dir

即使是root用户在chmod g+s <目录>下它的所属组也会变成该文件所属的组

比如现在有一个文件夹的所属组为user1组,通过chmod g+s <文件夹>进行设置强制位以后,所有在这个文件夹里新创建的文件或文件夹都会为user1组, 旧的文件不会被更改

同样,在chmod g-s <文件夹>以后再新建的文件夹没有s,但是之前继承的有s的不会被更改。注意,比如有文件夹E,在E文件夹上设置g+s后,在E文件家里新建了文件夹F,那么F会继承E的g+s。之后在E文件夹上设置g-s后,还要在F文件夹上设置g-s才能把这个s去掉,否则在F文件夹里新建的文件夹还是会继承

实验

• 对其它用户设置冒险位sticky ,一般针对的是一个目录 ,chmod o+t <目录>

• 在默认情况下,如果一个目录对用户有r、w和x权限,则这个用户可以在此目录中建立与删除任何文件

• 一旦在目录上设置了冒险位,则表示在此目录中,只有文件的拥有者、目录的拥有者与root用户才可以在目录中删除此文件

实验:

• 用户可以用chmod指令来为文件设置强制位与冒险位

• setuid:chmod u+s 文件名

• setgid:chmod g+s 目录名

• sticky:chmod o+t 目录名

• 强制位与冒险位也可以通过一个数字加和,放在读写执行的三位数字前来指定

• 4(setuid)

• 2(setgid)

• 1(sticky)

• 例:要为某文件设置为”rws r-x r-x”的权限则可以使用下面的指令:chmod 4755 <文件名>

stat <文件名或者目录名>即可查看四位权限

四位权限位的第一位表示特殊权限位,即u+s=4,g+s=2,o+t=1

例如一个文件夹权限为:1777,表示设置了o+t,并且所有用户都有读写执行权限

❀一个文件能不能删要看这个文件所在的文件夹有没有w权限,和它所在的文件夹的上一层文件夹有没有w权限没有关系。除非用g+s让文件夹继承父文件夹权限

u+s 在文件夹上设置一点儿意义没有

g+s 在文件上设置一点儿意义没有

o+t 在文件上设置一点儿意义没有


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7090222.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-01
下一篇2023-04-01

发表评论

登录后才能评论

评论列表(0条)

    保存