在 Linux/Unix 中更改文件夹和目录的权限

Nilesh Katuwal 2023年1月30日
  1. Unix/Linux 系统中的文件所有权
  2. 在 Linux 中查看文件权限
  3. 更改 Unix/Linux 系统中的文件权限
  4. 在 Linux 中更改组和所有者
  5. 在 Linux 中更改所有权命令
  6. 在 Linux 的绝对模式下使用 chmod
在 Linux/Unix 中更改文件夹和目录的权限

文件权限系统是 Linux 操作系统的基本安全元素之一。

这些功能允许我们调整文件权限和访问模式。我们提供基于适当权限的权限,以避免在用户未获得对文件和文件夹的适当访问权限时可能出现的漏洞。

Unix/Linux 系统中的文件所有权

在 Unix/Linux 系统中,文件和目录的所有权分为三种类型。文件的分配所有者有权根据它收到的权限对其进行更改。

  • 所有者权限:文件所有者的权限指定文件所有者可以执行的功能。由于创建文件的用户成为其所有者,因此用户也称为所有者。
  • 按组划分的权限:组的权限决定了如果用户是该组的成员,他们可以对文件执行哪些活动。
  • 附加权限:其他用户的权限定义了他们可以对文件执行的操作。

每个文件最初都有三个访问选项。它们如下:

  • Read (r):它允许你检索文件的内容,但不能写入它们。它将使你能够接收在目录中找到的文件和目录的列表。
  • Write (w):它使你能够向文件添加新数据或更改现有数据,以及创建和修改文件和目录。
  • Execute (x):如果程序没有执行标志,则无法运行。为所有程序和脚本设置此属性。系统使用它来确定文件是否应该作为程序启动。

在 Linux 中查看文件权限

当然,你可以使用 Linux 上的文件管理器来搜索文件权限。它们都支持此功能,但你将通过这种方式收到部分信息。

使用带有 -l 参数的 ls 命令来获取所有标志的完整详细信息。将显示目录中的所有文件,以及它们的属性和位。

在存储文件的文件夹中运行以下命令以查找 Linux 文件的权限:

$ ls -l

我在其中创建了一个文件夹和两个文件,testtestfile

输出:

total 0
-rw-rw-r-- 1 user user 0 Jan 14 01:00 test
-rw-rw-r-- 1 user user 0 Jan 14 01:00 testfile

第一列表示各种访问模式或与文件或目录相关的权限。然后是权利组,首先是所有者,然后是组,然后是其他所有人。

让我们仔细看看权限标志的条件值是什么意思:

  • --- - 完全没有权利;
  • --x - 仅允许文件作为程序执行,但不能更改或读取;
  • -w- - 只允许写入和修改文件;
  • -wx - 允许修改和执行,但在目录的情况下,你无法查看其内容;
  • r-- - 只读权限;
  • rx - 只能读取和执行,没有写入权限;
  • rw- - 读写权限,但不能执行;
  • rwx - 所有权利;
  • --s - 当设置 SUIDSGID 位时,所有者的 SUID 显示在字段中,而组的 SGID 显示在字段中;
  • --t - 设置了 sticky-bit,这意味着用户不能删除这个文件。

更改 Unix/Linux 系统中的文件权限

chmod 是一个更改模式命令,用于更改文件或目录的权限。chmod 的两种使用方式是符号模式和绝对模式。

在符号模式下使用 chmod

符号模式是学习者调整文件或目录权限最直接的方法。

使用下表中的运算符,你可以添加、删除或指定你想要的具有符号权限的权限集。

chmod 运算符 描述
+ 指定的权限被添加到文件或目录。
- 删除文件或目录的指定权限。
= 设置指定用户的权限。

让我们看一个例子。在测试中运行 ls -l 时,你会看到权限如下:

$ ls -l test

输出:

-rw-rw-r-- 1 user user 0 Jan 14 01:00 test

然后在测试中运行上表中的每个示例 chmod 命令,然后运行 ​​ls -l 以查看权限更改。

$ chmod o+wx test
$ ls -l test

这里,o 表示其他用户,w 表示写入,x 表示执行。 + 用于将指定的权限添加到 test 文件。

输出:

-rw-rw-rwx 1 user user 0 Jan 14 01:00 test

我们可以看到上面两个输出的差异。 -rw-rw-r-- 更改为 -rw-rw-rwx。上述命令为其他用户添加了 rw 权限。

在 Linux 中更改组和所有者

当他们在 Unix 上创建一个帐户时,每个用户都会被赋予一个所有者 ID 和一个组 ID。以上所有权限也是根据所有者和组分配的。

更改组和所有者主要有两个命令。

  • chownchown 命令,代表 change owner,用于更改文件的所有者。
  • chgrpchgrp 命令,代表 change group,用于更改文件的组。

使用的权限组是:

  • u – 所有者
  • g - 组
  • o - 其他
  • a - 所有用户

在 Linux 中更改所有权命令

chown 命令用于更改文件的所有权。

以下是基本语法:

$ chown [name] [filename]

系统用户的名称或系统用户的用户标识(UID)可以作为用户的值。

同样,要更改文件的组所有者:

$ chgrp [group_name] [filename]

在 Linux 的绝对模式下使用 chmod

文件权限也可以用数字代码更改。接入方式的等效数字代码如下:

数字 访问模式
0 ---
1 -x
2 -w-
3 -wx
4 r-
5 r-x
6 rw-
7 rwx

例如,chmod 711 filename 授予所有者所有权限,而所有其他用户仅授予执行权限。

让我们看看文件 testfile 的权限。

$ ls -l testfile

输出:

-rw-rw-r-- 1 user user 0 Jan 14 01:00 testfile

现在,使用带有 chmod 的数字代码。

$ chmod 711 testfile
$ ls -l testfile

输出:

-rwx--x--x 1 user user 0 Jan 14 01:00 testfile

如输出所示,文件权限已更改。