目录和文件的不同 Umask

目录和文件的不同 Umask

如何为目录和文件设置不同的 umask?

我需要目录umask 003和文件umask 117

答案1

umask是全球性的bash。您可以做的一件事是创建一个mkdir包装器(一个脚本,您为其命名),该包装器将在执行后更改掩码。

#!/bin/bash
umask 0701 ; /path/to/real/mkdir $1 ; umask 0604

这是在这里回答的:

请记住:对于目录,基本权限是 ( rwxrwxrwx) 0777,对于文件来说,基本权限是0666,这意味着,即使 umask 允许,您也不会在 shell 内创建文件时获得执行权限。这样做显然是为了提高安全性关于新文件的创建

例子:

[admin@host test]$ pwd
/home/admin/test
[admin@host test]$ umask
0002
[admin@host test]$ mkdir test
[admin@host test]$ touch test_file
[admin@host test]$ ls -l
total 4
drwxrwxr-x 2 admin admin 4096 Jan 13 14:53 test
-rw-rw-r-- 1 admin admin    0 Jan 13 14:53 test_file

umask Unix规范没有告诉任何有关此文件权限数学细节的信息。由 shell 开发人员(和操作系统制造商)决定。

答案2

请注意标准mkdir命令可以-m选择在创建时设置权限位:

-m mode

将最终创建的目录的文件权限位设置为指定模式。 mode 参数可以是为命令指定的任何格式chmod(1)。如果指定了符号模式,则操作字符+-相对于 的初始模式进行解释a=rwx

在您的情况下,您可以将 umask 设置为文件权限所需的任何值,并使用该-m选项来创建文件夹。

相关内容