我在获取通过 samba 共享的文件夹的正确访问权限时遇到了一些问题和nfs. 连接方式如下:
┌────────────┐ ┌──────────────┐ ┌──────────────┐
│ NFS-Server ├────┤ NFS Client ├────┤ Samba Client │
│ │ │ Samba Server │ │ │
└────────────┘ └──────────────┘ └──────────────┘
中间的机器是一台共享开发机器(运行 Linux)。Samba 客户端通常是 Windows。之所以这样连接,是因为网络策略/防火墙。强烈建议不要直接通过 Samba 访问 NFS 服务器。
此外,此设置的副作用是每个人都可以通过 Samba 访问开发机器。
导出的 NFS 资源应由特定组读取/写入。我使用 Unix ACL 实现了这一点。当直接通过开发机器(NFS 客户端)访问共享时,这已经给我带来了麻烦。似乎没有mask
妥善保存。
我在网上找到了一些涉及该主题的资源,但我仍然无法理解为什么/如何发生这种情况。
我还遇到了与使用设置的 ACL 不同的 NFSv4 ACL setfacl
。我也尝试过尝试这些 ACL,但运行命令时出现了错误:
[11:24:32] michel@BBS-extractor coftp $ nfs4_getfacl .
Operation to request attribute not supported.
我以为这可能是与挂载选项有关的问题。但是,底层 FS 是一个ext4
卷。这与 NFS 无关……对吗?
有人能向我解释一下这里发生了什么吗?为什么mask
使用 NFS 时会忽略默认值?
作为一个实际的例子,让我给你根文件夹的 ACL:
[11:30:26] michel@BBS-extractor coftp $ getfacl .
# file: .
# owner: coftp
# group: coftp
# flags: -s-
user::rwx
group::rwx
group:coftp:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:coftp:rwx
default:mask::rwx
default:other::r-x
test
在远程计算机上创建一个名为的文件夹后,我得到了这个:
[11:30:26] michel@BBS-extractor coftp $ getfacl test
# file: test
# owner: michel
# group: coftp
# flags: -s-
user::rwx
group::rwx #effective:r-x
group:coftp:rwx #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:group::rwx
default:group:coftp:rwx
default:mask::rwx
default:other::r-x
这表明,组“coftp”不具有对此文件夹的写访问权限,尽管在根文件夹的 ACL 中,它应该具有该权限。原因是mask
。根文件夹指定了一个默认掩码,但在通过 NFS 访问文件夹时,它似乎被忽略/更改了。