首页 > 代码库 > Linux中的umask系统变量的笔记

Linux中的umask系统变量的笔记

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


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

4                    禁止属主的读权限

2              禁止属主的写权限

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

4    禁止组的读权限

2    禁止组的写权限

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

4    禁止其他用户的读权限

2    禁止其他用户的写权限

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

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


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

Linux中的umask系统变量的笔记