我在更改系统中特定用户组的权限时遇到了问题。
假设我有四个用户 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
定义了谁可以做什么。
要限制对特定组的访问:该组必须是文件的所有者,并且必须正确设置权限位。
sudo chown :g1 foo.bar && sudo chmod 770 foo.bar
最后 3 个权限位与所有其他用户相关:Chown 命令设置所有权。非所有者的用户将关注最后 3 个权限位。
如果要为文件所有者组设置特定权限:
sudo chmod 770 foo.bar
.这也可以在创建文件时设置掩码。
另外,如果您希望每个组拥有不同的权限,您可能需要查看 ACL 权限。这将允许您设置例如r--
g1、rwx
g2 和---
其他。
答案2
现在我想要一个只能由组内
foo.bar
访问(rwx
)的文件。为此,我输入了以下内容:u1
g1
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
实际更改拥有用户。这至少会在创建新用户时发生:必须以某种方式设置主目录的所有权。
(如果用户的主要组合适,您可以使用chmod
without chown
,但这只是跳过不必要的chown
。)