Linux chmod 高级用法 设置文件夹 755 文件 644

文件夹权限 755 文件权限 644

在 Linux 中, 直接使用 chmod -R 777 递归更改目录权限虽然可以快速解决权限问题, 但会同时赋予文件执行权限, 这种做法存在较大的安全隐患。短期来看确实解决了眼下问题, 万一有什么服务被攻破了, 具有执行权限的文件可能被用于运行恶意程序。因此, 为了安全起见, 我们需要一种方法只修改文件夹的权限, 而不影响文件的权限。

递归修改权限

递归修改文件夹权限

文件夹的执行权限相当于允许进入目录的权限。使用以下命令为文件夹设置权限

find /path/to/base/dir -type d -exec chmod 755 {} +

这会递归查找指定目录下的所有文件夹, 并将它们的权限设置为 755 (可读、可写、可执行)

递归修改文件权限

使用以下命令为文件设置权限

find /path/to/base/dir -type f -exec chmod 644 {} +

这会递归查找指定目录下的所有文件, 并将它们的权限设置为 644 (可读、可写, 但不可执行)

使用命令替代简化操作

如果需要处理的对象较多, 可以使用以下方法

方法 1: 直接传递给 chmod

注意: 文件名中包含空格可能导致失败

chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)

方法 2: 结合 xargs 减少 chmod 调用次数

适用于文件特别多的情况

find /path/to/base/dir -type d -print0 | xargs -0 chmod 755 
find /path/to/base/dir -type f -print0 | xargs -0 chmod 644

在这里, -print0xargs -0 的组合能够安全处理文件名中包含空格或特殊字符的情况


原文

How to recursively chmod all directories except files?

最后更新于 2022-02-07
使用 Hugo 构建
主题 StackJimmy 设计