nfs:client mount成功,但是進入目錄時出現Permission denied

剛在CentOS上試用了下NFS,具體的步驟如下:

Server端:

①、先確認是否已經安裝了相應的服務

  1. [root@localhost /]# rpm -qa |egrep -i "nfs|portmap"    
  2. portmap-4.0-65.2.2.1 
  3. nfs-utils-lib-1.0.8-7.6.el5 
  4. nfs-utils-1.0.9-50.el5 

②、添加共享目錄:vi /etc/exports

  1. [root@localhost /]# cat /etc/exports 
  2. /home/kavin     *(ro) 

註解:

exports文件內容格式:

<輸出目錄> [客戶端1 選項(訪問權限,用戶映射,其他)] [客戶端2 選項(訪問權限,用戶映射,其他)]

1.輸出目錄:

輸出目錄是指NFS系統中需要共享給客戶機使用的目錄;

2.客戶端:

客戶端是指網絡中可以訪問這個NFS輸出目錄的計算機

客戶端常用的指定方式

  • 指定ip地址的主機 192.168.0.200
  • 指定子網中的所有主機 192.168.0.0/24
  • 指定域名的主機 a.liusuping.com
  • 指定域中的所有主機 *.liusuping.com
  • 所有主機 *

3.選項:

選項用來設置輸出目錄的訪問權限、用戶映射等。NFS主要有3類選項:

訪問權限選項

  • 設置輸出目錄只讀 ro
  • 設置輸出目錄讀寫 rw

用戶映射選項

  • all_squash 將遠程訪問的所有普通用戶及所屬組都映射爲匿名用戶或用戶組(nfsnobody);
  • no_all_squash 與all_squash取反(默認設置);
  • root_squash 將root用戶及所屬組都映射爲匿名用戶或用戶組(默認設置);
  • no_root_squash 與rootsquash取反;
  • anonuid=xxx 將遠程訪問的所有用戶都映射爲匿名用戶,並指定該用戶爲本地用戶(UID=xxx);
  • anongid=xxx 將遠程訪問的所有用戶組都映射爲匿名用 戶組賬戶,並指定該匿名用戶組賬戶爲本地用戶組賬戶(GID=xxx);

其它選項

  • secure 限制客戶端只能從小於1024的tcp/ip端口連接nfs服務器(默認設置);
  • insecure 允許客戶端從大於1024的tcp/ip端口連接服務器;
  • sync 將數據同步寫入內存緩衝區與磁盤中,效率低,但可以保證數據的一致性;
  • async 將數據先保存在內存緩衝區中,必要時才寫入磁盤;
  • wdelay 檢查是否有相關的寫操作,如果有則將這些寫操作 一起執行,這樣可以提高效率(默認設置);
  • no_wdelay 若有寫操作則立即執行,應與sync配合使用;
  • subtree 若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置);
  • no_subtree 即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率;

具體可參考:http://www.liusuping.com/ubuntu-linux/Redhat-Linux-NFS-setting.html

③、查看共享目錄

  1. [root@localhost /]# exportfs  
  2. /home/kavin     <world>  -- 允許所有的話這裏是顯示<word>,如果有指定域名或IP 時'將顯示指定的域名或IP. 

client端:

  1. [root@localhost /]# mount -t nfs 192.168.1.57:/home/kavin /kavin/ 
  2. [root@localhost /]# cd /kavin/ 
  3. -bash: cd: /kavin/: Permission denied 

從上面看NFS的mount是成功的,但是卻無法進入mount,後來通過google一直沒找到解決的方法。然後突然發現加載過來的目錄的權限不對,具體如下:

  1. [root@localhost /]# ll  ---client機器  
  2. total 152  
  3. drwxr-xr-x   2 root root  4096 Sep 15 02:34 bin  
  4. drwx------   4  500  500  4096 Sep 13 15:20 kavin  
  5. drwxr-xr-x  13 root root  4096 Sep 15 02:34 lib  

然後通過在client更改/kavin權限,發現無法更改;

  1. [root@localhost /]# chmod 777 /kavin/ 
  2. chmod: changing permissions of `/kavin/': Read-only file system 

後來想想這個應該是需要更改server端的權限,

  1. [root@localhost home]# ll  ---server端  
  2. total 32  
  3. drwx------ 4 kavin   kavin   4096 Sep 13 15:20 kavin  
  4. [root@localhost home]# chmod 777 kavin/  

然後client嘗試進入目錄,還是不行;重新mount之後就ok了。

  1. [root@localhost /]# cd /kavin/     --- client端  
  2. -bash: cd: /kavin/: Permission denied  
  3. [root@localhost /]# umount /kavin/  
  4. [root@localhost /]# mount -t nfs 192.168.1.57:/home/kavin /kavin/     
  5. [root@localhost /]# cd /kavin/  

從上面可以看出,在使用NFS時,server端的目錄共享也得注意權限的設置問題。

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