關於NFSv4服務共享目錄裏的文件UID和GID顯示爲nobody的解決方法

關於NFSv4服務共享目錄裏的文件UID和GID顯示爲nobody的解決方法

 

一、問題現象:

當我們使用NFSv4這個版本的NFS服務給客戶端提供共享文件系統時,會產生共享文件夾下的文件的屬主和屬組都是nobody的現象,具體現象見下圖:

wKiom1mCv57wFrN6AAFzTZHXKkg285.png

二、問題原因:

造成UID和GID顯示爲nobody的原因是,nfsv4提供了稱爲rpc.idmapd 的守護進程,這個服務的配置文件是 /etc/idmapd.conf 。當收到來自客戶端的加載請求時,該守護進程將處理UID 和 GID 映射,如果不對其進行配置,這個服務默認將共享目錄內文件的UID和GID映射爲nobody,見下圖:

wKioL1mCv83z2AddAAEZO8BrjFc632.png

三、解決方法:

如果要使用idmapd服務,必須要分別在服務端和客戶端的idmapd配置文件/etc/idmapd.conf中,去設置服務端和客戶端主機的根域名Domain = domain.com (此處根據實際情況填寫), 因爲不確定這對測試環境是否有影響,所以採取在服務端端停掉這個服務,同時讓NFS模塊禁用idmapd服務的辦法去解決問題。

四、操作步驟:

#本次環境採用vmware workstaion的虛擬機進行模擬,主機信息如下:

服務端:

主機名:NFSAP1

IP:192.168.137.132

操作系統版本:redhat6.5 x64

客戶端:

主機名:TESTAP1

IP:192.168.137.142

操作系統版本:redhat6.5 x64

 

1、在服務端,安裝NFS服務。

yum –y installnfs

vim  /etc/exports

/naslog192.168.137.*(rw,sync,no_root_squash)

:wq

chkconfig --level 2345 nfs on

service nfs start

2 、在服務端,新建文件/etc/modprobe.d/nfs.conf,加入讓NFS模塊去禁用idmapd服務的選項。 

echo "options nfsnfs4_disable_idmapping=1" > /etc/modprobe.d/nfs.conf 

3、在服務端,重啓NFS服務

service nfs restart

4、在服務端,停止idmapd服務

service rpcidmapd stop

5、在客戶端,把掛載共享目錄信息加入到文件/etc/fstab文件中。

echo"192.168.137.132:/naslog         /naslog        nfs4    defaults       0 0" >>/etc/fstab

6、在客戶端,使用mount命令自動掛載共享目錄。

mount -a

7、在客戶端,查看共享目錄下的文件屬主屬組,已經不是nobody了。

wKioL1mCwEmwViCQAALeiKAgC2k071.png

五、測試:

測試當刪除正在被調用的文件時,文件描述符是否被釋放。

1、在客戶端共享目錄下,新建一個文件abc.txt,並用tail命令去動態查看。

wKioL1mCwGWA9IzaAAMtWxbrOCk534.png

2、刪除這個abc.txt文件。

wKioL1mCwOHwtVpOAAILGM7w4e4647.png

#下圖中刪除1.txt後,在當前目錄自動產生的臨時文件屬主和屬組不是nobody。

wKioL1mCwQeQIvlJAAJEH6C3-zE205.png

3、使用lsof命令查看文件句柄沒有被佔用。

wKiom1mCwSvBiDBiAACS_a7WrqI991.png

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章