我是系统管理新手,我有一个与权限相关的查询。我有一个名为 的小组administration
。在组内administration
,我有用户user1
, user2
, user3
, superuser
。所有用户都在该administration
组中。现在,我需要授予用户权限,superuser
以便能够查看/home
其他用户的目录。但是,user1
我不想user2
看到user3
除他自己之外的任何其他用户的主页。 (也就是说,user1
应该只能看到user1
的 home 等)。
我已经创建了用户和组并将所有用户分配给该组。我现在应该如何指定权限superuser
?
换句话说,我正在考虑有两个组(例如NormalUsers
和Superuser
)。该NormalUsers
组将拥有用户user1
、user2
和user3
。该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 来实现您想要的。不幸的是,这些工具都不容易设置和使用,并且示例远远超出了此处快速回答的范围。