何时使用 -type d-exec chmod 750 / 640 in docker

When to use -type d-exec chmod 750 / 640 in docker

我已经开始使用 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下的所有文件并设置用户有read,write access (6) 和组有read access ( 4).其他用户没有访问权限 (0)。

find /www -type d -exec chmod 750 {} \;

找到/www下的所有目录并设置用户有read,write和execute权限(7)和组有对这些目录的 read 和 execute 权限 (5)。其他用户没有权限 (0)。

每个 find 之后的 \; 终止 -exec 命令,并且必须在 shell 中的 运行 时进行转义,因此它不会被解释为常规 ; 这是 shell 命令的结尾。这也可以通过 +more efficient 来实现,它更易于阅读,因为它不需要转义。如果您在其他地方依赖 stdout/stderr ,效率可能会导致输出差异。

Execute permissions on a directory表示用户可以进入目录并访问里面的文件。由于目录不能在可执行文件的意义上执行,因此执行位被重载以表示其他含义。

link Cyrus posted to explainshell.com 也是一个很好的工具。