通过NFSv4和Samba共享一个文件夹

对于通过samba nfs共享的文件夹,我有一些问题需要解决。 这样连接:

┌────────────┐ ┌──────────────┐ ┌──────────────┐ │ NFS-Server ├────┤ NFS Client ├────┤ Samba Client │ │ │ │ Samba Server │ │ │ └────────────┘ └──────────────┘ └──────────────┘ 

中间的机器是共享的开发机器(运行Linux)。 Samba客户端通常是Windows。 这样连接的原因是因为networking策略/防火墙。 强烈build议不要直接通过Samba访问NFS服务器。

另外,作为一个副作用,这个设置让每个人都可以访问开发机器的samba。

导出的NFS资源应该由特定的组读/写。 我使用Unix ACL来实现这一点。 当直接通过开发机器(NFS客户端)访问共享时,这已经给我带来了麻烦。 看来mask没有妥善保存。

我在networking上发现了一些涉及这个主题的资源,但是我仍然很难理解为什么/如何发生这种情况。

我还遇到了与您使用setfacl设置的ACL不同的NFSv4 ACL。 我试图与这些玩弄,但运行命令,给了我一个错误:

 [11:24:32] michel@BBS-extractor coftp $ nfs4_getfacl . Operation to request attribute not supported. 

我认为这可能是与挂载选项有关的问题。 但是,底层的FS是一个ext4卷。 这与NFS无关…对吗?

有人可以向我解释这里发生了什么? 为什么在使用NFS时忽略默认mask

作为一个实际的例子,让我给你根文件夹的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::rx default:user::rwx default:group::rwx default:group:coftp:rwx default:mask::rwx default:other::rx 

在远程机器上创build一个名为test的文件夹后,我得到这个:

 [11:30:26] michel@BBS-extractor coftp $ getfacl test # file: test # owner: michel # group: coftp # flags: -s- user::rwx group::rwx #effective:rx group:coftp:rwx #effective:rx mask::rx other::rx default:user::rwx default:group::rwx default:group:coftp:rwx default:mask::rwx default:other::rx 

这表明,组“coftp”将不具有对此文件夹的写入权限,尽pipe在根文件夹的ACL中应该有。 原因是mask 。 根文件夹指定一个默认掩码,但是当通过NFS访问文件夹时它似乎被忽略/改变。