Linux命令学习手册-umask

作者: QuietHeart | 来源:发表于2020-02-26 11:40 被阅读0次

功能

通过设置一些位来禁止一些权限。有一些通用的值, 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 表示创建的时候屏蔽 groupothers 成员写;
  • 000 表示创建的时候不屏蔽任何人 open 调用的读写执行设置;
  • 777000 相反。

也就是说设使用 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= #

相关文章

网友评论

    本文标题:Linux命令学习手册-umask

    本文链接:https://www.haomeiwen.com/subject/afvcfhtx.html