现在的位置: 首页 > 综合 > 正文

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

2014年09月05日 ⁄ 综合 ⁄ 共 1195字 ⁄ 字号 评论关闭
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位
这个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的基本知识了)
为了操作其中的各个位,系统提够了一些函数和宏,并且也有一些用户可以用一些与操作来访问,就不多说了。。。

抱歉!评论已关闭.