![使用“umask”在目录和文件之间设置不同的权限](https://linux22.com/image/29333/%E4%BD%BF%E7%94%A8%E2%80%9Cumask%E2%80%9D%E5%9C%A8%E7%9B%AE%E5%BD%95%E5%92%8C%E6%96%87%E4%BB%B6%E4%B9%8B%E9%97%B4%E8%AE%BE%E7%BD%AE%E4%B8%8D%E5%90%8C%E7%9A%84%E6%9D%83%E9%99%90.png)
为什么 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
吗?007
umask
0770
答案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 。