如果您使用Linux作为主要操作系统或管理Linux服务器,当您尝试创建或编辑文件并收到权限拒绝Permission deny错误时。

通常,可以通过设置正确的文件权限或所有权来解决与权限不足的错误。

Linux是一个多用户系统,并且通过文件许可权,属性和所有权来控制对文件的访问。

这样可以确保只有授权的用户和进程才能访问文件和目录。需要了解文件权限的更多信息,请阅读Linux Umask命令

在本教程中,我们将说明如何递归更改文件和目录的权限。

Chmod 命令递归修改权限

chmod命令允许您使用符号或数字模式修改文件的权限。要递归指定目录所有文件,请使用chmod命令的-R/--recursive选项。

递归修改文件权限的语法形式是chmod -R MODE DIRECTORYMODE是权限的模式,DIRECTORY是要设置权限的目录或者文件。

例如命令chmod -R 755 /var/www/html/var/www/html目录的所有文件和子目录的权限更改为755

也可以使用符号模式指定权限chmod -R u=rwx,go=rx /var/www/html。只有root用户或者文件所有者才能更改文件的权限。在递归修改文件的权限时,请格外小心。

sudo chmod -R 755 /var/www/html
sudo chmod -R u=rwx,go=rx /var/www/html

find 命令递归修改权限

通常,文件和目录不应该具有相同的权限。大多数文件不需要执行权限,而您必须在目录设置可执行权限才能切换目录。

最常见的情况是将网站文件的权限递归更改为644,目录的权限更改为755。在这种情况下,是使用find命令递归修改文件与目录权限最适合用例。

我们可以使用find命令/var/www/html搜索文件或目录,并将找到的每个文件或目录传递给chmod命令以设置权限。

在这个示例中,我们组合使用find-exec选项,为找到的每个目录与文件运行chmod命令。

如果你有大量的目录或者文件,请使用xargs命令,通过一次传递多个文件与目录来加快修改的速度。

命令find /var/www/html -type d -exec chmod 755 {} ; 命令将会修改目录的权限,如果需要修改文件权限,请将-type d换成-type ff表示文件。

find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type d -exec chmod u=rwx,go=rx {} \;

find /var/www/html -type d -print0 | xargs -0 chmod 755 

结论

带有-R选项的chmod命令允许您递归更改文件的权限。要基于文件的类型递归设置权限,请结合使用chmodfind命令。

如果您有任何疑问或反馈,请随时发表评论。