我正在解决以下问题Unix 教科书。
我正在尝试解决这个问题(第 8 章,#15,第 207 页):
- 给出一个命令行,用于设置默认访问模式,以便您有读、写和执行权限,您的组有读和执行权限,您的组有读和执行权限,所有其他人对新创建的可执行文件没有权限或目录。您将如何测试它以确保它正常工作?
我最初的答案是使用umask 027
,但是我找到touch
使用或从未按应用到not 的vim
执行权限按预期方式创建新文件。umask
666
777
由于我的最终目标是拥有 的权限值,750
在我看来,该命令是不可能的,umask
因为任何umask
应用于666
都不会导致750
.
鉴于本节中的所有问题都涉及chmod
并且umask
该问题是否有缺陷,因为您无法使用 来实现预期目标umask
?
答案1
嗯,问题包含这部分:
对于新创建的可执行文件或目录。
新创建的可执行文件和目录可能是使用模式 0777 创建的,因此它们也将获得所需的执行权限。所以这个问题似乎是正确表述的,umask 027 应该可以。
答案2
每这些文档您可以通过从 777 中减去来确定任何 umask(建议文件使用 666,因为默认情况下它们不可执行)。
所以你可以像
PERM=750
UMASK=$(expr 777 - $PERM)
echo $UMASK
>>> 27
请注意,它缺少前导零,这在某些情况下可能是一个问题,但如果您只是想要的话,效果很好