结合 find-chmod 用于目录和 find-chmod 用于常规文件

结合 find-chmod 用于目录和 find-chmod 用于常规文件

我有这些命令:

find /var/www/html/* -type d -exec chmod 755 {} \;
find /var/www/html/* -type f -exec chmod 644 {} \;

我从斯蒂芬·基特的回答中明白了这里我可以这样组合它们:

find /var/www/html/* -exec chmod a-x,a=rX,u+w {} \+

这些chmod论点对我来说阅读起来不太舒服,尤其是在语法方面find(我还没有熟悉 、、 和等组合的 nix 含义a-x,而且我没有时间和平静的心态来学习它)未来几天会严肃对待)。a=rXu+w

那里可以使用数字吗?如果没有,可能有一种更舒适的方法来统一这两个命令,即使比建议的特定命令稍长一点?

答案1

我想说你应该使用任何你觉得舒服的东西;所以

find /var/www/html/* -type d -exec chmod 755 {} \+
find /var/www/html/* -type f -exec chmod 644 {} \+

很好(\+而不是\;)。

a-x,a=rX,u+w chmod论点(也可以看看POSIX 规范chmod) 分别表示:

  • 清除每个人的执行位 ( a-x),
  • 将每个人的权限设置a=
    • 读 (r),
    • 如果是目录或可执行文件,则可执行 ( X),
  • 为所有者添加可写位 ( u+w)。

条件部分(如果是目录或可执行文件则可执行)无法用数字表示。

-x顺序和的目的=rX是确保只有目录设置了执行位:由于执行位被清除,因此X只能匹配目录,而不能匹配设置了执行位的文件。

我觉得你find在这里根本不需要:

chmod -R a-x,a=rX,u+w /var/www/html/*

仅使用将应用相同的更改chmod

相关内容