本文共1388字,阅读约需4分钟。
我们平时在进行Linux操作的时候,好像更多的是通过chmod等命令去修改文件或目录的权限,很少去关注新建文件或目录时他们的权限是怎样的。本期我们聚焦一下文件/目录的默认权限。
想要了解默认权限就不得不提到umask命令,我们先来查看一下它的帮助文档。
umask: umask [-p] [-S] [mode]
Display or set file mode mask.
Sets the user file-creation mask to MODE. If MODE is omitted, prints
the current value of the mask.
If MODE begins with a digit, it is interpreted as an octal number;
otherwise it is a symbolic mode string like that accepted by chmod(1).
Options:
-p if MODE is omitted, output in a form that may be reused as input
-S makes the output symbolic; otherwise an octal number is output
Exit Status:
Returns success unless MODE is invalid or an invalid option is given.
帮助文档里说umask是用来Display or set file mode mask,即查看或指定用户在建立文件或目录时的权限默认值。
查看权限默认值
输入umask我们得到数字0002,其中后三位代表权限默认(负)值,需要注意的是在默认权限的基础上去掉对应的数字的权限,我们在后面举例解释。
umask
输入umask -S(S即Symbolic)得到u=rwx,g=rwx,o=rx,即775,计算方法详见Linux||常用命令(一)的权限部分。
umask -S
我们新建文件testfile.txt和目录testfile,查看其权限情况。
文件具有u=rw,g=rw,o=r权限(664),目录具有u=rwx,g=rwx,o=rx权限(775)。那“在默认权限的基础上去掉对应的数字的权限”是什么意思呢?
在默认权限的属性上,目录和文件是不一样的,对于目录来说,如果没有可执行权限,就无法进入目录查看;对于文件来说,大部分都是文本文件,少有用于执行的。
因此,文件的创建是默认没有可执行权限的,即默认权限为666;目录的创建是默认包含所有权限的,即默认权限为777。
前面提到了002是权限默认(负)值,需要在默认权限的基础上去掉对应的数字的权限。对于文件来说,666-002=664;对于目录来说,即777-002=775,与示例相符。
修改权限默认值
输入umask 033即可设置默认权限值为0033,但就类似于直接输入命令修改环境变量一样,重新登录服务器即失效。
可能不理解的地方
假如我们现在的默认权限是0033,我们新建一个文件,权限应该是666-033=633对不对?即u=rw,g=wx,o=wx。
但经过我们查看,文件xx的权限并不如我们刚刚分析的那样,没有可执行权限。如果你也有这样的困惑,说明你走进了一个误区。
通过umask查看或设置的文件权限是指去除掉对应数字的权限,如果默认权限本身就不含有可执行权限,又怎么能去掉呢?
这样理解是不是就好多了。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有