根据标题,我必须创建一个文件,例如:
/home/john/file.ini
我创建了一个用户和一个组,myuser
以及mygroup
,并将它们设置为此的所有者和组file.ini
:
chown myuser:mygroup file.ini
我有另一个名为 的用户mymain
。该用户必须能够读取此文件。我该如何更改权限以允许这样做?
重要提示:我只想允许“mymain”用户读取此文件,而不是所有其他用户。
因此 myuser(文件所有者)和 mymain 应该有访问权限。
答案1
在传统的 Unix 文件权限系统中,这是不可能的:一个文件只有一个所有者。可以创建一个仅包含两个应有访问权限的用户的组,并将其设为文件的所有者组(并向该组授予所需的权限)。但是,这种方法有一些管理开销(并非每个用户都可以创建一个组并将其他用户放入其中)。
然而,许多(大多数)现代文件系统都支持 ACL,而且它们使用起来并不难。如果您想使用 POSIX ACL 为其他用户授予读取 ( r
) 和写入 ( w
) 权限,则可以使用以下命令:
setfacl -m user:mymain:rw file.ini
两个注意事项:
- 必要的工具并不总是安装的。在 Ubuntu/Debian 上,它们位于
acl
包 (sudo apt-get install acl
)中 - 即使使用的文件系统支持 ACL,您的本地文件系统也可能在挂载时不支持 ACL。在这种情况下,您需要修改挂载参数以启用它(例如
ext4
,对于 ,这仅意味着附加,acl
到 中的挂载选项/etc/fstab
)。
答案2
您应该确保用户mymain
是某个组的成员mygroup
,并授予该组权限,例如
chmod g+r <filename>
一些文件系统实现了 ACL(访问控制列表),这些可能对你更有用,但它们超出了我在这里的回答范围。你想要了解 ACL在企业 (ADS) 设置中_
添加
当然,从技术上讲,两个用户不能同时成为同一文件的所有者。此外,如果您想模仿这一点,您应该向组授予完全权限,也许为这两个“所有者”创建一个特殊组,而这实际上模仿所有权的程度将取决于平台(旧式 UNIX-en 在允许 chmod/chown 的规则方面往往非常严格)