Centos

NFS:如何允許特定使用者寫入 NFS 掛載?

  • December 10, 2014

我寫了一個 Nagios 檢查,它應該檢查伺服器將文件寫入其中一個掛載所需的時間。檢查由使用者 nagios 執行。

NFS 伺服器配置如下:

[root@ny4aftp2 ~]# tail /etc/exports 
/proxy_logs *(rw,insecure,insecure_locks,no_subtree_check,async)
/sync_logs *(rw,insecure,insecure_locks,no_subtree_check,async)
[root@ny4aftp2 ~]# ls -ld /sync_logs/
drwxrwxr-x 3 peeradmin peeradmin 4096 Dec 10 10:14 /sync_logs/
[root@ny4aftp2 ~]#

這是檢查腳本正在執行的命令:

dd if=/dev/zero of=/$MOUNTPOINT/`hostname`.dat bs=1024 count=102

客戶端配置如下:

[root@ny4aproxy11 ~]# grep sync /etc/fstab 
IP:/sync_logs /sync_logs nfs intr,noatime  0 0

當 nagios 使用者執行檢查時,當dd命令嘗試將.dat文件寫入 nfs 共享時/sync_logs,即使使用者nagios在兩台機器上配置相同,也會收到“權限被拒絕”錯誤:

伺服器:

[root@ny4aftp2 ~]# id nagios
uid=498(nagios) gid=498(nagios) groups=498(nagios),500(peeradmin)

客戶:

[root@ny4aproxy11 ~]# id nagios
uid=498(nagios) gid=498(nagios) groups=498(nagios),500(peeradmin)

nagios 使用者是 peeradmin 組的成員,該組是/sync_logs目錄的所有者。

/sync_logs在 NFS 伺服器上:

[root@ny4aftp2 ~]# ls -ld /sync_logs/
drwxrwxr-x 3 peeradmin peeradmin 4096 Dec 10 10:20 /sync_logs/

/sync_logs在 NFS 客戶端上:

[root@ny4aproxy11 ~]# ls -ld /sync_logs/
drwxrwxr-x 3 peeradmin peeradmin 4096 Dec 10 10:20 /sync_logs/

我不喜歡chmod o+w /sync_logs,我更喜歡按應有的方式修復它……就像nagios使用者將獲得權限,因為它是peeradmin組的成員,並且允許nagios使用者寫入/sync_logs目錄。

怎麼辦?我做錯了什麼?

編輯#1:

IP:/sync_logs on /sync_logs type nfs (rw,noatime,intr,vers=4,addr=SERVER_IP,clientaddr=CLIENT_IP)

提前致謝

根據目前的評論:

  • 您的掛載適用於 NFSv3,但不適用於 NFSv3。
  • 您正在使用本地帳戶。

這意味著問題很可能歸結為 NFSv4 帳戶處理和idmapd. NFSv3 中發生的事情是您的客戶端告訴伺服器您正在使用什麼 UID 和 GID。

NFSv4 中發生的情況是它們使用使用者名並用於idmapd來回映射。這意味著您不再需要在您的身份驗證領域中擁有相同的 UID 和 GID。

但這裡有個問題——idmapd需要能夠來回進行映射。它將發送user@domain(等效)而不是數字 UID/GID。

所以檢查你的/etc/idmapd.conf. 還要檢查您在客戶端和主機上的域名是否匹配。domainname您正在尋找idmapd.conf- 如果未設置,它將預設為domainname伺服器/客戶端報告上的任何命令。

切換到 NFSv3 可以作為一種解決方法(和驗證),但可能不是一個好主意 - NFSv4 對 v3 有一些很好的增強,並且由於身份驗證問題而將它們關閉並不理想。

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