首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等价于NFS all_squash

等价于NFS all_squash
EN

Unix & Linux用户
提问于 2018-08-22 18:43:12
回答 1查看 3K关注 0票数 1

我有一个不同寻常的要求,我需要多次在客户端上挂载相同的文件系统,但是每次挂载都根据底层目录和文件的组权限提供底层数据的不同视图。

我在过去通过NFS和all_squash和anongid /etc/exports选项实现了这一点,使特定的挂载看起来像是用户有一个特定的组ID,它通过强制访问用户组有效地过滤了对底层文件系统的访问。

不幸的是,我不能在这个场景中使用它,因为文件系统将是Amazon (实际上是NFS服务器,但没有任何配置选项)。

我看过bindfs,这提供了一个force-group选项,但这与我想要的相反,因为它强制所有文件都有一个特定的组,而不是强制客户机有一个特定的组,查看文件没有改变。

我确实看到有人提到了一种叫做filterfs的东西,但它似乎早就死了。

有谁知道如何通过临时有效地更改用户组来获取单个用户的文件系统的过滤视图(而不使用sudo,因为用户是一个webserver守护进程)。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-08-29 11:06:57

感谢@sourcejedi为我指明了正确的方向。

在最初的NFS设置中,all_squash用于使守护进程用户看起来有特定的组(由anongid设置)。对于本例,假设组ID为601。因此,在原始文件系统上的这个视图可以根据挂载的文件系统的anongid是601对文件/目录强制执行权限。权限似乎是在NFS挂载级别上计算的,与守护进程用户的实际组权限无关。另一个NFS挂载到同一个文件系统上,具有不同的all_squash设置,有效地显示了文件的不同视图,就好像用户具有不同的组成员身份一样。

使用bindfs --map可以通过稍微不同的设置实现相同的结果。示例配置绑定文件系统,使得底层文件系统中任何具有组ID 601的文件/目录似乎在挂载的文件系统中具有组ID 599:

bindfs --map=@601/@599 --create-for-group=601 --create-for-user=600 --create-with-perms='u=rwD:g=rwD:o=' $FS_ROOT $MOUNT_ROOT/view601

现在,当在$MOUNT_ROOT/view601中列出文件时,守护进程用户会看到任何有组601而有组599的文件。通过授予组gid 599的守护进程成员资格,可以根据挂载再次有效地强制权限。如果一个不同的挂载映射到gid 602到599,同一底层文件系统中的文件将对同一个用户可用,如果它们最初有组602 (而不是601),现在映射到599,使它们可以用于守护进程。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/464209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档