当前位置:首页 > 开发 > 操作系统 > 正文

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

发表于: 2011-02-24   作者:dongwei_6688   来源:转载   浏览次数:
摘要:      今天维护系统时发现一个非常诡异的问题:AAA用户和BBB用户同属AAA组,但用AAA用户创建的文件,权限设置为777后,还是不能用BBB用户删除。诡异!        几经周转,发现AAA用户创建文件位置的上层目录的权限是drwxrwxrwt,做开发这么多年了,还没见过所谓"t&quo

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

 

     几经周转,发现AAA用户创建文件位置的上层目录的权限是drwxrwxrwt,做开发这么多年了,还没见过所谓"t"的权限,于是找了一位公司的linux大师帮忙,大师噼里啪啦的做了一堆试验后,然后在google上搜索"rwt linux",终于发现了问题,发现这种用法的名字是“文件的粘滞位(sticky)位“。它的作用是:普通文件的sticky位会被linux内核忽略,但
目录的sticky位表示这个目录里的文件只能被owner和root删除,没错这就是问题本质,也和我的现象相吻合。于是用root用户,对这个文件夹chmod -t 后,用BBB用户就可以删除刚才AAA用户创建的文件了。一切正常了。哇。。。。世界太平了!真是长见识了。所以将这个知识点整理如下:

 

文件的粘滞位(sticky)位是作什么用的?
普通文件的sticky位会被linux内核忽略,
目录的sticky位表示这个目录里的文件只能被owner和root删除

粘着位(Sticky bit)
如果用户对目录有写权限,则可以删除其中的文件和子目录,即使该用户不是这些文件的所有者,而且也没有读或写许可。粘着位出现执行许可的位置上,用t表示,设置了该位后,其它用户就不可以删除不属于他的文件和目录。但是该目录下的目录不继承该权限,要再设置才可使用。
 

# chmod 1770 xxx

举一个linux下的常见目录来做例子,也就是 /tmp 目录来说一下粘连位的作用。
#ls -dl /tmp
drwxrwxrwt 4 root    root  .........
注意other位置的t,这便是粘连位。
我们都知道,/tmp常被我们用来存放临时文件,是所有用户。但是我们不希望别的用户随随便便的就删除了自己的文件,于是便有了粘连位,它的作用便是让用户只能删除属于自己的文件。

那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 假如本来在该位上有x, 则这些特别标志 (suid, sgid, sticky) 显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T) 。


3)粘着位(sticky)

eg:

chmod 777 abc

chmod +t abc

等价于

chmod 1777 abc

在以前旧的系统当中,如果一个程序文件一旦设置了粘着位,
那么当该程序中止的时候他的所有指令段将被保存到系统的交换分区当中,
再次运行时可以更快的调入系统.

不过现在的操作系统已经不再使用这种功能了.
但这并不表示这一功能已经完全被废弃.
当一个目录设置为粘着位时,它将发挥特殊的作用,

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

 

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

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
获得帮助 1.-h 或者--help useradd --help 带中括号的表示可写可不写,不带[]为必须要写 2.man 8表示
跟阿铭学Linux邀请函 (http://www.aminglinux.com),二期已开班,感兴趣的联系QQ:306798658,现在报
简要概述Linux文件各个目录的作用,花了很长时间做了一个流程图,方面大家看看。 推荐看看《Linux系
一、Linux的文件权限 Linux最优秀的地方之一在于它的多用户、多任务环境。而为了让各个用户具有较保
在 Linux 里面,任何一个档案都具有『User, Group 及 Others』三个权限! 第一栏代表这个档案的属性
在 Linux 里面,任何一个档案都具有『User, Group 及 Others』三个权限! 第一栏代表这个档案的属性
在 Linux 里面,任何一个档案都具有『User, Group 及 Others』三个权限! 第一栏代表这个档案的属性
Linux下的文件系统为树形结构,入口为/ 树形结构下的文件目录: 无论哪个版本的Linux系统,都有这些
1. FHS即Filesystem Hierarchy Standard。其目的是希望让用户可以了解到已安装软件通常放置于哪个目
今天中午与同事讨论位域的问题,越讨论越迷糊,最终还是求救Google,找到一些文章,把比较好两篇的转
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号