Linux文件和目录的粘滞位(sticky bit)带来的困惑

转载:https://www.cnblogs.com/ZhangJinkun/p/4562704.html

也许有很多人不知道文件的S权限和T权限

linux系统内有档案有三种身份 u:拥有者  g:群组   o:其他人

这些身份对于文档又有下面权限 可以用ls -l 文件名 查看权限信息

r:读权限,用户可以读取文档的内容,如用cat,more查看

w:写权限,用户可以编辑文档

x:该目录具有可以被系统执行的权限

 

除了读写执行权限外系统还支持强制位(setuid和setgid)和粘滞位(sticky)

setuid:

设置使文件在执行阶段具有文件所有者的权限,相当于临时拥有文件所有者的身份. 典型的文件是passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码.

sticky:

要删除一个文档,您不一定要有这个文档的写权限,但您一定要有这个文档的上级目录的写权限。也就是说,您即使没有一个文档的写权限,但您有这个文档的上级目录的写权限,您 也能够把这个文档给删除,而假如没有一个目录的写权限,也就不能在这个目录下创建文档。 

怎样才能使一个目录既能够让任何用户写入文档,又不让用户删除这个目录下他人的文档,sticky就是能起到这个作用。stciky一般只用在目录上,用在文档上起不到什么作用。 

在一个目录上设了sticky位后,(如/home,权限为1777)任何的用户都能够在这个目录下创建文档,但只能删除自己创建的文档(root除外),这就对任何用户能写的目录下的用户文档 启到了保护的作用。

设置:

改变为:

 

今天维护系统时发现一个非常诡异的问题:AAA用户和BBB用户同属AAA组,但用AAA用户创建的文件,权限设置为777后,还是不能用BBB用户删除。诡异!

 

几经周转,发现AAA用户创建文件位置的上层目录的权限是drwxrwxrwt,做开发这么多年了,还没见过所谓"t"的权限,于是找了一位公司的linux大师帮忙,大师噼里啪啦的做了一堆试验后,然后在google上搜索"rwt linux",终于发现了问题,发现这种用法的名字是“文件的粘滞位(sticky)位“。

它的作用是:

普通文件的sticky位会被linux内核忽略,

目录的sticky位表示这个目录里的文件只能被owner和root删除,

没错这就是问题本质,也和我的现象相吻合。于是用root用户,对这个文件夹chmod -t 后,用BBB用户就可以删除刚才AAA用户创建的文件了。一切正常了。哇。。。。世界太平了!真是长见识了。所以将这个知识点整理如下:

 

 
  1. 文件的粘滞位(sticky)位是作什么用的?
  2. 普通文件的sticky位会被linux内核忽略,目录的sticky位表示这个目录里的文件只能被owner和root删除
  3.  
  4. 粘着位(Sticky bit)
  5. 如果用户对目录有写权限,则可以删除其中的文件和子目录,即使该用户不是这些文件的所有者,而且也没有读或写许可。粘着位出现执行许可的位置上,用t表示,设置了该位后,其它用户就不可以删除不属于他的文件和目录。但是该目录下的目录不继承该权限,要再设置才可使用。
  6.  
  7. # chmod 1770 xxx
  8.  
  9. 举一个linux下的常见目录来做例子,也就是 /tmp 目录来说一下粘连位的作用。
  10. #ls -dl /tmp
  11. drwxrwxrwt 4 root root .........
  12. 注意other位置的t,这便是粘连位。
  13. 我们都知道,/tmp常被我们用来存放临时文件,是所有用户。但是我们不希望别的用户随随便便的就删除了自己的文件,于是便有了粘连位,它的作用便是让用户只能删除属于自己的文件。
  14.  
  15. 那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 假如本来在该位上有x, 则这些特别标志 (suid, sgid, sticky) 显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T) 。
  16.  
  17.  
  18. 3)粘着位(sticky)
  19.  
  20. eg:
  21.  
  22. chmod 777 abc
  23.  
  24. chmod +t abc
  25.  
  26. 等价于
  27.  
  28. chmod 1777 abc
  29.  
  30. 在以前旧的系统当中,如果一个程序文件一旦设置了粘着位,
  31. 那么当该程序中止的时候他的所有指令段将被保存到系统的交换分区当中,
  32. 再次运行时可以更快的调入系统.
  33.  
  34. 不过现在的操作系统已经不再使用这种功能了.
  35. 但这并不表示这一功能已经完全被废弃.
  36. 当一个目录设置为粘着位时,它将发挥特殊的作用,
  37.  
  38. 即当一个目录被设置为"粘着位"(用chmod a+t),则该目录下的文件只能由
  39. 一、超级管理员删除
  40. 二、该目录的所有者删除
  41. 三、该文件的所有者删除
  42. 也就是说,即便该目录是任何人都可以写,但也只有文件的属主才可以删除文件。

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值