在安装某些应用程序(Linux 和 OSX)后更改脚本中的权限,我发现以下内容非常令人困惑。
在 OSX 中创建“.app”需要在 /Aplications 目录中放置一个包含许多文件(应用程序、资源、库)的目录,并具有 root 权限。该应用程序可以从 CD 或网络中提取,这意味着它的权限实际上不是我所需要的。该应用程序将需要可执行权限,库也是如此,而有些项目只需“r”而不是“x”就可以了。我不会触及“w”权限 - 但这里不应该有任何权限。
chmod -R +rx /Applications/myApp
对于所有内部目录来说,这都是完美的(是的,有些项目在不需要时会获得 +x 权限,但这并不重要)。
对于 Linux 和 OSX :我正在保存(打印到文件)一些文件/tmp/company/product
。因此在安装过程中,我还添加了
chmod -R +rw /tmp/company
结果是
rwx r-x r-x
我最终对该文件夹应用了 777 权限...但我只是不明白为什么添加 r 和 w 权限不起作用。
也许有人可以帮忙解释一下?
顺便说一句我也这么做了
chmod +rw /tmp/company
chmod +rw /tmp/company/product
效果相同,权限不适用。(在 OSX 上很奇怪,ls -l 显示正确的权限,但 Finder 属性显示没有权限……并且文件没有写入目录……在 linux 上,ls -l 实际上只显示了“其他”的 rx 权限)
当我应用 +w 权限而不是数字时是否有特殊之处?
答案1
它与你的 umask 有关。请参阅 chmod 手册页:
字母“ugoa”的组合控制哪些用户对文件的访问权限将被更改:拥有该文件的用户 (u)、文件组中的其他用户 (g)、不在文件组中的其他用户 (o) 或所有用户 (a)。如果未指定上述任何一项,则效果如同指定了“a”,但 umask 中设置的位不受影响。
根据您的描述,您的 umask 可能是 0022。因此,如果您不为 chmod 指定“ugoa”,则不会设置组和其他权限。请尝试使用chmod a+rw /tmp/company
。