文件所有权(chown)在linux中有什么应用?

文件所有权(chown)在linux中有什么应用?

我在更改系统中特定用户组的权限时遇到了问题。

假设我有四个用户 u1,v1 和 u2,v2 以及两个组 g1 和 g2。 u1,v1 属于 g1 组,u2,v2 分别属于 g2 组。

现在我想要一个名为“foo.bar”的文件只能由 g1 组中的 u1 访问(rwx)。为此,我输入了以下内容:

sudo chown u1:g1 foo.bar
sudo chmod 700 foo.bar

但我有以下问题:

第一的。将文件所有权授予一个组,我们可以使用 chmod 命令限制其他用户,这有什么用?(文件权限中的第三个字段 rwx-rwx-读写) chown 在这里有什么应用?

让我为这个问题举一个例子:我只希望 g1 用户可以访问“foo.bar”,而不是系统中的任何用户。可以只使用 chown 命令来完成吗?如果不是它的应用是什么!

第二。我们如何为特定组授予特定权限?例如,我希望 g1 组对其拥有的任何文件仅具有读取权限。因此,当我在终端中输入以下内容时

sudo chown :g1 foo.bar

如果没有更多命令,所有 u1 和 v1 用户对此文件只有读取权限。只能通过 chown 才能实现吗?

我希望我向大家阐明了我的观点。

答案1

chown 和 chmod 有两个不同的目的:

  • chown定义谁拥有该文件。
  • chmod定义了谁可以做什么。

  1. 要限制对特定组的访问:该组必须是文件的所有者,并且必须正确设置权限位。

    sudo chown :g1 foo.bar && sudo chmod 770 foo.bar
    

    最后 3 个权限位与所有其他用户相关:Chown 命令设置所有权。非所有者的用户将关注最后 3 个权限位。

  2. 如果要为文件所有者组设置特定权限:sudo chmod 770 foo.bar.这也可以在创建文件时设置掩码

另外,如果您希望每个组拥有不同的权限,您可能需要查看 ACL 权限。这将允许您设置例如r--g1、rwxg2 和---其他。

答案2

现在我想要一个只能由组内foo.bar访问(rwx)的文件。为此,我输入了以下内容:u1g1

sudo chown u1:g1 foo.bar
sudo chmod 700 foo.bar

u1这将为用户(仅)授予文件权限。您将文件设置到的组并不重要,因为该组的成员没有设置任何权限。或者更确切地说,他们具有与“其他”完全相同的权限,因此给定用户访问权限是由“组”权限还是“其他”权限决定并不重要。

请注意,您不能直接要求两个都要匹配的用户和组。u1无论其组成员身份如何,都可以访问上述文件。

您可以做的是创建一个属于 例如 的目录root.g1,只能由用户和组访问;然后是其中的一个文件,该文件由用户拥有u1并只能由用户访问。这最常用于例如 crontabs,它们由特定用户拥有,但只能由特定(setgid)工具修改。例如,参见/var/spool/cron/crontabs/任何 Debian/Ubuntu 系统。

将文件所有权授予一个组有什么用,我们可以使用 chmod 命令限制其他用户...我只想foo.bar从用户访问g1,而不是系统中的任何[其他]用户访问。

您将文件的组设置为g1,并授予该组您喜欢的任何访问权限。例如,chown a.g1 file && chmod 660 file只允许用户a和组成员g1读取和写入文件。 (此外,用户a可以更改权限。如果您想阻止这种情况,您需要使该文件归某个不会执行此操作的用户所有。)

我们如何向特定组授予特定权限?例如,我希望g1组对其拥有的任何文件仅具有读取权限。

你不能。权限是文件的属性,而不是用户或组的属性。在上面的情况下,文件被授予了组的读/写权限,所以这就是发生的情况。如果您需要的话,您需要注意不要让任何文件具有该组的写入权限。

[评论中的问题]chown主要用于向组授予所有权,因此稍后我们可以使用chmod命令 yes?将组用户限制到该文件。否则我们可以通过单独使用来限制除所有者之外的所有其他用户chmod,而无需使用chown

嗯,差不多了。当然,如果有保证的话,也root可以用来chown实际更改拥有用户。这至少会在创建新用户时发生:必须以某种方式设置主目录的所有权。

(如果用户的主要组合适,您可以使用chmodwithout chown,但这只是跳过不必要的chown。)

相关内容