我正在尝试从我的 OSX 10.6 笔记本电脑连接到 Debian Squeeze 盒共享的 NFS 驱动器,尽管我尽力尝试,但我还是无法让它让我从 Mac 写入磁盘。我在 /etc/exports 中有以下内容:
/mnt/usbdrive 192.168.1.0/24(rw,insecure,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1000)
所有请求均来自 UID/GID 1000/1000,即我的用户,他拥有整个驱动器。但是,当我在 Mac 上安装驱动器时,所有内容也归 1000/1000 所有,因此我永远无法写入磁盘:
~> ls -la /Volumes/USBDrive/
drwxr-xr-x 6 1000 1000 4096 5 Sep 19:31 .
drwxrwxrwt@ 4 root admin 170 6 Sep 22:41 ..
drwx------ 2 1000 1000 16384 28 Aug 21:24 lost+found
drwxr-xr-x 2 1000 1000 4096 29 Aug 15:35 music
我看到其他一些人也遇到过这个问题,但我见过的唯一解决方案是将整个磁盘 chmod 为 777,而我宁愿避免这样做。不幸的是,我无法在我的系统上使用 nfs-user-server,因此我无法使用 UID/GID 映射。
答案1
不要将所有文件分配给 uid 1000,而是将所有文件分配给 Mac 上的 uid(id -u
在终端中运行以查看您的 uid)。在此过程中,对 gid ( id -g
) 执行相同操作。
答案2
这是我在 MacOS 11.1 BigSur(nfs 客户端)上工作的方法,在 VirtualBox VM 中运行 Ubuntu 20.04,使用“仅主机”网络直接连接到虚拟机。据推测这可以在两台物理机之间工作。
*** 请注意,虚拟机未启用防火墙,因为它是在我的 Mac 中运行的仅主机虚拟机。显然,您需要在服务器上的防火墙上正常打开端口才能实现此目的。
Macbook(客户端)是 192.168.56.1 Ubuntu VM(服务器)是 192.168.56.11
/etc/exports
在服务器上编辑:
/home/don 192.168.56.1(rw,sync,no_subtree_check,anonuid=1000,anongid=1000,all_squash)
exportfs -a
*** 请记住在编辑文件后运行/etc/exports
,然后才能mount
在 Mac 客户端上运行。
** id 1000 和 gid 1000 是 ubuntu vm 上的 'don' 用户
在 Mac 上:
sudo mount -o resvport,rw -t nfs 192.168.56.11:/home/don /Users/don/ubuntudevnfs
和
sudo umount -t nfs /Users/don/ubuntudevnfs
resvport
insecure
在 mac(客户端)端消除了在服务器端导出的需要。
UID/GID 1000 是服务器上的“don”用户,从 mac 客户端可以看到: 在 Mac 客户端上创建的示例文本文件
它在服务器上的样子: 通过 ssh 进入 ubuntu 虚拟机查看 /home/don
答案3
一种解决方案:在两个平台上创建一个具有相同组id的组并让两个平台上的用户成为该组的成员,然后将anongid参数更改为这个组id。