因为默认创建的文件具有 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()
.