粘滞位是在1974年Unix的第5版中引入的,用来设置可执行文件。当可执行文件设置粘滞位之后,它能够指示操作系统在程序退出后,保留程序的代码段到swap空间。当程序再次执行时,内核只需将程序从swap搬到内存即可,这能够加速程序的执行。所以,频繁使用的程序比如编辑器能够更快的打开。目前,这种应用只是适用于HP-UX, NetBSD和UnixWare,Solaris在2005年放弃了这种应用,linux没有版本支持过这种行为。
当路径被设置粘滞位后,路径下的文件只有文件的owner, 或者root 才能够重命名、删除文件。如果没有粘滞位,任何用户,不管是不是owner, 只要有路径的写/执行权限就可以重命名、删除文件。典型的应用就是/tmp路径,粘滞位可以阻止一般用户删除/重命名其他用户的文件。
例如:在root的根目录下有个临时文件夹/tmp,/tmp常被我们用来存放临时文件,是所有用户。可以看到tmp的权限为777
在/tmp下创建一个文件
返回到普通用户,在该目录下删除root下/tmp里的文件
可以看到直接被删除掉了!可以说只要用户具有写/执行权限就可以直接删除任何文件,不管是不是自己创建的文件。如果你只想让别人看到你的文件而不想让文件被改变,那么这种情况下是非常不安全的!这时就可以设置粘滞位了!
我们进入root下给tmp加上"粘着位"(用chmod a+t),然后返回到普通用户
我们再次回到普通用户下删除刚刚在root/tmp里创建的文件
所有当一个目录被设置为“粘滞位”(用chmod a+t)时,在该目录下的文件只能被
1、超级管理员删除
2、该目录的所有者删除
3、该文件的所有者删除
这就是Linux里的粘滞位作用!