允许用户读取其他用户的主目录

允许用户读取其他用户的主目录

我是系统管理新手,我有一个与权限相关的查询。我有一个名为 的小组administration。在组内administration,我有用户user1, user2, user3, superuser。所有用户都在该administration组中。现在,我需要授予用户权限,superuser以便能够查看/home其他用户的目录。但是,user1我不想user2看到user3除他自己之外的任何其他用户的主页。 (也就是说,user1应该只能看到user1的 home 等)。

我已经创建了用户和组并将所有用户分配给该组。我现在应该如何指定权限superuser

换句话说,我正在考虑有两个组(例如NormalUsersSuperuser)。该NormalUsers组将拥有用户user1user2user3。该Superuser组将只有用户Superuser。现在,我需要Superuser对组中用户的文件具有完全访问权限NormalUsers。这在 Linux 中可能吗?

答案1

如果用户愿意合作,您可以使用访问控制列表(访问控制列表)。在(和朋友)的主目录上设置 ACL user1,授予对superuser.还为新创建的文件设置默认 ACL,以及现有文件的 ACL。

setfacl -R -m user:superuser:rx ~user1
setfacl -d -R -m user:superuser:rx ~user1

user1如果他愿意,可以更改其文件上的 ACL。即使user1合作,新文件也可能意外地无法读取,例如,当解压具有限制性权限的存档时,或者因为某些应用程序故意创建只能由用户读取的文件(例如,邮件客户端倾向于这样做)。

如果您想始终授予superuser读取权限user1对文件的绑定文件系统

mkdir -p ~superuser/spyglass/user1
chown superuser ~superuser/spyglass
chmod 700 ~superuser/spyglass
bindfs -p a+rD-w ~user1 ~superuser/spyglass/user1

通过 ~superuser/spyglass/user1 访问的文件是世界可读的。除了权限之外,还有的主目录~superuser/spyglass/user1的视图。user1由于superuser是唯一可以访问的用户~superuser/spyglass,因此只能superuser从中受益。此方法是自动的,user1无法选择退出。

答案2

您可以使用 ACL 向任意组授予对特定目录的访问权限。

例如,如果您运行setfacl -m g:dba:rwx /home/foo,则 dba 组的成员将拥有该目录的 rwx 权限,无论哪个组拥有该目录。

您可能还需要设置“默认”ACL(目录内新创建的对象的 ACL)以包含此权限。

答案3

不幸的是,实际上没有任何方法可以在普通 Linux 上直接执行此操作。

您也许可以在 sudoers 中为部分管理员创建一个新组,并包含您希望允许他们运行的可接受命令的白名单。

然而,为了准确地实现您所要求的,您必须使用 Apparmor 或 SELinux 来实现您想要的。不幸的是,这些工具都不容易设置和使用,并且示例远远超出了此处快速回答的范围。

相关内容