如何在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-execchmod 对找到的每个条目运行命令。 使用 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 options允许您递归更改文件的权限。

要基于文件的类型递归设置权限,请使用 chmodfind 命令。

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

chmod终端

Sidebar