通过umask来设定系统默认权限得到的是错误的结果,这是怎么回事??

emit 2010-01-12 09:19:21
如题目,在命令提示符下我运行umask,将umask的值设成021时,系统默认分配的权限则是:目录权限--756即drwxr-xrw-;文件权限--645即-rw-r--r-x,这是推算的结果。实际运行验证时,目录权限结果是正确的,可是文件默认权限给出的结果却是-rw-r--rw-,这是为什么?根据文件默认权限“-rw-r--rw-”推算出的umask值应该是020才对。这是为什么?
...全文
208 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
emit 2010-01-14
  • 打赏
  • 举报
回复
转过弯儿来了,谢谢
brookmill 2010-01-13
  • 打赏
  • 举报
回复
创建文件的时候默认没有执行权限,所以umask021和020推算出的文件默认权限是一样的。
反过来说,从文件默认权限推算出的umask值不是唯一的,可以是020,也可以是021、120、030、131……
brookmill 2010-01-13
  • 打赏
  • 举报
回复
推算出来的文件权限,应该是目录权限去掉所有的x
021 ==> 目录权限drwxr-xrw- ==> 文件权限-rw-r--rw-即646
emit 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 brookmill 的回复:]
推算出来的文件权限,应该是目录权限去掉所有的x
021 ==> 目录权限drwxr-xrw- ==> 文件权限-rw-r--rw-即646

[/Quote]

可是推算出来的文件权限已经减去1了:7-1(去x)-1(u码值)=5
所以我认为是645,但系统给出的确实是按您推算的结果,我的问题出在哪儿?
brookmill 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 emit 的回复:]
可是推算出来的文件权限已经减去1了:7-1(去x)-1(u码值)=5
所以我认为是645,但系统给出的确实是按您推算的结果,我的问题出在哪儿?
[/Quote]
如4楼所说,不应该是减法,而是位屏蔽。
7去x的时候,位运算的结果和减法刚好一样,都是6
6去u码值的时候,减法的结果就不对了。u码值1对应的位本来就是0,就不应该减1了,结果还是6
http://blog.csdn.net/zp_mouse/archive/2009/01/22/3850274.aspx
panzifei 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 panzifei 的回复:]
你不是在用数字减法运算吧?数字减法是错误的,umask是遮罩
默认权限文件是644,目录是755吧,如果umask是021,那创建出来的文件应该是644,目录是754的权限吧
[/Quote]
上面说错了
panzifei 2010-01-13
  • 打赏
  • 举报
回复
你不是在用数字减法运算吧?数字减法是错误的,umask是遮罩
默认权限文件是644,目录是755吧,如果umask是021,那创建出来的文件应该是644,目录是744的权限吧

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧