NFS:如何允許特定使用者寫入 NFS 掛載?
我寫了一個 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 有一些很好的增強,並且由於身份驗證問題而將它們關閉並不理想。