使用 chown 命令修改 Linux 目录所有权

CompTIACompTIABeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

引言

在本实验中,你将学习 chown 命令在 Linux 中修改目录所有权的实际应用。掌握文件和目录所有权是 Linux 系统管理的基础,对于管理权限和保护共享资源的访问至关重要。本次实践操作将指导你完成更改目录组所有权的过程,这是组织协作项目的一项常见任务。

你将首先设置必要的环境,包括创建一个名为 research 的新组并将你的用户添加到其中。设置完成后,你将创建一个目录并检查其初始所有权详情。本实验的核心部分是使用 chown 命令将目录重新分配给 research 组。最后,你将使用 ls -l 命令来验证所有权是否已成功更新,以确认你的更改。

准备环境和验证组 membership

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

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

在你的终端中执行以下命令:

sudo groupadd research

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

grep 'research' /etc/group

你应该会看到类似以下的输出,尽管组 ID(数字)可能不同:

research:x:5003:

现在组已经存在,下一步是将其添加 labex 用户。我们将使用 usermod 命令,它是 "user modify" 的缩写。-aG 选项很重要:-a 表示追加(append),-G 指定附加组(supplementary group(s))。如果没有 -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 命令用于此目的,它是 "make directory" 的缩写。

执行以下命令创建目录:

mkdir RandD

现在 RandD 目录已创建,让我们检查其属性,特别是其所有权。我们可以使用 ls -l 命令来完成此操作。-l 选项告诉 ls 使用“长列表”(long listing)格式,该格式提供有关文件和目录的详细信息。

在你的终端中运行此命令:

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,它是 "change owner" 的缩写。通用语法是 chown [user]:[group] [file/directory]

要将 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 命令确认了更改的成功,该命令显示了目录更新后的组所有者。