我有这些命令:
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=rX
u+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
。