我正在编写一个 bash 脚本来更新一些文件/目录,我想在脚本中运行 umask 来为脚本创建的文件/目录设置默认权限。我知道我可以使用 umask 来设置文件和目录的权限,但是我需要对文件和文件夹设置不同的权限。
I want files to be: -rw----r-- (0604)
I want folders to be: drwx-----x (0701)
我可以使用 umask 来做到这一点吗?如果是这样,我该怎么做?如果不是,实现它的最佳方法是什么?提前谢谢你。
最佳答案
有趣的要求。目前(至少在 bash
中),umask
是一个全局设置,您不能根据对象类型设置它。
想到的一个解决方案是将 umask
设置为文件变体,然后拦截对 mkdir
的调用(例如使用用户创建的 mkdir
路径前面的脚本)来做:
umask 0701 ; /path/to/real/mkdir $1 ; umask 0604
这样,假设您所有的目录创建都是使用 mkdir
完成的,您可以确保它们使用不同的 umask
设置。
请注意,该脚本可能应该更健壮一些,例如恢复以前的 umask
而不是将其强制为 0604
,并添加一些更好的错误检查和可能的处理多个参数的能力。
但这就是所有细节,上面的框架应该足以让您入门。
关于bash - 为文件和文件夹设置不同的掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12445527/