为什么NFS不允许我挂载共享?


14

主人

我有一台运行Ubuntu 12.04的主机,位于10.0.0.202。它为网络上的其他计算机提供了NFS共享。以下是内容/etc/exports

/media/storagedrive 10.0.0.0/24(rw,sync,no_subtree_check)

目的是/media/storagedrive在IP范围内与网络上的其他计算机共享内容10.0.0.0 - 10.0.0.255

工作客户

这与10.0.0.40运行Ubuntu 13.10(称为MattDev)的客户端计算机正常工作。那台机器/etc/fstab看起来像这样:

UUID=8f8c838e-3ea2-457a-87f0-57b12dfab06c /               ext4    errors=remount-ro 0       1
UUID=427089d4-46a2-432d-9df4-7016bdfc7df2 none            swap    sw              0       0
10.0.0.202:/media/storagedrive /mnt/NetworkStorageDrive nfs rsize=8192,wsize=8192,timeo=14,intr

ls -al /mnt/在这台机器看起来像这样:

total 12K
drwxr-xr-x  3 root root    4.0K Feb  4 17:48 .
drwxr-xr-x 23 root root    4.0K Feb  5 08:44 ..
drwxrwxr-x  7 root plugdev 4.0K Feb  5 11:43 NetworkStorageDrive

输出id如下:

uid=1000(matt) gid=1000(matt) groups=1000(matt),4(adm),24(cdrom),27(sudo),30(dip),33(www-data),46(plugdev),112(lpadmin),124(sambashare)

非工作虚拟客户端

我有一台第二台客户端计算机,它在Windows 7主机上作为来宾OS运行Ubuntu 12.10。主机在网络上为10.0.0.28。来宾计算机由Vagrant使用VirtualBox 4.3.6作为提供程序进行管理。我将称Windows 7主机AlexDevHost和Ubuntu来宾AlexDevGuest。

showmount -e 10.0.0.202在AlexDevGuest上运行会产生:

Export list for 10.0.0.202:
/media/storagedrive 10.0.0.0/24

但是,当我尝试挂载共享时,它将失败:

$ sudo mount 10.0.0.202:/media/storagedrive /mnt/NetworkStorageDrive
mount.nfs: access denied by server while mounting 10.0.0.202:/media/storagedrive

所以我开始寻找问题:

$ ls -alh /mnt/
total 12K
drwxr-xr-x  3 root root 4.0K Feb  5 12:23 .
drwxr-xr-x 26 root root 4.0K Feb  5 12:23 ..
drwxr-xr-x  2 root root 4.0K Feb  5 12:23 NetworkStorageDrive
$ id
uid=1001(vagrant) gid=1001(vagrant) groups=1001(vagrant)
$

该uid和gid与MattDev上的用户matt不同。因此,我为流浪者的uid忙得不可开交,因为我读到NFS访问是通过匹配IP地址和uid来控制的。所以现在:

$ id
uid=1000(vagrant) gid=1001(vagrant) groups=1001(vagrant)
$ sudo mount 10.0.0.202:/media/storagedrive /mnt/NetworkStorageDrive
mount.nfs: access denied by server while mounting 10.0.0.202:/media/storagedrive
$

仍然没有成功。所以现在我的想法不多了。

  1. 我究竟做错了什么?
  2. 如果uid部分正确,是否可以通过一种方法来验证NFS服务器计算机将我的访问尝试视为来自10.0.0.28,而不是其他不在允许范围内的IP?

Answers:


16

好的,我已经解决了(或者至少已经使它起作用了,我想我知道是什么原因造成的)。

我将insecure标志添加到/etc/exportsNFS服务器上的行中,因此现在看起来像这样:

/media/storagedrive 10.0.0.0/24(rw,sync,no_subtree_check,insecure)

此标志允许连接从IPPORT_RESERVED(1024)以上的客户端端口发起。

现在可以使用mount命令。

我对为什么缺少insecure标志是问题的猜测是VirtualBox使用NAT将请求传递到物理网络,因此,尽管Ubuntu guest虚拟机(AlexDevGuest)上的端口可能低于1024, Windows 7主机(AlexDevHost)可能高于1024,因此被阻止。设置insecure标志意味着虽然允许。

这个问题显然不会影响非虚拟机DevMatt。


出色的侦探工作。我通常将Unbuntu的VirtualBox虚拟机用作“沙盒”环境,而不是使用生产级服务器甚至是分阶段的开发服务器,而不是使用生产级服务器,因此可以极大地帮助您。
JakeGould 2014年

想无限地感谢您,长期以来一直在寻找您的帮助。他们知道为什么施加了这样的限制,为什么不能让来自任何端口号的连接对端口号产生怎样的影响。无论如何,非常感谢。
mSatyam '17

@mSatyam这是因为您必须是root用户才能绑定到低于1024的端口,并且谨慎地预期NFS东西至少在默认情况下将作为root用户运行。我正在做的端口转发有些“特殊情况”。
亚历克斯(Alex)

但是我怎么能说服VirtualBox的网络使用低于1024的端口呢?
Mikhail T.18年

非常感谢..
johnmin '19
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.