Linux 将目录权限设为 755、文件权限设为 644

比较递归 chmod 与 find 的权限设置方式,区分保留可执行文件与统一设置权限。

适用范围

需要以文件所有者或具备相应权限的管理员身份执行;仅有目录写入权限并不足以修改其他用户文件的权限。下面给出两种把目录统一设为 755、文件统一设为 644 的方法,以及保留可执行文件的方法,路径替换为实际目录。

方法一:一次递归 chmod

1
chmod -R a=r,u+w,a+X "/path/to/directory"

a=r 先把权限设为只读并清除已有执行位,u+w 为所有者增加写权限,最后 a+X 为目录恢复执行位。最终目录是 755,普通文件和原可执行文件都会变成 644。

方法二:按文件类型精确设置

1
2
find "/path/to/directory" -type f -exec chmod 644 {} + \
  -o -type d -exec chmod 755 {} +

这个方法明确区分普通文件与目录,符号链接不匹配 -type f 或 -type d。不要先递归把目录全部设为 644,再尝试进入目录恢复权限;普通用户可能因此失去遍历权限。

可选:保留已有可执行文件

如果目录中包含需要执行的脚本或程序,可以使用:

1
chmod -R u=rwX,go=rX "/path/to/directory"

目录变成 755,原先有执行位的文件保留执行能力并变成 755,其余文件变成 644。此方法与前两种严格的“所有文件 644”目标不同,应按目录用途选择。

验证结果

在目标目录抽查目录、普通文件与可执行文件,例如:

1
stat -c '%a %n' "/path/to/directory" "/path/to/directory/example.txt"

前两种方法将所有普通文件设为 644,第三种会保留原有可执行文件的执行权限,抽查时按所选方法确认结果。

参考:GNU C Library 的文件权限说明。

延伸阅读

使用 Hugo 构建
主题 Stack 由 Jimmy 设计