曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5587|回复: 0
打印 上一主题 下一主题

初始化权限

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2009-2-7 12:24:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当使用 openO_CREAT 标志创建一个文件时,第三个参数 mode 由标志的位运算 OR 组成,这些标志定义在 sys/stat.h 中。她们分别是:

S_IRUSER : 读权限,owner
S_IWUSER : 写权限,owner
S_IXUSER : 执行权限,owner
S_IRGRP : 读权限,group
S_IWGRP : 写权限,group
S_IXGRP :  执行权限,group
S_IROTH :  读权限,others
S_IWOTH : 写权限,others
S_IXOTH : 执行权限,others

open( "myfile", O_CREAT, S_IRUSR|S_IXOTH )

这里有两个因素可能影响到文件的权限。第一,只有在文件创建时才可以指定权限;第二,用户的掩码(mask)也会影响到创建的文件的权限。在 open调用给到的模式的值与用户的掩码(mask)的反码在运行时进行与(AND)操作。例如,如用户的掩码被设置为 001 ,并且 S_IXOTH模式标志被指定,则文件被创建时,不会有 “other”执行权限。因为用户掩码指定了“other”执行权限不会被提供。


umask
umask 是一个系统变量,是一个权限掩码的编码,这在文件被创建时用到,umask 命令可以改变这个变量的值。这个值是3个8进制值。每一位的值由1,2 或 4 这三个数字进行相加得到。每一位数分别对应着 "user", "group", "other" 。具体如下表所示:

----------------------------------------------------|
Digit Value   Meaning                                 |
1     0     没有禁止任何user权限                    |
      4     user 读权限禁止                         |
      2     User 写权限禁止                         |                
      1     User 执行权限禁止                       |
                                                    |
2     0     没有 group 权限被禁止                   |
      4     Group 读权限禁止                        |
      2     Group 写权限禁止                        |
      1     Group 执行权限禁止                      |
                                                    |
3     0     没有 other 权限被禁止                    |
      4     Other 读权限被禁止                      |        
      2     Other 写权限被禁止                      |
      1     Other 执行权限被禁止                    |
----------------------------------------------------|

例如:
对创建的文件一开始就要禁止"group" 的写和执行权限,"other" 的写权限。umask 的值其实就是对每一位的相关位置或(ORed)起来,如第二位的就是 2 | 1 。于是 umask 的值为 032。

当通过 open 或 ceat 调用创建一个文件时,mode 上的参数若与当前的 umask 的设置向对应,那么这位在创建后就会被移出(遮挡起来)。 最后的结果是,尽管程序创建的文件要求有某些权限,但是实际可能并不会得到这些权限,这正是由于 umask 的存在!但这并不能阻止程序或者用户后来使用 chmod 命令(或在程序中使用 chmod 系统调用)来增加写权限;对于所有的新文件,这样的机制对用户保存这些文件,而避开不得不去检查和设置权限是很有帮助的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-3 11:15 , Processed in 0.061242 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表