CIFS 和 NFS:权限和底层文件系统

CIFS 和 NFS:权限和底层文件系统

我读了一些资料,但还是不太清楚。我的理解是 NFS 权限相当黑白分明,由导出文件控制(我相信有一些选项可以让 NFS 客户端尊重本地文件系统权限,但我通常看不到这样做)。底层文件系统不会为 NFS 客户端委派权限。CIFS 如何管理权限?Windows ACL 或 NTFS 权限是否控制客户端访问?底层文件系统是否参与其中?

具体来说,我对将文件从 NFS 共享复制到 CIFS 共享感到好奇。使用 rsync -a 时,是否应保留权限?底层文件系统是否在 NFS 或 CIFS 共享上使用 inode 是否重要?

答案1

这是一个相当广泛的问题,并且有点取决于 NFS 版本。

然而:

NFS 允许您在导出时指定安全模式。它还允许您对可以挂载导出的服务器施加限制。(完全限制挂载,或强制执行只读/无 root 权限)。

这与权限完全无关。如果您的安全模式是“sys”,则意味着远程系统决定如何处理身份验证 - 您正在将信任委托给远程服务器 - 如果安装客户端说“嘿,我是 UID 123”,那么您的服务器就会信任他们。

可以使用 Kerberos 安全模式导出 NFS,这种模式的信任度较低。但是,设置和运行起来并不容易,因此使用得并不多。但是,Kerberos 将信任关系转移到受信任的服务器 - Kerberos 域控制器。(如果您更了解 Windows,您会发现它与 Windows 域控制器非常相似 - 这也不是偶然的)。

使用 Kerberos,您需要通过第三方进行身份验证,然后根据权限仲裁您的文件访问。NFS <= V3 允许“标准”用户、组、其他读/写/执行权限系统。NFSv4 支持更详细的访问控制列表。这些也没有被广泛使用,因为它们更复杂。

但是,当您使用 CIFS 时,您是从不同的角度来考虑问题的。CIFS 共享完全与用户上下文有关。服务器不会挂载 CIFS 共享,用户会映射到它。CIFS 用户身份验证已内置于其中。现在(通常)这也是通过 Kerberos 完成的。

我向服务器提供我的用户凭证(Kerberos 票证)*,服务器可以查看分享权限来看看我是否可以访问它。

与共享权限分开的是文件系统权限,一旦我被授权共享访问,这些权限也会被应用。

我确信 CIFS/Kerberos 身份验证和许可与 NFSv4/Kerberos 之间存在一定程度的融合,这并不令人意外。事实上,我们目前正在融合我们的托管环境以使用通用许可。

但是如果您不使用 NFSv4,您仍然必须处理 CIFS 组/基于角色的权限与 Unix 权限之间的映射。

  • 您不必使用 Kerberos 与 Windows 对话 - 您可以使用 NTLM。这不是一个好计划,但工作方式大致相同 - 至少从权限/共享映射的角度来看。

相关内容