我们知道,Linux中关于文件的权限有三种:
r– 读权限(可以读这个文件)
-w- 写权限(可以对这个文件进行写操作)
–x 执行权限(可执行该文件)
在关于Linux中的权限一文中,经讨论发现,如果用户需要进入一个目录,那么需要这个目录具备可执行的权限。
而若是具备写权限,则可以删除该目录中的任何文件。
如上图所示,在root用户下,
在所有权限均为可读可写可执行的目录test下,创建other权限为只读的文件test.c。
接下来,将用户切换为普通用户。
使用普通用户删除root用户创建的文件时,成功删除。
我们设置test.c的other权限为只读是为了让test.c文件无法被其他用户删除,但由上例明显看到,普通用户成功删除了该文件。
这是因为,其他用户对root用户来说,都是other用户,虽然文件的other权限为只读,但是它所在的目录权限为可读可写可执行,那么该文件就可被删除。
因此,便有了粘滞位。
当目录被设置粘滞位权限后,即便用户对该目录拥有写的权限,也不能删除目录中其他用户的文件,只有该文件的拥有者和root用户可以删除。
设置粘滞位后,正好可以保持动态平衡:
允许各用户在目录中任意写入、删除数据,但是禁止随意删除其他用户的数据。
- 粘滞位的设置对象只能是目录,对于一般的文件无效。
- 当目录被设置粘滞位后,即便用于用于该目录的写入权限,也不能删除该目录中其他用户的文件数据。
- 设置粘滞位后的目录,在ls -l后,other用户权限处的”x”将变为”t”
- 设置:
chmod o+t 目录名:用于添加粘滞位权限
chmod o-t 目录名:用于添加粘滞位权限
对目录test设置了粘滞位。
接下来对test目录中的test.c尝试删除。