使用用户名/密码挂载NFS网络共享

11
我正在尝试使用nfs挂载NAS,用于应用程序。 存储团队已将其导出到主机服务器,并且我可以在/nas/data中访问它。
我正在使用容器化应用程序,这个文件系统导出到主机机器将成为安全问题,因为任何运行在主机上的容器都可以使用该共享。因此,对于我来说,这种 Linux 到 Linux 的挂载方法不起作用。
因此,我唯一的替代方案是在容器启动期间使用用户名/密码挂载此nas文件夹。
下面的命令适用于支持 Unix/Windows 的共享。我可以在容器启动时挂载。
mount -t cifs  -osec=ntlmv2,domain=mydomain,username=svc_account,password=password,noserverino //nsnetworkshare.domain.company/share/folder /opt/testnas

我被告知我们应该使用nfs选项而不是cifs。 因此,我想知道使用nfs还是cifs会有什么区别。

指定nfs选项会出现以下错误。

 mount -t nfs -o nfsvers=3,domain=mydomain,username=svc_account,password=password,noserverino //nsnetworkshare.domain.company/share/folder /opt/testnas


mount.nfs: remote share not in 'host:dir' format

以下命令似乎也无法正常工作。

 mount -t nfs -o nfsvers=3,domain=mydomain,username=svc_account,password=password,noserverino nsnetworkshare.domain.company:/share/folder /opt/testnas

mount.nfs: an incorrect mount option was specified

我找不到一个带有用户名/密码的mount -t nfs选项示例。因此我认为我们不能使用具有凭据的mount -t nfs命令。

请提出想法。

谢谢,
Vishnu

2个回答

20

CIFS是一种文件共享协议,而NFS是一种卷共享协议。两者之间的区别可能一开始并不明显。

NFS实际上是直接共享/dev/sda1的微小改进。客户端实际上会收到所共享的子文件系统的裸视图,包括(至少在NFSv4中)哪些用户可以访问哪些文件的描述。由客户端来管理哪个用户被允许访问哪些文件的权限。

另一方面,CIFS在服务器端管理用户,并且可能提供对文件的每个用户视图和访问。在这方面,它类似于FTP或WebDAV,但具有读取/写入任意子集文件的能力,以及与锁定相关的一些其他功能。

这听起来可能使NFS显得比CIFS低劣,但它们实际上是为不同的目的而设计的。 NFS最适用于通过以太网连接的外部硬盘驱动器和虚拟云存储。在这种情况下,意图是与机器共享驱动器本身,但仅是通过以太网而不是SATA进行共享。对于这种用例,NFS提供了更简单和更快的速度。正如您正在使用的NAS一样,它并不是用来管理访问的,而是用来不暴露给不应该访问它的系统。

如果你绝对必须使用NFS,那么有几种方法可以使其更加安全。NFSv4提供了一个可选的基于Kerberos的安全模型,但使用它可能会遇到些许困难。更好的选择是不允许主机直接连接到NFS服务,而是需要通过一些安全通道(如SSH端口转发)进行连接。然后安全性就取决于建立通道的过程。然而,这两种方法都需要主机的协作,但在NAS的情况下可能无法实现。
注意,如果你已经在使用CIFS并且它运行良好,并为您提供了良好的访问控制,则没有切换的好理由(尽管您需要关闭NFS以获取更好的安全性)。然而,如果你拥有一个类似于docker的主机,将iptables(或您选择的防火墙)应用于docker-host上,以防止其他容器首先访问NAS,可能会更值得尝试。安全性应该在docker-host级别处理,而不是委托给NAS。

3

我会建议选择CIFS而不是NFS(旧版),因为一些Linux/Unix发行版甚至停止了对它的支持。

NFS是特定用于Unix和Linux操作系统的“网络文件系统”。它允许服务器和终端用户(如台式机和笔记本电脑)之间透明地通信。NFS使用客户端-服务器方法,允许用户在计算机系统上查看、读取和写入文件。用户可以通过NFS挂载整个文件系统或部分文件系统。

CIFS是Windows操作系统用于文件共享的“常见互联网文件系统”的缩写。CIFS也使用客户端-服务器方法,其中客户端请求服务器程序以访问文件。服务器执行请求操作并返回响应。CIFS是Microsoft开发和使用的SMB协议的一个开放标准版本,它使用TCP/IP协议。

如果是Linux <-> Linux,则我会选择nfs,但如果是Windows <-> Linux,则cifs将是最佳选择。


我有一个Linux->Linux的设置,但正如我所提到的,如果我在主机级别将NAS挂载为NFS,则运行在主机上的任何应用程序都可以使用它。 在Linux->Linux上使用CIFS是否存在任何问题?或者已经证明NFS性能比CIFS更好了吗? - VVP
这是一个超过20年的争论。作为一名多年使用Linux的人,我认为可以简单明了地表达我的看法: - Prabhat Singh
如果您的文件服务器是基于Windows的,而客户端是混合的,则CIFS通常会为Windows客户端提供比NFS更好的性能(Microsoft执行了一些Samba没有的后台任务 - 如果我没记错的话,英特尔曾经发布过一项关于Windows客户端与Windows共享服务器以及Windows客户端与Samba共享服务器之间性能差异的研究)。 - Prabhat Singh
如果您的客户主要使用Linux,则更便携且性能更好的选择可能是NFSv4 - 可以在Linux或Windows 2012+上运行。请注意,为了获得更无缝的跨平台属性传播,您的RHEL客户端需要运行EL7,因为EL6 NFSv4和IDMAP服务有些“损坏”。如果使用Windows 2012 NFSv4服务器,则希望所有内容都使用NFS 4.1进行通信(有各种可搜索的资源解释“为什么”)。 - Prabhat Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接