linux - 何时在 docker 中使用 -type d-exec chmod 750/640

标签 linux bash docker devops

我已经开始使用 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) 组有r读取访问权限 (4)。其他用户没有访问权限 (0)。

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

找到/www下的所有目录,设置用户有read、write和execute 权限 (7) 以及对这些目录具有 re 和 execute 权限 (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/

相关文章:

linux - 谁尝试访问 root@

ruby-on-rails - 找出 Rails 应用程序在主机上运行的 Web 服务器

linux - 如何在 bash 脚本中获取字符串中的一些值

php - 如何在Docker php-fpm alpine中安装LDAP

c++ - 使用configure文件生成makefile

python - 在特定情况下触发时输入验证停止工作

linux - 文件的标准输出/错误是一个单独的过程吗? (Linux)

bash - 如何获取第n个匹配的行号?

bash - 使 $ docker 为 docker-compose 编写命令

docker - 如何在 Docker 容器中使/etc/hosts 可由 root 写入?