Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5494013
  • 博文数量: 922
  • 博客积分: 19333
  • 博客等级: 上将
  • 技术积分: 11226
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-27 14:33
文章分类

全部博文(922)

文章存档

2023年(1)

2020年(2)

2019年(1)

2017年(1)

2016年(3)

2015年(10)

2014年(17)

2013年(49)

2012年(291)

2011年(266)

2010年(95)

2009年(54)

2008年(132)

分类: LINUX

2011-06-10 20:30:59

umask 

[功能] 

通过设置一些位来禁止一些权限。有一些通用的值,"002"阻止其他人写你的文件,"022"阻止组成员和其它人写你的文件,"027"阻止组成员写你的文件以及其他人读、写、执行你的文件。 


[举例] 

*显示当前的umask值: 

$umask 

输入之后,例如输出如下: 

0022 

这里,是系统的默认mask,因为是8进制,所以是0022不是022. 


*设置umask值为0022: 

$umask 0022 

这里,假设从前的umask不是0022,这时候将会变成0022,如果创建了一个文件看看权限,会发现如下: 

-rw-r--r-- 1 quietheart quietheart 0 2010-05-05 08:55 tttt 

如果设置成0000,那么如下: 

-rw-rw-rw- 1 quietheart quietheart 0 2010-05-05 09:01 tttt 

(修改成0000之后,会使得子进程的umask也为0000) 

如果设置成0777,那么如下: 

---------- 1 quietheart quietheart 0 2010-05-05 09:03 tttt 

另外,实践发现,第一位始终是0不能被设置,所以实际上之后后三位可以设置。 

综上可知,后位表示的意思例如: 

002,表示创建的时候屏蔽掉other成员写;022表示创建的时候屏蔽group和others成员写;000表示创建的时候不屏蔽任何人open调用的读写执行设置;777与000相反。 

也就是说设使用open调用创建文件的时候指定的权限为s_mode,umask的值为mask,那么最终创建文件的权限就是: 

s_mode & ~mask 

当然,用chmod还是可以改的。 


*用符号表示的方式打印umask值: 

$umask -S 

输入之后,输出如下: 

u=rwx,g=rx,o=rx 

这里,实际的非符号值是0022,更进一步说明了,umask的值是被屏蔽的位。 


[其他] 

更多内容,待补充。 

$ umask                        first print the current file mode creation mask 

002 

$ umask -S                     print the symbolic form 

u=rwx,g=rwx,o=rx 

$ umask 027                    change the file mode creation mask 

$ umask -S                     print the symbolic form 

u=rwx,g=rx,o= 

阅读(5528) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

vaqeteart2020-02-10 14:06:10

to org