在使用Linux的时候,未来可能会有一些共享目录,被所有的普通用户共享,用来保存普通用户所产生的临时数据。
文件被所有人共享的时候,受权限约束,但是拦不住别人删我的文件。
为什么?
我们知道,当我们拥有对目录进行写文件的权限(w)时,我们就可以删除目录中的文件,而不用在乎被删除的那个文件别人是否拥有写权限。
这样子是非常不合理的。
所以Linux引入了粘滞位。
以下是目录未使用粘滞位,导致目录中的文件可以随意被其他人删除的例子。
[root@localhost ~]# chmod 0777 /home/ #把家目录这个共享目录权限都放开
[root@localhost ~]# ls /home/ -ld
drwxrwxrwx. 3 root root 4096 9月 19 15:58 /home/ #可以看到权限都放开了
[root@localhost ~]# touch /home/root.c #在root下创建一个文件
[root@localhost ~]# ls -l /home/ #列出家目录下的文件列表
总用量 4
-rw-r--r--. 1 root root 0 9月 19 15:58 abc.c
drwxr-xr-x. 27 litao litao 4096 9月 19 15:53 litao
-rw-r--r--. 1 root root 0 9月 19 15:59 root.c #注意这个文件是的其他人(other)是没有w权限的
[root@localhost ~]# su - litao #切换到普通用户
[litao@localhost ~]$ rm /home/root.c #litao可以删除root创建的文件
rm:是否删除有写保护的普通空文件 "/home/root.c"?y #可以看到,一个对于其他人(other)来说没有w权限的文件,居然被删掉了,这是不合理的。
[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作
可以看到,当我们把家目录设置加上粘滞位后,普通用户之间就不能随意删除别人的文件了。
当我们把目录添加粘滞位后,该目录的最后面的权限会变成t
drwxrwxrwt. 5 root root 4096 Dec 31 22:35 /home/
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
粘滞位的作用就是 防止共享文件时,普通用户之间能删除别人的文件。