粘滞位——文件/目录的删除和移动

粘滞位

粘滞位(Stickybit),又称粘着位,是Unix文件系统权限的一个旗标。
最常见的用法是在目录上设置粘滞位,使得只有目录内文件的所有者或者root用户才可以删除或移动该文件。

那么问题来了,对一个文件或目录的删除和移动,需要什么权限?读?写?可执行?
下面小编对此进行研究。

  1. 首先,用root创建一个权限为777的目录root_dir
    粘滞位——文件/目录的删除和移动
  2. 用普通用户进入该目录,并在其中创建目录dir和文件test.c,将权限均设置为000,即除root外,任何用户都不对dir和test.c具有读写可执行权限
    粘滞位——文件/目录的删除和移动
  3. 为避免因当前用户是文件拥有者而影响验证,我们切换到另一个普通用户hao进行删除
    粘滞位——文件/目录的删除和移动
  4. 删除居然成功了!当前用户不是该文件的拥有者,也不是所属组,且对该文件不具有任何权限!就删除成功了!是不是很可怕0.0

此时粘滞位的作用就体现出来了!
为了使某些重要的文件被保护起来,使得只有该文件的所有者和root才能删除它,需要在文件所属目录上设置粘滞位。
要注意的是:粘滞位只能设置在目录上!只对目录权限位的最后一位有效!即只能“chmod o±t 目录”!

下面小编再来一波操作,观众老爷们看好咯~

  1. 用root创建目录root_dir,并设置粘滞位
    粘滞位——文件/目录的删除和移动
  2. 开启该目录对other的w权限,使得普通用户能够在该目录中创建文件;
  3. 普通用户jing进入目录,创建权限为777的目录dir和文件test.c
    粘滞位——文件/目录的删除和移动
  4. 切换到另一普通用户hao,尝试删除(为了清晰的看到错误信息,增加-f选项,不进行删除确认)
    粘滞位——文件/目录的删除和移动
  5. 如上,即使权限为777也删除失败,再更换回文件所有者jing,尝试删除目录dir
    粘滞位——文件/目录的删除和移动
  6. 删除成功!下面再测试关于移动文件的权限,切换至对当前用户来说是other的用户hao,创建一个目录testDir,并将test.c移动进去
    粘滞位——文件/目录的删除和移动
  7. 移动失败!切换回test.c文件的拥有者jing尝试移动(移动路径仍未用户hao创建的目录testDir)
    粘滞位——文件/目录的删除和移动
  8. 仍然移动失败!猜测原因是当前用户对testDir目录不具有写权限,给予权限,再次尝试!
    粘滞位——文件/目录的删除和移动
  9. 移动成功!

此即粘滞位。