请原谅我的无知,但我似乎无法想出解决这个问题的方法。
我想创建一个用户,该用户对位于 /home 中的每个用户的主目录具有读取权限。
我是否需要 acl,或者我可以通过 chmod 实现它吗?
提前致谢。
答案1
您的所有用户是否都有一个共同的组?例如,在某些系统上,该staff
组被提供用作全局组。如果您创建用户的主目录,使他们属于该全局组,则只需对其设置读取权限即可允许该组的所有成员(即每个人)查看其他人的文件。但请注意,用户完全可以自由地再次删除读取权限,从而破坏此方案,并且在某些系统上,如果staff
不是用户的主要组,则他们在其下创建的任何文件~
将不属于该组staff
,因此可能不会可读。
但是,如果您想要比这更多的控制,只允许一个用户查看所有主目录,则需要使用 ACL。根据所涉及的用户数量,这可能很快就会成为管理上的噩梦。我们的系统管理员团队不再使用 ACL,只是因为管理它们占用了他们太多的时间。
编辑
我突然想到,根据您希望该用户能够执行的操作,您也许能够通过 shell 脚本和精心设计的sudo
规则来实现您想要的目标。没有 ACL,无需担心权限和所有权,但如果您不熟悉文件的格式sudoers
,则需要彻底阅读手册页,以确保不会打开系统以供滥用。
答案2
我当时已经过了一半了D_Bye的回答当我意识到我可以用另一种方式来做这件事,不需要安装和/etc/fstab
:
我创建了一个帐户,其主目录设置为 /home 并设置 Pure-FTPd 将每个用户都包含在他的主目录中(ChrootEveryone YES)。
这意味着该帐户可以浏览 /home 中的每个目录,但没有写入权限。
答案3
ACL 会有问题,因为您需要确保在每个文件上都设置了它们。
使用绑定文件系统创建/home
具有不同访问权限的视图。创建一个只有监督者(可以读取 中所有文件的用户/home
)才能访问的挂载点:
mkdir -p ~overseer/private/home
chmod 700 ~overseer/private
以 root 身份创建只读视图(以便进程bindfs
可以读取它需要的所有内容):
bindfs -M overseer -p 000,ud=rx /home ~overseer/private/home