Linux中文档与目录的特殊权限

Linux中,文件或目录除了rwx及隐藏权限外,还有一些特殊的权限,这些权限包括 SUID/SGID/SBIT,系统中就直接存在这样的例子:安全

clip_image002

上例中,/tmp目录自己的权限中能够看到,不只仅是rwx权限,而是有了t权限;而/usr/bin/passwd文件,也不只仅有rwx权限,而是有了s权限。s、t就表明了不一样的特殊权限。下面一一介绍这三种特殊权限。app

SUIDide

SUID即Set UID的简写。当s标志出如今文件的owner权限组合中的x位时,好比上图中passwd文件的权限(-rwsr-xr-x),此时就被称为SUID的特殊权限。那该权限是什么意思呢?加密

举例来讲,Linux为了提升本地用户帐号信息的安全性,特别指定了/etc/shadow以加密密码的方式来存储用户的帐户信息,同时这个文件的默认权限是-r--------,限定只有root用户才能“强制”储存,其余用户没有任何权限。但是你会发现,普通用户也是能够修改咱们本身的用户密码的,那普通用户哪来的权限?这就是SUID特殊权限的做用。3d

SUID表示当请求执行包含SUID特殊权限的程序时,可以暂时拥有该程序全部者(对程序)的存取权限。假设普通用户A经过passwd命令更新本身的密码,而/usr/bin/passwd的全部者是root (root,root),也就是说,当A请求执行passwd命令时,其实是暂时得到root(对/usr/bin/passwd)的执行权限,并进一步更新/etc/shadow的内容。blog

但若是该用户A使用cat去读取/etc/shadow时,就会被拒绝了,由于cat没有SUID的特殊权限,因此,A执行cat /etc/shadow时,是不能执行的。ip

须要注意的是,Linux规定SUID仅对系统中的二进制可执行文件设置有效,并且不可对Shell Script施加设置,毕竟Shell 脚本只是对二进制可执行文件的调度组合,最终也是要听从binary file的权限设置。开发

SGID文档

相对于SUID,当全部者所在的用户组(group)的权限组合中可执行位(x)被s所取代时(例如---rws---),便构成SGID(即Set GID)的权限设置。SGID能够针对二进制文件或目录进行设置:get

a.二进制可执行文件:则当请求执行该文件(程序)时,请求执行者所在的用户组 (即effective group)将暂时得到该程序(binary file)所属的用户组ID(group ID)的存取权限。

b.目录:假设目录A,此时在A目录下建立的文件或子目录所属的用户组ID,将自动被赋予A目录的组ID

SGID主要用于多人组成的项目开发上,通常比较少用到。

SBIT

咱们认为,当文件系统“其余(others)”的权限组合中可执行位(x)被t所取代时(例如------rwt),便构成SBIT(Sticky Bit)的权限设置。SBIT顾名思义能够起到限制访问的做用,是容易理解而好用的设置,它只对目录有效。

当对一个目录A施加了SBIT设定之后,而且使用者对A目录有wx权限时,则使用者在A目录下所建立的我的文档(含目录)只有使用者自己或root能够执行删除、改名、移动等操做(是否可读依实际权限r而定),而不可修改其余用户的文件或目录。

最多见的就是在/tmp目录下了,各用户均可以在此目录下建立文件或子目录,但只能修改本身的文件或目录,而不能更改其它用户的。如:

clip_image004

上例中,root用户建立了新文件testroot,并赋予全部权限。用户zhang对/tmp也有r和w的权限,但zhang却没有权限删除root建立的testroot文件,就是由于/tmp的t权限的效果。

注意:SBIT通常仅针对目录施加有意义。

设置权限

特殊权限的设置也是使用数字的方式。如下是SUID/SGID/SBIT约定对应的八进制数值:

SUID为4

SGID为2

SBIT为1

设置时使用chmod命令,同时把表示特殊权限的数字放在其余三位数字权限的前面,如:

clip_image006

上图设置了SUID。

clip_image007

上图设置了SGID。

clip_image008

上图设置了SBIT。

须要注意的是,SUID只针对二进制文件设置,而SBIT只针对目录设置有意义,上例中并无特殊强调。

有一种特殊状况,好比:

clip_image009

上图中,设置apple的普通权限为666,即全部人都没有x权限,此时,却设置了全部的特殊权限,那么,这样的特殊权限为“空权限”,表现样式为S和T都为大写。

相关文章
相关标签/搜索