在 Linux 中递归更改文件的权限
Linux 是一个多用户系统,通过文件许可权,属性和所有权来控制对文件的访问。这样可以确保只有授权的用户和进程才能访问文件和目录。
在本文中,我们将说明如何以递归方式更改文件和目录的权限。
如果您使用 Linux 作为主要操作系统或管理 Linux 服务器,则在尝试创建或编辑文件并收到“拒绝权限”错误时会遇到这种情况。通常,可以通过设置正确的文件许可权或所有权来解决与许可权不足有关的错误。
有关文件权限的更多信息,请参见 Linux 中的 Umask 命令 。
chmod 递归
该 chmod
命令允许您使用符号或数字模式更改文件的权限。
要对给定目录下的所有文件和目录进行递归操作,请将 chmod
命令与 -R
, (--recursive
) 选项一起使用。递归更改文件权限的常规语法如下:
chmod -R MODE DIRECTORY
例如,改变 /var/www/html
目录下所有文件和子目录的权限为 755
,你可以使用:
chmod -R 755 /var/www/html
也可以使用符号方法指定模式:
chmod -R u=rwx,go=rx /var/www/html
只有 root 用户,文件所有者或具有 sudo
特权的用户才能更改文件的权限。递归更改文件的权限时,请格外小心。
使用 find
命令
通常,文件和目录不应具有相同的权限。大多数文件不需要执行权限,但是您必须在目录上设置执行权限才能进入目录之内。
最常见的情况是将网站文件的权限递归更改为 644
,将目录文件的权限递归更改为 755
。
使用数值方法:
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
使用符号方法:
find /var/www/html -type d -exec chmod u=rwx,go=rx {} \;
find /var/www/html -type f -exec chmod u=rw,go=r {} \;
该 find
命令在 /var/www/html
下面搜索文件或目录,并将找到的每个文件或目录传递给 chmod
命令以设置权限。
find
与 -exec
一起使用时, chmod
将为找到的每个条目运行命令。而使用 xargs
则是命令通过一次传递多个条目来加速操作:
find /var/www/html -type d -print0 | xargs -0 chmod 755
find /var/www/html -type f -print0 | xargs -0 chmod 644
结论
chmod
带有 -R
选项的命令允许您递归更改文件的权限。
要基于文件的类型递归设置权限,请 chmod
与 find
命令结合使用。