
如何为目录和文件设置不同的 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
选项来创建文件夹。