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


10

我是系统管理的新手,并且有一个与权限相关的查询。我有一个小组administration。内部administration组,我有用户user1user2user3superuser。所有用户都在administration组中。现在,我需要向用户授予权限,superuser以便能够查看/home其他用户的目录。不过,我不想user1user2user3看到本人以外的任何其他用户的家中。(也就是说,user1应该只能看到user1的房屋,依此类推)。

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

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



在上一个问题中,我更关心编辑/ etc / sudoers文件并使用户成为部分管理员。在这里,我正在尝试修改本地用户的权限。是的,这与要实现的目标相似,但是在这里尝试采用其他方法。
拉梅什(Ramesh)2013年

Answers:


10

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

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

user1 如果愿意,可以更改其文件上的ACL。

如果您希望始终授予superuseruser1文件的读取权限,则可以使用bindfs创建具有不同权限的用户主目录的另一个视图。

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

通过〜superuser / spyglass / user1访问的文件是世界可读的。除权限外,~superuser/spyglass/user1还是user1的主目录视图。由于superuser是唯一可以访问的用户,因此~superuser/spyglass只能superuser从中受益。


在我的系统上,权限和用户名被交换:setfacl -R -m user:superuser:rx ~user1
的Aurelien奥姆斯

10

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

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

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


是的,完全是..我也发现了相同的问题,但是仍然不确定为LDAP用户授予服务器中的ACL是否是一个好主意。
Ramesh 2013年

@Ramesh好吧,如果他们是系统上的用户(因为您使用的是nss-ldap,sssd等),那么我不确定为什么它不能正常运行。
derobert 2013年

我试图在测试床上复制它。当以用户身份登录时(例如foo),我看到一条警告消息:“权限应设置为644”。我相信警告可以忽略。但是,我不希望实验室用户知道其用户帐户已被盗用。在setfacl命令中将rwx更改为r时,看不到foo的目录。
Ramesh 2013年

2
@Ramesh您需要+ x才能真正浏览目录。我不确定是什么告诉您目录应该为644,这很愚蠢,应该为755或类似的目录。但是,无论哪种方式,用户都会在ls的权限字段中看到+,并且可以运行getfacl来查看它-这不是秘密。
derobert 2013年

好的,我收到警告消息,用户的$ HOME目录必须归用户所有,而其他用户不可写。我在setacl命令中删除了写权限,但现在看不到警告消息。
拉梅什(Ramesh)2013年

0

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

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

但是,要完全实现您的要求,就必须使用Apparmor或SELinux来实现所需的功能。不幸的是,这些工具都不容易设置和使用,并且示例远远超出了此处的快速解答范围。


1
Linux已经支持ACL已有一段时间了。ACL使您可以执行此操作。
derobert 2013年

是的,我只是找到了解决方案并更新了答案。但是,我仍然不知道它是否可以在服务器中使用,对于LDAP用户也可以使用。
Ramesh 2013年

@derobert据我了解,不可能通过sudo授予某人根级别的权限,同时使用ACL来限制访问。您必须使用SELinux或其他MAC来实现。
瑞士时间

1
我认为,当OP将用户称为“超级用户”时,他的意思是字面意义-而非root。
derobert
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.