我想在 Linux 上的服务器和客户端之间启用文件共享。我不想像 NFSv4 那样依赖机器信任,因为客户端用户将拥有 root 权限。除了 SMB(SAMBA)之外,我还有什么选择?OpenAFS 是否支持用户级身份验证和访问?对于 LAN 来说,使用已安装的 WebDAV/ftp/sshfs 似乎很愚蠢。
答案1
我不确定我是否完全理解:
“我不想依赖像 NFSv4 那样的机器信任,因为客户端用户将拥有 root 权限。”
如果您的意思是客户端用户将在客户端上拥有 root 权限,而您不希望他们在主机上拥有 root 权限,那么您只需不使用“no_root_squash”选项即可。您还可以执行诸如禁用 setuid 之类的操作,以帮助降低服务器对客户端的风险。
您还可以选择将 kerberos 与 NFSv4 结合使用,请参阅此链接。
换句话说,NFSv4 可能为您提供所需的安全性,同时更......(可扩展?)......到处使用 sshfs。它可能仍然不是您想要的,但我不会太快放弃它。
答案2
使用 Kerberos 时,只有 kdc 服务器授予身份验证令牌。客户端计算机本身只能作为主机进行身份验证(如果您将密钥表提供给匹配的 nfs/client-hostname@REALM 主体),并且这只赋予它与 nfs 服务器通信的权利。用户才具有身份验证的能力,而 nfs 服务器只授权他们访问自己的文件。使用 sec=krb5p,服务器还可以防止窥探和更改。
成为 root 不会赋予您的用户不适当的权限。他们获取更多文件访问权限的唯一方法是入侵彼此的机器、入侵 nfs 服务器或 kdc。使用 Kerberos 的 NFSv4 非常适合您的安全要求。
以下是有关安全模型的更多信息:
如果您正在考虑部署,这里有一些以 debian/ubuntu 为中心的教程。我选择了没有 LDAP 的简单设置。这些发行版具有基于 debconf 的配置,可以帮助您实现部分目标。
- 设置 Kerberos(请注意 fqdn 要求)。
- 设置 NFSv4
我的补充:您不需要指定 des-cbc-crc 加密类型,但您需要在 krb5.conf 中允许_weak_crypto,以便通信协议可以使用 des-cbc-crc 进行流加密。这在 2.6.35 内核中将变得不再必要。
如果你正在寻找类似家电的东西,那么免费IPA。
答案3
sshfs 是最佳选择。在客户端上:
sshfs -o idmap=user,workaround=rename user@server:/home/user/share /home/user/share
权限与 ssh 相同...因为您使用的是 ssh!好处是您不必触碰服务器上的任何东西,假设 sshd 已安装并正常运行。可能没有其他建议的性能,但它非常简单。
答案4
OpenAFS 是否支持用户级别的身份验证和访问?
是的,听起来 OpenAFS 可以满足您的要求,但 Kerberized NFSv4 也可以。在这两种环境中,您都不需要“信任”客户端;访问控制由服务器强制执行。以前的 NFS 版本确实要求您有效地“信任”客户端,但 Kerberized NFSv4 则不需要。OpenAFS 从未要求“受信任”的客户端,并且还依赖 Kerberos 进行身份验证和安全性。