2023年1月26日 星期四

NFS mount succeed but cd permission denied

這次遇到的現象是用 root 可以 cd 進去,但其他使用者想要 cd 進去的話會失敗。

網路上也有人遇到類似的問題 ( ref https://forums.centos.org/viewtopic.php?t=77165 )


Server 端 : Synology DSM

Client 端 : Arch Linux


由於不想 ssh 進去 Synology DSM 魔改,看看在 Client 端這邊能不能作點什麼。

說是這麼說,但還是先 ssh 進去看一下各項資訊,才比較好在 Client 端下手。


在 Server 端首先看的是檔案與資料夾的擁有者資訊

group name: users
gid: 100


這裡有幾個需要注意的地方

  1. Client 端並沒有 gid 100 這個群組
  2. Client 端的 users 群組的 gid 是 984 ( 而不是 100 )
  3. Arch Linux 已經不再使用 users 這個群組
( ref https://wiki.archlinux.org/title/users_and_groups#Unused_groups )



一個簡單的作法是讓 Client 端的使用者擁有 gid 100 的存取權,比如:
sudo groupadd dsm-users -g 100
sudo gpasswd -a your_client_username dsm-users

 ( ref https://wiki.archlinux.org/title/users_and_groups#Group_management


這樣就能順利 cd 進去了。



後來發現這次的問題是我沒有把文件看仔細就在使用 NFS 了。Arch Wiki 的 NFS 頁面開頭的 Note 一開始就寫著:
NFS expects the user and/or user group IDs are the same on both the client and server. Enable NFSv4 idmapping or overrule the UID/GID manually by using anonuid/anongid together with all_squash in /etc/exports.

(  ref https://wiki.archlinux.org/title/NFS


短短兩句話說了三種處理 NFS 權限的方法:

  1. NFS expects the user and/or user group IDs are the same on both the client and server
  2. Enable NFSv4 idmapping
  3. overrule the UID/GID manually by using anonuid/anongid together with all_squash in /etc/exports

DSM 的 NFS 頁面的注意事項也有提到 NFSv4 idmapping:
使用 NFSv4 掛載共用資料夾時,請注意下列資訊,否則與使用者名稱相關的檔案操作會失敗。
- NFS 用戶端必須啟用 idmapd。
- 在 NFS 用戶端上,idmapd.conf 檔的 NFSv4 網域設定必須與 Synology NAS 上的 NFSv4 網域欄位設定一致。

( ref https://kb.synology.com/zh-tw/DSM/help/DSM/AdminCenter/file_winmacnfs_nfs )


其他參考資料

沒有留言: