umask XXX(权限位)赋予文件执行权限

umask XXX(权限位)赋予文件执行权限

因为默认创建的文件具有 666 的权限,并且umask(以权限位形式)从此权限中按位减去,所以我们可以execute在不使用权限字符 (r,w,x) 的情况下授予权限吗?

我指的是使用按位掩码,例如

umask 002

没有设置权限字符,例如

umask u+x
umask u=rwx

答案1

这不可能。umask只阻止权限但从不添加权限。因此,仅当创建的open()系统调用确实包含它们时,您才获得执行权限。如果编译器创建可执行文件就是这种情况。

答案2

新文件的权限是根据调用所使用的权限计算的creat()

你的umask结果是:

$ umask 002
$ umask -S
u=rwx,g=rwx,o=rx

因此,如果您使用creat()文件权限为0777,您将获得一个带有rwxrwxrx.然而0666,通常的程序使用creat().

相关内容