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 系统调用)来添加其他用户的写权限,但它却是能够帮助用户,使他们不必对每个新文件都去检查和设置其访问权限。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。