如果您使用Linux作为主要操作系统或管理Linux服务器,当您尝试创建或编辑文件并收到权限拒绝Permission deny错误时。
通常,可以通过设置正确的文件权限或所有权来解决与权限不足的错误。
Linux是一个多用户系统,并且通过文件许可权,属性和所有权来控制对文件的访问。
这样可以确保只有授权的用户和进程才能访问文件和目录。需要了解文件权限的更多信息,请阅读Linux Umask命令。
在本教程中,我们将说明如何递归更改文件和目录的权限。
chmod命令允许您使用符号或数字模式修改文件的权限。要递归指定目录所有文件,请使用chmod命令的-R/--recursive选项。
递归修改文件权限的语法形式是chmod -R MODE DIRECTORY,MODE是权限的模式,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
通常,文件和目录不应该具有相同的权限。大多数文件不需要执行权限,而您必须在目录设置可执行权限才能切换目录。
最常见的情况是将网站文件的权限递归更改为644,目录的权限更改为755。在这种情况下,是使用find命令递归修改文件与目录权限最适合用例。
我们可以使用find命令在/var/www/html搜索文件或目录,并将找到的每个文件或目录传递给chmod命令以设置权限。
在这个示例中,我们组合使用find与-exec选项,为找到的每个目录与文件运行chmod命令。
如果你有大量的目录或者文件,请使用xargs命令,通过一次传递多个文件与目录来加快修改的速度。
命令find /var/www/html -type d -exec chmod 755 {} ; 命令将会修改目录的权限,如果需要修改文件权限,请将-type d换成-type f,f表示文件。
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命令允许您递归更改文件的权限。要基于文件的类型递归设置权限,请结合使用chmod和find命令。