Linux 文件所有权和组的完整指南

当您在 Linux 上遇到文件权限问题时,您的挫败感通常与与文件所有者或组有关的设置有关。 如果您经常使用 Linux,在某一时刻,您将不得不更改文件或目录的所有者或组设置来解决问题,这几乎是不可避免的。

在本文中,我们将揭开 Linux 文件所有者和组的概念的神秘面纱,并向您展示它们如何影响谁可以访问和操作您系统上的数据。

如何在 Linux 中查找文件的所有者和组

在 Linux 命令行中,您可以使用以下命令查看所有者和组权限设置 ls -l (这是一个带有小写 L 的破折号)命令。 这 -l switch 将在列中格式化列表,为您提供比标准 ls 命令输出更多的文件详细信息。

第一列显示文件类型及其权限设置。 第二列显示文件的链接数(通常为 1)。 第三个和第四个分别显示所有者和组。 它们通常(但不总是)相同。

第一列中显示的设置代表在 Linux 中确定文件权限的位。 第一个字符代表文件类型。 为了 example,“-”表示常规文件,“d”表示目录。 以下三个位(上面突出显示)代表文件所有者的权限 –r 供阅读, w 写,和 X 执行。

任何未启用的权限都将显示为破折号。 然后,在目录列表的第三列中,您会看到拥有该文件的用户。

第一列(上面突出显示)中的第二组三位表示有权访问此文件的组的权限。 它们的工作方式与上述相同。 它们将是破折号或 r、w 和 x 之一。

如何在 Linux 上更改文件的所有者

对于大多数 Linux 发行版,您需要成为 root 用户或具有管理权限的用户(即您可以使用 sudo) 更改文件或目录的所有者。

将文件或目录的所有权授予任何用户将使该用户可以完全自由地对文件做任何他们想做的事情。 他们将能够阅读、修改、删除它,并更改指示其他系统用户可以使用它做什么的权限。

要更改文件或目录的所有者,请使用 chown 命令格式如下:

sudo chown <user> <file or directory>

更改文件的所有者不会影响该文件的组设置或权限。

如何在 Linux 上更改文件的组设置

如果您是文件的所有者,则可以将其组设置更改为任何现有组。 如果您不是所有者,则需要 root 或 sudo 特权。

要更改组对文件或目录的访问权限,请使用 chgrp 命令格式如下:

chgrp <groupname> <file or directory>

这将根据项目的组权限设置授予所选组的所有成员访问文件或目录的权限。

如何同时更改文件的所有者和组

如果您需要修改文件或目录的所有者和组设置,您可以使用单个命令来完成。 由于它涉及更改所有者,因此您将需要具有超级用户权限。

为此,请使用 chown 命令同上,但同时指定新所有者和新组,用冒号分隔,不带空格。

sudo chown <newowner>:<newgroup> <file or directory>

如何使用 Linux 终端创建组

组允许您快速轻松地为多个用户分配访问权限。 Linux 系统上的用户一次可以是多个组的成员。 您需要成为 root 用户或拥有 sudo 创建组的权限。

要将新组添加到系统,请使用 组添加 命令。

sudo groupadd <groupname>

为确保您的组已创建,您可以使用 获得性 命令列出所有组或将其与 grep 寻找特定的群体。

getent group
getent group | grep <groupname>

如果命令的输出显示您尝试创建的组的名称,这表明它已成功创建,您可以向其中添加用户。 您还可以查看我们在 Linux 上管理组的指南,了解有关设置新组的更多详细信息。

如何在 Linux 上将用户添加到组

将用户添加到组是通过 用户模式 命令。 同样,您将需要超级用户权限,并且用户和组都必须已经存在。 以下命令会将用户添加到组中:

sudo usermod -a -G <groupname> <username>

-一种 上面命令中的 switch 代表 附加 并且很重要。 如果您将用户添加到组而不使用 -一种 标志,用户将从他们可能已经属于的任何其他组中删除。 这 -G flag 表示您希望将用户添加到切换后的组名中。

如何从组中删除用户

从组中删除用户是通过 gpasswd 命令。 Enter 命令(使用 sudo) 格式如下。

sudo gpasswd -d <username> <groupname>

这将从指定组中删除指定用户,而保留任何其他组成员身份。

如何使用 Linux 终端删除组

最后,要在系统上管理组,您需要知道的最后一件事是删除组。 首先,重要的是要注意一个组必须是空的。 如果您要删除的组很小,您可以使用上面的命令手动删除每个成员。

如果群组中的成员不只少数,并且您需要在删除群组之前将其删除,您可以使用 群聚 命令。 Enter 使用以下格式的命令从特定组中删除所有用户:

sudo groupmems -p -g <groupname>

从组中删除所有成员后,您可以使用 群德尔 命令,如下。

sudo groupdel <groupname>

Linux 用户组给你更大的控制权

使用上面的命令,您将能够管理 Linux 系统上任何文件或目录的所有者和组访问设置。

如果您或您系统上的用户在访问某些内容时遇到问题,确保正确设置所有者和组权限通常是找到解决方案的良好第一步。