天天看点

Linux下粘滞位

之前已经分析过Linux下的文件权限:http://blog.csdn.net/chenkaixin_1024/article/details/64924059,我们已经知道对于一个文件,存在文件拥有者,文件所属组以及其他用户,而且这三者对于文件而言,都有可能有读,写,可执行三种权限,而且在Linux下,这些权限也只是常见的基本权限,除此之外,还存在特殊权限:

这里就先介绍其中一个特殊权限:

先看一个例子:

我们这里进入根目录,看看根目录当中文件的权限:

Linux下粘滞位

这里我们发现有一个很特别的东西:那就是对于tmp这个文件,它的其他用户的权限上出现了一个字符“t”,之前我们讨论过,“r”表示读权限,“w”表示写权限,“x”表示可执行权限,“-”表示没有对应权限,而这里的“t”又表示什么呢?

在了解“t”所代表的权限之前,先看一个问题:

Linux下粘滞位

这里我们切换到root用户,并创建一个名为test的目录,并在其中创建一个文件file,然后切回普通用户:

Linux下粘滞位

我们进入test目录,发现我们并不能对这个由root用户所创建的file文件进行修改,也不能执行,因为我们作为普通用户并没有这个权限,这里我们就要做一件“不道德”的事:

Linux下粘滞位

既然我们修改不了这个文件,也执行不了这个文件,那我索性就把这个文件给删了,省的放在这碍眼。结果竟然成功的把这个文件给删除了,要知道这是root用户辛辛苦苦创建出来的文件啊,竟然被我们这个其他用户给直接删了,这如果是个你花了三天三夜写的一份代码,被别人一声不吭的给直接删了,那你会怎么样?

这里为什么会出现这个问题呢?关键在于root用户在创建这个目录的时候,给了其他用户写权限,本意是想让其他用户也能在我们这个目录中创建文件,结果没想到却被别人把自己辛辛苦苦写的东西给删了,直接泪崩。。。

那么为了解决这个坑爹的问题,我们就得使用前面所提到的特殊权限,也就是之前出现的字符“t”所代表的权限:

这个“t”所代表的权限就是粘滞位(粘着位),它只能应用在目录文件上,将使用户在目录中执行删除时,只能删除自己拥有的对象。

Linux下粘滞位

如上图,在加上粘滞位这个特殊权限后,我们这个“不怀好意”的用户就删不掉别人的东西了。

注意:

很多人会疑惑,这里的粘滞位权限是写在原本可执行权限的位置的,那又怎么表示可执行权限呢?这里虽说粘滞位权限标识符将可执行权限的标识符覆盖了,但是它们是独立的,Linux下在具有粘滞位权限的时候,以“T”表示这个地方具有粘滞位权限,但没有可执行权限;以“t”表示这里同时具有可执行权限和粘滞位权限。

这里粘滞位的设置,是为了限制其他用户的,是为了达到能够让别人在自己的目录中创建文件,但不能让别人删掉自己创建的文件,只能删掉它自己的东西。

而且,需要提的一点是粘滞位的设置只是对于目录文件,对于其他类型文件无效,当然也没有什么意义。

继续阅读