struct stat结构体中st_mode参数的含义

来源:互联网 发布:淘宝导航条去掉 编辑:程序博客网 时间:2024/05/14 05:21
stat 结构体重 st_mode 参数的含义
关于st_mode参数的定义:
由于在文件系统编程中经常会用到这个结构,网上很多含糊其辞,下面是我在网上搜索的,整理如下,如果可以的话,应该去源码下搜索一下
st_mode 应该是一个32为的整形变量,现在的linux系统只用了其中的前16位(0-15)
 
第15位:其实这一位只用到了一次:
        0170000 (和12-14位合起来,是获得文件类型的屏蔽信息)
12-14位:三位确定了文件的类型(linux文件的类型总共有7中,三位就够了)
11-10位: 这2位分别是是文件用户id和组id位
9位:这位是sticky位:关于sticky位的理解,我摘抄如下一篇文章的理解:http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246111935b2e27f71415dd3c77e6246b21a1cbbaa6d36601e20b599c39549dea69122328e2d347518844b05d36efc8a046fd565cd1abfa058a1adf14284a9a6c4de240c9705526d8081ca1c5b459324&p=90769a439fdd1df807bd9b790855&user=baidu&fm=sc&query=st%5Fmode+sticky&qid=9168862f068b0ab4&p1=2
这个Sticky Bit当前只针对目录有效,对文件没有效果。SBit对目录的作用是:“在具有SBit的目录下,用户若在该目录下具有w及x权限,则当用户在该目录下建立文件或目录时,只有文件拥有者与root才有权力删除”。换句话说:当甲用户在A目录下拥有group或other的项目,且拥有w权限,这表示甲用户对该目录内任何人建立的目录或文件均可进行“删除/重命名/移动”等操作。不过,如果将A目录加上了Sticky bit的权限,则甲只能够针对自己建立的文件或目录进行删除/重命名/移动等操作。
 
举例来说,/tmp本身的权限是“drwxrwxrwt”,在这样的权限内容下,任何人都可以在 /tmp内新增、修改文件,但仅有该文件/目录的建立者与root能够删除自己的目录或文件。这个特性也很重要。可以这样做个简单测试:
 以root登入系统,并且进入 /tmp中。
 touch test,并且更改test权限成为777。
 以一般用户登入,并进入 /tmp。
 尝试删除test文件。
发现删除不了,说明这一问题。。。。
8-0位:这就是文件的访问权限的集合了,我就比多说了,这个好理解(这些事linux的基本知识了)
为了操作其中的各个位,系统提够了一些函数和宏,并且也有一些用户可以用一些与操作来访问,就不多说了。。。