Linux中的umask系统变量的笔记

umask是一个系统变量,它的作用是:当文件被创建时,为文件的访问权限设定一个掩码。执行umask命令可以修改这个变量的值。它是一个由3个八进制数字组成的值。每个数字都是八进制值1、2、4的OR的操作结果。他们的具体含义见下面表格。其中三个数字分别对应着用户(user)、组(group)和其他用户(other)的访问权限。


数字 取值 含义
1 0                     允许属主的任何权限

4                     禁止属主的读权限

2                禁止属主的写权限

1     禁止属主的执行权限
2 0       允许组任何权限

4     禁止组的读权限

2     禁止组的写权限

1     禁止组的执行权限
3 0     允许其他用户的任何权限

4     禁止其他用户的读权限

2     禁止其他用户的写权限

1     禁止其他用户的执行权限

理解:将每个八进制用一个三位二进制数来表示----RWX,其中,若R=1,则禁止读权限,若W=1,则禁止写权限,若X=1,则禁止执行权限。这和 chmod 命令里的八进制数用法正好相反。


当通过 open 或者 creat 调用创建文件时,mode参数将与当前的umask值进行比较。在mode参数中被设置的位如果在umask值中也被设置了,那么它就会从文件的访问权限中删除。因此,用户完全可以设置自己的环境,比如“不准创建允许其他用户有写权限的文件,即使创建该文件的程序要求该权限也不行。”这样做虽然不能只程序或用户在随后使用 chmod 命令(或者在程序中使用 chmod 系统调用)来添加其他用户的写权限,但它却是能够帮助用户,使他们不必对每个新文件都去检查和设置其访问权限。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。