我们在创建文件或者目录时,看到的权限往往和我们设置的不一样,原因就在于创建文件时要受到 umask的影响。
目录
一、实际情景介绍
使用open系统函数以写的方式打开一个文件(文件不存在则直接创建),此时OS就会帮我们创建出一个文件,初始赋予的权限是 0666(创建者、组、其他都具有读写权限)
// O_WRONLY: 以只写的形式打开文件
// O_CREAT: 如果文件不存在,则直接创建
// 0666: 设置文件的初始权限,0666由八进制转二进制就是110 110 110,
// 即创建者、组、其他都具有读写权限
open("./log", O_WRONLY | O_CREAT, 0666);
但是实际创建出来的文件权限如下,实际文件的权限是 0644,这是因为受到了文件权限掩码的影响。(详见下面 “权限掩码的作用过程” )

二、文件权限掩码
1、什么是权限掩码?
文件权限掩码是 OS不希望某些成员具备的权限,即便设置了也不会生效。普通用户的权限掩码是 0002,超级用户

本文介绍了Linux系统中文件权限掩码umask的工作原理和作用。当创建文件或目录时,初始权限可能受到umask影响而不同于预期。umask是一个设置用户不希望文件或目录具有的权限,它的值会从设定的权限中移除。例如,普通用户默认umask是0002,意味着组和其他用户无法拥有写权限。通过`umask`命令或umask函数可以更改权限掩码。文章详细解析了权限掩码如何与文件权限结合计算最终权限,并提供了设置权限掩码的方法。
最低0.47元/天 解锁文章
1729

被折叠的 条评论
为什么被折叠?



