Linux中的特殊权限粘滞位(sticky bit)详解

Linux下的文件权限linux

在linux下每个文件和目录都有本身的访问权限,访问权限肯定了用户可否访问文件或者目录和怎样进行访问。最为咱们熟知的一个文件或目录可能拥有三种权限,分别是读、写、和执行操做,在这里不作详细说明。咱们建立一个文件后系统会默认地赋予全部者读和写权限。固然咱们也能够本身修改它,添加本身须要的权限。ui

特殊权限it

可是这三种权限就足够了吗?咱们如今来讲说在linux下的另外一个特殊权限。首先咱们来看看在根目录下的一个目录tmp,能够看到tmp目录的other权限是'rwt',那么这里的t又是什么权限呢,有什么意义。test

在理解这个权限以前咱们先来看看tmp这个目录是存放什么东西的,linux下tmp目录是存放一些临时文件的,那么上图能够看到,该目录的全部者和组用户的权限都是rwx,对于other的权限是rwt。权限

咱们知道若是一个目录的other权限设置有写和执行权限的话,那么别的用户也是能够在该目录下进行建立文件和删除文件等操做,咱们来试一试:im

如今是root用户,在它的根目录下建立了一个cur目录,而且赋予了777权限。数据

以后再给cur目录下新建了test1和test2两个文件,而此时咱们能够看到这两个文件的other权限只有一个读权限。img

如今咱们切换用户到dh用户下,试着删除刚刚新建的文件,发现是彻底能够删除的。那么这就存在了一个问题,像/tmp目录的权限是应该设置成"rwxrwxrwx"的,由于它要容许任何用户都能在该目录下建立、删除、移动文件等操做。但咱们刚刚也看到了,个人dh用户是能够删除root用户在cur目录下建立的文件夹,那么对于tmp目录,任意用户均可以删除系统服务运行中的临时文件(别的用户的),那么这确定是咱们不想要的。移动

因此回到最初,咱们看到tmp目录的权限是"rwxrwxrwt",这里的t就起了至关重要的做用。删除文件

粘滞位(粘着位)

上面所说的t权限就是咱们在这里要讲的粘滞位(sticky bit),咱们给刚刚的cur目录采用chmod o+t的方式给other用户设置粘滞位。

而后咱们继续切换到dh用户,看看咱们可否继续以前的删除操做:

能够看到此时咱们是没有权限删除root用户建立的文件了,这也就是粘滞位的做用。

粘滞位权限即是针对此种状况设置,当目录被设置了粘滞位权限之后,即使用户对该目录有写入权限,也不能删除该目录中其余用户的文件数据,就是只有该文件的全部者和root用户才有权将其删除。设置了粘滞位以后,正好能够保持这种动态的平衡:容许各用户在目录中任意写入、删除数据,可是禁止随意删除其余用户的数据。

几点说明

对于特殊权限的添加是添加在原有的执行权限上的,因此特殊权限添加的要求须要文件或者目录自己具备可执行权限。

上图中,我去掉了cur的other的执行权限,能够看到原本't'的位置变成了'T',此时dh用户在cur目录中是不具备权限来进行一系列操做的。

那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 假如原本在该位上有x, 则这些特别标志 (suid, sgid, sticky) 显示为小写字母 (s, s, t).不然, 显示为大写字母 (S, S, T) 。  

注意事项

》粘滞位权限是针对目录的,对文件无效

上述的这些操做是在root用户下建立了一个test.c文件,而后添加了t权限,然而在dh用户下仍是能够直接进行删除的。因此粘滞位是针对有执行权限的目录的,对于文件添加粘滞位并无什么做用。

相关文章
相关标签/搜索