Linux文件和目录粘滞位权限的使用与设置

文件的粘滞位(sticky)位是作什么用的?


  粘滞位(Stickybit),又称粘着位,是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位,也只能针对⽬设置,对于⽂件⽆效。则设置了粘滞位后,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。

我们进行下面的操作:

#以root用户的身份创建/sbit目录,在/sbit目录中创建文件feil,并查看其默认权限。

Linux文件和目录粘滞位权限的使用与设置_第1张图片


#给目录sbit赋予777权限

Linux文件和目录粘滞位权限的使用与设置_第2张图片


#以普通用户long的身份登录系统,可以删除/feil。

rm:是否删除有写保护的普通空文件 "/feil"?y

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


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

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

      但是该目录下的目录不继承该粘滞位权限,要再设置才可使用。也只能针对目录设置,对于文件无效。则设置了粘滞位后,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。


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

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

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



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

例如,为/sbit目录设置粘滞位权限。

Linux文件和目录粘滞位权限的使用与设置_第3张图片


 此时普通用户long便无法删除/feil文件了。

 

[long@www sbit]$ rm /feil

rm:是否删除有写保护的普通空文件 "/test/file1"?y

rm: 无法删除"/test/file1": 不允许的操作


 即当一个目录被设置为"粘着位"(用chmod a+t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
也就是说,即便该目录是任何人都可以写,但也只有文件的属主才可以删除文件。


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


你可能感兴趣的:(Linux)