nfs只能掛載為nobody的解決方法


不得不承認centos6較centos5發生了很大的變化,在新部署的centos 6.4上又遇到nfs掛載的問題。問題現象是,在配置完nfs后,無論配置里指定的是何用戶,掛載成功后顯示的只能是nobody用戶,本想通過修改/etc/passwd和/etc/group對應的uid和gid號解決,發現重新掛載后,用戶仍然是nobody 。

造成該問題的原因是,在centos 6版本中默認使用的nfs-v4版本,其提供了稱為rpc.idmapd 的守護進程,並使用 /etc/idmapd.conf 的配置文件。當請求加載nfsv4 時,該守護進程將處理 UID 和 GID 映射。默認使用nis,沒有nis它會自動映射成nobody用戶。

既然找到了原因,找解決方法也就不難了,大致找了下網上的解決方法,分如下兩種。

方法一:mount中指定參數法

在mount掛載的時候指定使用v3版本去掛載,如下:

mount  -t nfs -o vers=3 ip:/data1 /data1

顯然不推薦該方法,既然有了V4版本,其肯定較V3版本做了很多優化,如果再用V3,顯然跟不上時代的步伐 。

方法二:修改/etc/idmapd.conf文件

修改前,先看下為什么會mount成nobody,在/etc/idmapd.conf文件中,mapping配置下有如下兩句 。

[Mapping] Nobody-User = nobody Nobody-Group = nobody

有人肯定說,直接修改這兩句,變成想要的用戶和組不就行了 ? 當然沒這么簡單,這里改了后,會發現mount的目錄只有讀的權限,沒有寫的權限 。想在徹底的解決該文件,只需要客戶端和服務端各改一行就行了。修改方法為,取消/etc/idmapd.conf中如下行的注釋,改為你所使用的根域名:

#Domain = local.domain.edu

如:都改為:

Domain = 361way.com

更改完成后,重啟idmapd服務:

service rpcidmapd restart

至此,問題解決。記得是客戶端和服務端都要修改才行,只改一處,問題仍然無法解決 。另外在umount的過程中,還可能遇到無法umount的問題:

root@test:/# umount /data1/nfs/ umount.nfs: /data1/nfs: device is busy umount.nfs: /data1/nfs: device is busy

 

遇到該問題時只需要使用fuser命令就可以解決:

root@test:/# fuser -km /data1/nfs/  root@test:/# fuser -f /data1/nfs/ 

 

執行完上面的操作后,再去umount就可以了。fuser上面用到的幾個參數的意義如下:

    -f        silently ignored (for POSIX compatibility)
    -i        ask before killing (ignored without -k)
    -k        kill processes accessing the named file
    -m        show all processes using the named filesystems

好文章,轉載分享


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM