了解 Unix 所有者和 chmod 777

Understanding Unix Owner and chmod 777

我了解,Unix 有 3 个级别的所有权:所有者、组和其他。所有者是创建文件的人,稍后可以使用 'chown' 移动此所有权。但是,我对 chmod 777 到 'others' 或 'groups' 感到困惑。

对文件执行上一个命令也将允许 group/other 中的用户拥有与所有者相同的权限。因此,

  1. 我的理解是否正确:一个文件可以有多个所有者?
  2. 如果 chmod 777 可以帮助完成相同的任务,那么 chown 有什么用?
  3. 'chmod 777 group' 中的用户可以通过命令 chmod u=r filename 限制实际所有者的访问吗?
  1. 该文件只能有“1 个所有者”,但如果您希望有多个 'owners',这就是群组的用武之地。如果爱丽丝和约翰属于名为 'hello' 的群组,并且组 'hello' 被指定为组所有者,然后 alice 和 john 是文件的所有者(作为组的一部分)。然而,在传统意义上,不,只有 1 个所有者。我经常保留根作为指定所有者,然后根据需要合并组。
  2. chmod 用于更改实际文件的权限。当您执行 chmod 777 时,您允许所有者、组和其他人进行 RWX(读、写、执行)访问。它不会取得同样的成功,因为 chmod 实际上并没有改变 chown 的所有权。所以 chmod 是指定义谁可以对文件做什么,chown 是确定谁拥有该文件。
  3. 不,他们不能更改,因为他们不是文件的所有者,但作为组的 'member' 是所有者。该命令实际上是 chmod u-r。 “-”(减号)删除访问权限,“+”(加号)添加。

假设您的系统上有 3 个用户:krishnendu、mindy 和 wodin

krishnendu 属于以下群组:krishnendu、员工、客人

mindy 属于以下组:mindy、员工

wodin 在以下组中:wodin、guests

krishnendu 组的唯一成员是 krishnendu 用户。 mindy 和 wodin 组很相似。

如果您有一个文件 (file1) 由 krishnendu 和组 krishnendu 拥有,模式为 640,则只有 krishnendu 用户可以 read/write 访问该文件。

如果您在不更改模式的情况下对文件进行 chown:chown mindy file1 那么它仍然具有 krishnendu 和模式 640 的组所有权。这意味着 mindy 将具有 read/write 访问权限,但是 krishnendu 用户(因为 krishnendu 是 krishnendu 组的成员)也将具有只读访问权限。

如果您在那之后 chmod 777 file1,那么它仍将由具有 krishnendu 组所有权的 mindy 所有,但现在所有三个用户都将具有对该文件的 read/write/执行访问权限。

一个文件只能有一个所有者。如果您想授予一部分用户访问权限,同时拒绝系统上的其他用户访问,您需要将该用户子集放入一个组中,并使用 chownchgrp 更改文件组所有者。

例如如果您创建文件 file2 和 file3,两者都使用模式 640,然后执行以下操作:

# chown root:staff file2
# chown root:guests file3

那么只有 krishnendu 和 mindy 可以访问 file2,因为他们在 staff 组中,但 wodin 不是。只有 krishnendu 和 wodin 可以访问 file3,因为他们在 guests 组中,但 mindy 不是。

因此将文件模式设置为 777 与更改文件所有者不同。

此外,您通常不想将模式 777 用于任何事情。

如果文件的模式为 777,则除 root 或所有者外,其他任何用户都无法更改所有权或模式。

您不能混淆:访问权限和所有权。

如果某人拥有一个对象,那么它有权对它做任何他想做的事,包括修改访问权限和所有权。请注意,一旦有人为所有权而辞职,他就无法自行取回。所以,如果你拥有一所房子,你可以按照你想要的方式管理它,让人们进入或不进入。

访问权限定义谁可以对文件执行什么操作,与所有权无关。我想你经常不问所有权就进入建筑物,这也是一样。

访问权限只是定义某人(或一组或一组用户)是否有权阅读内容、修改内容或执行内容(至少基本上)。但是所有权、访问权限等属性不是文件内容的一部分,它们是关联的元数据,并且可以以非常特殊的方式修改这些元数据。例如所有权和访问权限只能由所有者修改。

现在:

A file can have multiple owners?

是的,这是可能的,但没有描述的基本访问权限和所有权。在基本的 Unix 中,只能有一个所有者。

What is the use of chown if chmod 777 can help achieve the same task?

chown是所有权转让(你卖掉你的房子)。 chmod只是修改进屋政策的一种方式。

Can a user in 'chmod 777 group' restrict the access of the actual owner by the command chmod u=r filename?

不知道'chmod 777 group'是什么。但是除了所有者(和 root 但 root 是一个非常特殊的用户)之外没有人可以更改任何此类元数据(所有权、访问权限)。