在 Linux 中使用 chown 修改目录所有权

CompTIABeginner
立即练习

介绍

在本实验中,你将学习 chown 命令在 Linux 中修改目录所有权的实际应用。掌握文件和目录的所有权是 Linux 系统管理的基础,对于管理权限和确保共享资源的访问安全至关重要。通过这个动手练习,你将学会如何更改目录的所属组,这是组织协作项目时的常见任务。

你将从搭建必要的环境开始,包括创建一个名为 research 的新用户组并将你的用户添加到该组中。环境准备就绪后,你将创建一个目录并查看其初始所有权详情。本实验的核心部分是使用 chown 命令将该目录重新分配给 research 组。最后,你将使用 ls -l 命令验证所有权是否已成功更新,从而确认你的更改。

准备环境并验证成员身份

在这一步中,你将为后续练习准备必要的用户组。在 Linux 中,文件所有权由一个用户和一个组定义,这实现了灵活的权限管理。我们将创建一个名为 research 的新组,并将当前用户 labex 添加到该组中。这样我们稍后就能将文件和目录的所有权分配给这个特定的组。

首先,让我们创建 research 组。我们将使用 groupadd 命令。由于创建组会修改系统配置文件,我们需要使用 sudo 以管理员权限执行该命令。

在终端中执行以下命令:

sudo groupadd research

该命令执行成功后不会产生任何输出。为了验证组是否已创建,我们可以在 /etc/group 文件中搜索它。该文件包含了系统中所有组的信息。我们将使用 grep 命令来查找与新组对应的行。

grep 'research' /etc/group

你应该会看到类似下面的输出,不过组 ID(数字部分)可能会有所不同:

research:x:5003:

现在组已经存在,下一步是将 labex 用户添加到该组中。我们将使用 usermod 命令(意为用户修改)。-aG 选项非常重要:-a 表示追加(append),而 -G 指定补充组。如果不使用 -a,你可能会将用户从所有其他组中移除。

运行此命令将 labex 添加到 research 组:

sudo usermod -aG research labex

同样,如果执行成功,该命令不会产生任何输出。让我们再次检查 /etc/group 文件来验证更改。

grep 'research' /etc/group

输出现在应该在行尾显示 labex,表明该用户已是该组的成员。

research:x:5003:labex

随着 research 组的创建和 labex 用户的分配,我们的环境现在已经为接下来的文件和目录所有权管理步骤做好了准备。

创建目录并检查其初始所有权

在这一步中,你将在项目文件夹内创建一个新目录,然后检查其默认的所有权设置。每当在 Linux 中创建新的文件或目录时,系统都会自动分配所有权。通常情况下,所有者是创建它的用户,而所属组是该用户的初始组。

你当前的工作目录是 /home/labex/project。我们将在这里创建一个名为 RandD 的新目录。为此我们将使用 mkdir 命令(意为创建目录)。

执行以下命令创建目录:

mkdir RandD

现在 RandD 目录已经创建,让我们检查它的属性,特别是所有权。我们可以使用 ls -l 命令来完成。-l 选项告诉 ls 使用「长列表」格式,这会提供有关文件和目录的详细信息。

在终端中运行此命令:

ls -l

你将看到当前位置的文件和目录列表。找到对应 RandD 的那一行。输出应该类似于:

drwxrwxr-x 2 labex labex 6 Jun 26 10:28 RandD

让我们分析一下这一行中关于所有权的部分。第三列显示了所有者用户,即 labex。第四列显示了所属组,同样是 labex。这证实了在默认情况下,新目录由创建它的用户(labex)及其初始组(labex)所有。

在下一步中,你将学习如何更改这些默认的所有权设置。

使用 chown 命令更改目录所有权

在这一步中,你将使用 chown 命令更改 RandD 目录的所有权。这是系统管理员在管理共享项目目录时的常见任务。我们的目标是保持所有者用户为 labex,但将所属组更改为我们在第一步中创建的 research 组。这将允许 research 组的任何成员根据为该组设置的权限在目录中进行协作。

更改所有权的命令是 chown(意为更改所有者)。通用语法为 chown [用户]:[组] [文件/目录]

要将 RandD 目录的所有权更改为用户 labex 和组 research,请运行以下命令。我们使用 sudo 是因为修改所属组(即使是你拥有的目录)通常需要提升权限。

在当前处于 ~/project 目录的终端中执行此命令:

sudo chown labex:research RandD

如果命令执行成功,它不会产生任何输出。更改会静默生效。

你现在已成功更改了 RandD 目录的所有权。在最后一步中,你将直观地验证这一更改。

使用 ls -l 验证新的目录所有权

在这一步中,你将确认上一步中所做的所有权更改是否成功。在系统管理中,始终验证命令是否达到了预期效果是一个至关重要的习惯。我们将使用与之前相同的 ls -l 命令来检查目录属性。

你的终端应该仍处于 ~/project 目录。要查看 RandD 目录更新后的所有权详情,请再次运行 ls -l 命令。

ls -l

检查 RandD 目录的输出行。它现在应该反映了新的所属组。输出将类似于:

drwxrwxr-x 2 labex research 6 Jun 26 10:28 RandD

将此结果与你在步骤 2 中看到的输出进行比较。第三列(所有者用户)仍然是 labex。然而,第四列(所属组)现在已从 labex 更改为 research。这证实了你的 chown 命令工作正常。

你已成功创建了一个目录,更改了其所属组以促进协作,并验证了该更改。

总结

在本实验中,你学习了在 Linux 环境中管理目录所有权的关键步骤。你首先准备了必要的用户和组设置,包括使用 sudo groupadd 命令创建一个名为 research 的新组。接着,你使用 sudo usermod -aG 将当前用户 labex 添加到该新组中,并通过检查 /etc/group 文件验证了这些更改。

在搭建好环境后,你创建了一个新目录并使用 ls -l 命令检查了其默认所有权。练习的核心技能是使用 chown 命令将目录的所属组修改为新创建的 research 组。最后,你通过再次运行 ls -l 确认了更改成功,结果显示该目录的所属组已更新。