bash - 为文件和文件夹设置不同的掩码

标签 bash permissions umask

我正在编写一个 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/

相关文章:

http - Flutter - http.get 在 macos 构建目标 : Connection failed 上失败

java - 如何从Java获取当前的umask值?

BASH:if 语句执行命令和函数

python - 使用Python向 super 计算机提交多个作业

ios - 当我向 iOS 请求许可时,可以更改措辞并重新定义按钮吗?

permissions - 服务帐户的 Keycloak uma-grant 类型票证似乎不适用于策略

docker - 如何在基于 alpine 的 docker 容器中配置 umask

python - 为什么 python 中的 os.mkdir 设置权限的方式与 bash 中的 mkdir 之一不同?

linux - 将 shell 脚本结果输出到文件,如终端屏幕

linux - 多个 ssh 命令中的 cat 不起作用