如果您使用Linux作为主要操作系统或管理Linux服务器,当您尝试创建或编辑文件并收到权限拒绝Permission deny错误时。
通常,可以通过设置正确的文件权限或所有权来解决与权限不足的错误。
Linux是一个多用户系统,并且通过文件许可权,属性和所有权来控制对文件的访问。
这样可以确保只有授权的用户和进程才能访问文件和目录。需要了解文件权限的更多信息,请阅读Linux Umask命令。
在本教程中,我们将说明如何递归更改文件和目录的权限。
Chmod 命令递归修改权限
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
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 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
命令。
如果您有任何疑问或反馈,请随时发表评论。