我已经开始使用 Docker 进行本地开发,从在我的 Mac 上安装所有内容到容器。浏览许多项目时,我经常看到以下 shell 命令,尤其是
find /www -type d -exec chmod 750 {} \; \
find /www -type f -exec chmod 640 {} \;
首先,他们试图达到什么目的,其次,这些命令的实际含义是什么,最后,您为什么/什么时候想要或需要使用它?
我最近复制并修改了另一个项目,发现拉出这些命令似乎没有什么区别(很公平,它不再基于相同的基础容器……但仍然如此)。
任何启发的微光将不胜感激。
编辑:
那个handy link in the comments below to explain shell告诉我们:
What:找到/www
中的所有文件夹,执行chmod命令,修改权限为750
- 仍然不确定 750,更重要的是你为什么要这样做。
最佳答案
该命令将所有文件和目录设置为属主可读可写,属组可读,但任何人都不能执行。
您可能想继续阅读 unix permissions in a bit more detail首先。
find /www -type f -exec chmod 640 {} \;
找到/www
下的所有文件,设置用户有r
ead,w
rite access (6) 组有r
读取访问权限 (4)。其他用户没有访问权限 (0)。
find /www -type d -exec chmod 750 {} \;
找到/www
下的所有目录,设置用户有r
ead、w
rite和ex
ecute 权限 (7) 以及对这些目录具有 r
e 和 ex
ecute 权限 (5) 的组。其他用户没有权限 (0)。
每次 find
之后的 \;
终止 -exec
命令,并且在 shell 中运行时必须转义,因此它不会被解释为一个常规的 ;
,它是 shell 命令的结尾。这也可以通过 +
来实现,它更易于阅读,因为它不需要转义和 more efficient .如果您在其他地方依赖 stdout/stderr,效率可能会导致输出差异。
Execute permissions on a directory意味着用户可以更改目录并访问其中的文件。由于目录不能在可执行文件的意义上执行,因此执行位被重载以表示其他含义。
link Cyrus posted to explainshell.com也是一个很好的工具。
关于linux - 何时在 docker 中使用 -type d-exec chmod 750/640,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39839549/