SUID&SGID&Sticky&setfacl

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SUID&SGID&Sticky&setfacl相关的知识,希望对你有一定的参考价值。

一、特殊权限文件:

ls -l /bin/passwd

特殊权限:SUID,SGID,STICKY

进程的权限取决于发起者:用户

属主--->属组--->其他人 //根据文件的权限位置进行匹配

//这就叫做安全上下文

安全上下文:

1.进程以某用户的身份运行;进程是发起此进程用户的代理,因此以此用户的身份和权限完成所有操作

2.权限匹配模型:

(1)判断进程的属主,是否为被访问的文件属主的权限,否则进入第2步

(2)判断进程的属主,是否属于被访问的文件属组,如果是,则应用属组的权限,否则进入第3步

(3)应用other权限

二、SUID:

    /bin/ls ls文件的属主为root,wolf使用的时候,只能使用其他人的权限发起,但是进程的属主确是wolf的

    默认情况下:用户发起的进程,进程的属主是其发起者;因此,其以发起者的身份在运行

    但是有了SUID之后:

        发起进程的时候,进程运行的身份将成为文件的属主,而不是进程的发起者

    //相当于,没有的时候,我自己干,有了之后有人帮我干,重要文件

SUID:用户运行某程序时,如果此程序拥有SUID权限,那些程序运行为进程时,其属主不是发起者,而是程序文件的属主

实验1:SUID

[[[email protected] test]# ls /bin/cat -l

-rwxr-xr-x. 1 root root 54048 11月 20 2015 /bin/cat

[[email protected] test]# ls /etc/shadow -l

----------. 1 root root 1663 2月   8 20:05 /etc/shadow

cp /bin/cat /tmp

chmod u+s /tmp/cat

/tmp/cat /etc/shadow //使用wolf的身份是可以查看密码的

passwd命令具有SUID,但是只有root用户能够passwd USSERNAME

管理文件的SUID权限

chmod u+|-s FILE ...

展示位置:属主的执行权限位

如果属主原本有执行权限,显示小写s;

否则,显示为大写S

三、SGID

    SGID:多用于修改目录的属主权限

展示位置:属主的执行权限位

如果属主原本有执行权限,显示小写s;

否则,显示为大写S

作用:

当目录属组有写权限时,且有SGID权限时,那么所有属于此目录的属组,且以属组身份在此目录中新建文件或目录时,新文件的属组不是用户的基本组,而是此目录的属组

实验2:

ls /tmp/test -dl

drwxrwxr-x. 2 root mygrp 6 2月   9 11:48 test

[[email protected] tmp]# usermod -a -G mygrp wolf

[[email protected] tmp]# usermod -a -G mygrp tmd

//分别切换wolf和tmd创建文件

-rw-rw-r--. 1 tmd  tmd    0 2月   9 11:51 b.tmd

drwxrwxr-x. 2 root mygrp 19 2月   9 11:51 test

chmod g+s /tmp/test

//分别切换再次创建文件

-rw-rw-r--. 1 tmd  mygrp 0 2月   9 11:54 c.tmd

-rw-rw-r--. 1 wolf mygrp 0 2月   9 11:53 c.wolf

-rw-rw-r--. 1 wolf wolf 0 2月   9 11:53 a.wolf

-rw-rw-r--. 1 tmd tmd 0 2月   9 11:53 a.tmd

//每个用户在目录内创建的文件的属组都是父目录的属组

四、Sticky:

wolf: rm -rf /tmp/test/a.tmd

wolf:rm -rf /tmp/test/c.tmd 

//都可以删除,因为wolf也属于mygrp组,而/tmp/test的属组为mygrp

//只要属组对目录有w权限,组内的其他用户就可以删除和修改目录下所有的文件

展示位置:属主的执行权限位

如果属主原本有执行权限,显示小写s;

否则,显示为大写S

功用:

对于属组可写,或全局可写的目录,组内的所有用户或系统上的所有用户在次目录中都能创建新文件或者删除删除已有文件,

如果为此类目录设置sticky权限,则每个用户能创建新文件,且只能删除自己为属主的文件

//GUID主要用于文件,或者命令,用于改变进程发起的身份

SGID:主要用于目录,改变目录内创建文件的属组 //组内用户以及其他用户创建的文件,都是目录的属组

sticky:主要用于目录,限制用户只能删除属主为自己的用户

chmod [u|g] [+|-] s file ...

chmod o+t file //设置sticky权限

-rwsrwSr-T. 1 hadoop mygrp 27 2月   9 12:35 bb

//s没有x权限,S具有x权限,T具有x

特殊权限的另一方式:八进制权限位

suid sgid sticky

0 0 0 0

0 0 1 1

0 1 0 2

0 1 1 3

1 0 0 4

1 0 1 5

1 1 0 6

1 1 1 7

基于八进制方式赋权时,可于默认的三位八进制数字左侧再加一位八进制数字

例如chomd 1777


五、facl

    facl:file access control lists

文件额外的赋权机制:

在原有的u,g,o之外,另一层让普通用户能控制赋权给另外的用户或组的赋权机制;

setfacl -m u:wolf:rwx  a.txt

getfacl /PATH/TO/SOMEFILE

-rw-rwxr--+ 1 root root  0 2月   9 12:55 cc

//后面多一个+

赋权:

setfacl -m u:USERNAME:MODE file...

setfacl -m g:GROUPNAME:MODE file...

撤销操作:

setfacl -x u:USERNAME FILE...

setfacl -x g;GROUPANME file...

    权限匹配:

属主--------->属组--------->其他人

facl的user facl的group

setfacl -m u:wolf:--- aa //限制wolf没有任何权限

以上是关于SUID&SGID&Sticky&setfacl的主要内容,如果未能解决你的问题,请参考以下文章

linux suid sgid Sticky

RHCSA 06 - suid, sgid, sticky bit(待补充)

024特殊权限suid,sgid,sticky

特殊权限 suid sgid sticky

特殊权限SUID,SGID,Sticky

Linux浅谈SUID,SGID,Sticky粘滞位对目录以及文件的相关作用