在前面已经讲过目录的rwx权限:
- 可读权限(r): 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
- 有可写权限(w):如果目录没有可写权限,则无法在目录中创建文件, 也无法在目录中删除文件.
- 可执行权限(x): 如果目录没有可执行权限, 则无法cd到目录中.
再说为什么会有粘滞位之前,我们先说一个故事:
某天,小明想和小王在他们共有的系统中进行一些交流,共享一些文件,于是小明在根目录地下创建了一个目录名叫_share,这个文件对所有人写权限开放,并且两人在_share目录里创建了共享文件。起初,两人交流甚欢,然后在同一个系统中的小李看不下去了,就是不想让他们共享,然后一气之下把他们共享的文件删除了。
问题:为什么小明和小王共享文件,小李可以删除?
他们三人都是others,因为_share目录对所有人都开放写权限,所以无论里面文件对others是否有写权限,他们都可以删除里面的文件。如果为了防止另外的人对文件动手脚,把w权限关闭,那么小王就没办法对该文件进行增删查改。
为了解决这个问题,让小明和小王能够在共享的同时不被其他人删除文件,粘滞位就诞生了。
我们先以HYL用户创建一个共享目录_share
HYL用户在这个目录里面创建了一个叫text.c的文件
然后用另一个用户进入这个目录,对这个文件进行删除
我们登录另一个账号后,发现可以直接删除
接下来我们用HYl用户给目录设置粘滞位:chmod +t _share
我们会发现在others的x权限变成了t,我们再用HYL用户再_share目录里创建一个log.txt的文件,再换用户进行删除。
我们在左边创建log.txt文件后,在右边用户进行删除,我们发现,已经没有了权限!
注意:
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
所有权限对root都没有用,所以他可以删除。
二、该目录的所有者删除
我们在这里用目录所有者HYL进行删除:
删除成功
三、该文件的所有者删除
这里我们文件的所有者还是HYL,所以仍可以删除