粘滞位权限        


        通常情况下用户只要对某个目录具备 w 写入权限,便可以删除该目录中的任何文件,而不论这个文件的权限是什么。

例如我们进行如下操作:

创建Test目录(以root用户)。j_0016.gif

wKiom1dqU1-BFGk9AAAnRrwhT3w372.jpg

    赋予Test目录777权限。j_0016.gif

wKioL1dqU2Ljp_RUAAAlX3K7jBU238.jpg

在Test目录中创建文件file1,并查看其默认权限。j_0016.gifwKioL1dqU9bCi62hAAARve1jLOY779.jpg

以普通用户的身份登录系统,可以删除/Test/file1。j_0016.gifwKiom1dqVuOT80ohAAAZ64thzHI022.jpg

    通过上面的操作可以发现,虽然普通用户对文件Test/file1只具备“r--”权限,但因为从Test目录获得了“rwx”权限,因而仍然可以将Test/file1删除。

        在Linux系统中比较典型的例子就是“/tmp”、“/var/tmp”目录。这两个目录作为Linux系统的临时文件夹,权限为“rwxrwxrwx”,即允许任意用户、任意程序在该目录中进行创建、删除、移动文件或子目录等操作。然而试想一下,若任意一个普通用户都能够删除系统服务运行中使用的临时文件,将造成什么结果?j_0025.gif


        粘滞位权限便是针对此种情况设置,当目录被设置了粘滞位权限以后,即便用户对该目录有写入权限,也不能删除该目录中其他用户的文件数据,而是只有该文件的所有者和root用户才有权将其删除。设置了粘滞位之后,正好可以保持一种动态的平衡:允许各用户在目录中任意写入、删除数据,但是禁止随意删除其他用户的数据。

        需要注意的是,粘滞位权限只能针对目录设置,对于文件无效。

         设置了粘滞位权限的目录,使用 ls 命令查看其属性时,其他用户权限处的“x”将变为“t”。


例如,查看/tmp目录本身的权限,确认存在“t”标记。j_0063.gif

wKiom1dqWEDyaggiAAASJCDVfM8250.jpg


粘滞位权限都是针对其他用户(other)设置,使用chmod命令设置目录权限时,“o+t”、“o-t”权限模式可分别用于添加、移除粘滞位权限。


例如,为Test目录设置粘滞位权限。j_0063.gif

wKiom1dqWdyR0F4fAAAl_aVdf48101.jpg

此时普通用户便无法删除Test/file1文件了。j_0063.gif

wKioL1dqWmbjOdZwAAAWphfrzYE799.jpg




粘滞位权限在生产环境中也被广泛应用,当需要为用户提供一个开放目录而又不希望造成管理混乱时,通过为目录设置粘滞位权限便可以解决问题。

j_0071.gifj_0071.gifj_0071.gifj_0071.gifj_0071.gifj_0071.gifj_0071.gifj_0071.gifj_0071.gif