使用“umask”在目录和文件之间设置不同的权限

使用“umask”在目录和文件之间设置不同的权限

为什么 umask 为我创建的目录和文件设置不同的权限考虑:

[user@server1 ~]$ umask
0770
[user@server1 ~]$ mkdir TEST2; touch TEST2.txt;
[user@server1 ~]$ ls -l
d------rwx 2 user group_name 4096 Mar  5 05:16 TEST2
-------rw- 1 user group_name    0 Mar  5 05:16 TEST2.txt

现在该文件不应该具有设置的权限TEST2.txt吗?007umask0770

答案1

umask 不执行权利,而是禁止权利。看一下 strace:

file:
open("newfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
directory:
mkdir("newdir", 0777)                   = 0

touch 不要求文件的执行权限(这没有意义)。

答案2

umask值是权限否定,取消默认授予的任何权限。目录需要搜索权限,因此除非覆盖,否则其权限为 0777 (rwxrwxrwx),典型的 umask 为 0002,它会留下 0775 (rwxrwxr-x)。对于可执行文件也是如此(x 表示此处执行);对于常规文件,默认权限为不可执行、rw-rw-rw- (0666),以及上面的 umask 0664 (rwxrwxr--)。

答案3

umask 基本上是默认权限值的补充值。因此,如果 umask 显示 002,则意味着默认权限为 775。为了更好地理解,其他示例包括 umask=000 => perms=777 或 umask=777 => perms=000 。

相关内容