由于Linux是一个多用户操作系统,它有一套设置和管理文件权限的机制,保证只有授权的进程和用户才能访问各种目录和文件。当您使用 Linux 时,您可能会遇到各种无法编辑文件或目录的情况,因为“权限被拒绝”错误,表明您没有所需的权限。本教程将向您展示如何在 Linux 中递归更改文件权限,以确保您的权限设置适用于子文件夹和文件。
当文件或目录操作出现“权限被拒绝”错误时,首先检查为用户、组等分配的权限。
为此,您可以使用ls -l命令。例如,以下是“/var”目录中各个文件和目录的权限。

上面的输出包含特定信息。
- 第一列表示文件和目录的权限。此列中的第一个字母表示类型:
d表示目录,l代表符号链接,并且-一个常规文件。 - 其他九个角色分为三组:
u用户,g组,以及o所有者表示文件或目录的权限。r表示“读取”权限,w表示“写”权限,并且X表示“执行”权限。

一旦您知道工作目录或文件的文件权限,您就可以轻松更改它们。
如何使用chmod更改文件权限
这chmod命令是在 Linux 中更改文件权限的最简单方法。该命令的一般语法是:
chmod {permission}{operator}{mode}- 权限:这表示授予用户、组、所有者或所有人的权限。
- 操作员:这表示授予权限受让人的权限:
+授予许可,-拒绝权限,并且=指定要设置的权限。 - 模式:这决定了要设置哪些权限:
r读,w写,或者x执行。
例如,要拒绝每个人对“/var”目录中的备份目录的写访问权限,可以使用以下命令:
sudo chmod -w /var/backups虽然使用更改文件权限chmod命令有效时,仅更改指定目录或文件的文件权限。
幸运的是,您可以递归地更改目录或文件及其子目录和文件的文件权限。为此,请递归使用 chmod 命令-r选项。
例如,让我们递归地删除read“/var/backup”目录及其所有文件和子目录的权限。当前的权限是:
drwxrwxrwx 2 root root 4096 Jul 15 06:25 backups现在让我们运行chmod递归地更改权限:
sudo chmod -r -r /var/backups现在您可以看到文件权限已更改。

使用 find 递归更改权限
通常,您不会设置具有类似权限的文件和目录。这是因为您需要执行权限才能cd进入特定目录。但是,大多数文件不需要此执行权限。
为了克服这个问题,您可以使用findLinux 中的实用程序。这允许您仅查找特定文件或目录并为其设置权限。
让我们以“/var/log”目录为例。该目录包含文件和目录。

要仅设置文件的特定权限,我们可以使用 find 命令和-type f选项。
请参阅下面的示例命令:
sudo find /var/log/ -type f -exec chmod 777 {} ;在上面的例子中,我们使用find命令在“/var/log”目录中搜索文件,然后为用户、组和所有人设置读、写和执行权限。
我们也可以对目录做同样的事情。在这种情况下,我们指定-type d仅获取目录。
例如:
sudo find /var/log/ -type d -exec chmod 755 {} ;在上面的例子中,我们只对目录设置了权限755,而不是对文件和目录都设置了权限。
您可以使用以下方法验证这一点ls -la命令。

您会注意到所有文件都具有 777 权限,而目录具有 755 权限。
结束语
了解如何更改 Linux 中的文件权限是一项基本技能,因为它有助于防止对各种文件和目录进行未经授权的访问和修改。同时,您还可以更改文件所有权限制文件访问或使用访问控制列表更好地控制 Linux 中的文件权限。






