功能
通过设置一些位来禁止一些权限。有一些通用的值, 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= #
网友评论