Linux

如何讓 Linux 上的 NFS 使用 OS X 的使用者 ID 將文件夾導出到 OS X,以便我可以 cp -a 從 Linux 到 OS X?

  • January 13, 2016

我在一台電腦上有 Ubuntu GNOME 15.10,在另一台電腦上有 OS X 10.11.2。我想將文件從 Ubuntu 安裝遷移到 OS X 安裝但保留權限。

目前我正在嘗試的策略是通過 NFS 導出我的主目錄,從 Mac 掛載它,然後cp -a將文件從掛載中移除。我知道在 OS X 上 UID 和 GID 的分配方式與在 Linux 上不同。在 Linux 上,我的 UID/GID 是 1000/1000,而在 OS X 上,我的 UID/GID 是 501/20。

據我所知,擁有這個/etc/exports應該足以讓我的 Linux 文件在 Mac 上顯示為 501/20:

/home/pietro/   <Mac's IP>(rw,sync,all_squash,no_subtree_check,insecure,anonuid=501,anongid=20)

並安裝在 Mac 上

mkdir /tmp/q
sudo mount -t nfs <Linux's IP>:/home/pietro /tmp/q

但是,當我以這種方式安裝時,ls -l在 Mac 上告訴我文件權限仍然是 1000/1000。

我也試過:

  • no_root_squash
  • anonuid=1000,anongid=1000
  • 去除no_subtree_check
  • 去除sync
  • echo N | sudo tee /sys/module/nfs/parameters/nfs4_disable_idmapping其次是sudo nfsidmap -c
  • NEED_IDMAPD=yes/etc/default/nfs-common
  • -o resvport在 Mac 上

一切都無濟於事。

所以我的問題是:我如何配置 NFS 以便當我ls -l在 Mac 端獲得 501/20 作為所有者/組時,我可以安全地使用cp -a

或者,我是否使用了錯誤的工具來完成這項工作,是否有更好的方法?我需要保留其他 Unix 權限,因此 SMB 似乎不是一個選項。我也不願意冒險更改 OS X 帳戶的 UID/GID。

謝謝。

我決定只使用 rsync,從3.1.0 版開始,它可以選擇做我想做的事。我需要獲得最新的 rsync,因為 Apple 仍然在 OS X 上發布了一個古老的版本,但在那之後就只是做事了

rsync3 --usermap 1000:501 --groupmap 1000:20 -a -v pietro@<Linux's IP>:/home/pietro/<path> <dest>

不管怎麼說,還是要謝謝你!

更新(為了 Google 員工的利益)反之亦然,同樣適用於 Mac!

rsync3 --usermap 501:1000 --groupmap 20:1000 -a -v <src> pietro@<Linux's IP>:/home/pietro/<path>

<path>似乎不喜歡空格,但我可能做錯了什麼……

引用自:https://serverfault.com/questions/745302