問題:
服務器A:192.168.10.230
服務器B:192.168.10.231
由於服務器A空間不足,打算將服務器A產生的數據庫日志掛載到服務器B上,剛開始設定的anonuid和anongid,均為A服務器postgres賬戶的id值,因為考慮的是在服務器A中以postgres用戶來歸檔日志,但由於A、B兩台服務器中的postgres用戶的id值不同,掛載之后目錄用戶和所有者均為nobody,嘗試創建文件,但提示權限不足。
解決:
剛開始是直接查詢的網上資料,修改的anonuid和anongid,后面查閱了關於exports的幫助文檔,發現anonuid和anongid需要設定為B本機的id值,至此A服務器產生的數據庫日志終於可以寫入B服務器上。
在服務器B中的/etc/exports中掛載的權限設置為:
rw,sync,all_squash,anonuid=502,anongid=502
其中502是服務器B中postgres用戶的id值。
下面是幾個nfs常用權限設置的簡單說明,方便自己和大家查閱:
root_squash:在登入 NFS 主機使用分享之目錄的使用者如果是 root 時,那么這個使用者的權限將被壓縮成為匿名使用者,通常他的 UID 與 GID 都會變成 nobody 那個系統賬號的身份。
no_root_squash:登入 NFS 主機使用分享目錄的使用者,如果是 root 的話,那么對於這個分享的目錄來說,他就具有 root 的權限!這個項目『極不安全』,不建議使用!
all_squash:登入 NFS 主機使用分享目錄的使用者,所有用戶均被壓縮成為匿名使用者,即已nobody用戶的身份登錄。
anonuid和anongid:明確指定匿名使用者使用指定的id值用戶的權限,訪問分享的目錄。
secure:限制客戶端只能從小於1024的tcp/ip端口連接nfs服務器(默認設置)。
insecure:允許客戶端從大於1024的tcp/ip端口連接服務器。