我怎样才能以递归方式 chmod 文件夹内的所有内容?
例如,我有一个名为的文件夹var
,其中包含许多子文件夹和文件。
如何将 chmod 755 递归应用于此文件夹及其所有内容?
答案1
请参阅手册(man chmod
):
-R, --recursive
change files and directories recursively
chmod -R 755 /path/to/directory
将会执行您想要的操作。
然而…
你通常不想全部 755文件;这些应该是 644,因为它们通常不需要可执行。因此,您可以
find /path/to/directory -type d -exec chmod 755 {} \;
只更改目录权限。使用-type f
和chmod 644
将权限应用于文件。这将覆盖所有现有权限。这样做不是一个好主意
/var
— 文件夹已经由系统设置了正确的权限。例如,中的某些目录/var
需要 775 权限(例如/var/log
)。
因此,在执行操作之前sudo chmod
(尤其是在系统文件夹上),请停下来想想是否真的有必要。
答案2
对于基于 PHP 的网站,许多来源如这个建议目录使用 755,文件使用 644。
如果您在网站的 DocumentRoot 中,您可以按如下方式进行设置:
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
答案3
如果您希望应用于特定目录/文件,您可以按如下方式chmod
使用:find
find . -type f -name "*.sh" -print0 |xargs -0 chmod 755
答案4
您可以授予本地主机所有权限
sudo chmod -R goa=rwx /path/to/directory