**********************************************************************************
NFS服務器的配置
一、NFS服務器端的配置,即共享發布者
(一)需啟動的服務和需安裝的軟件
1、 NFS服務器必須啟動兩個daemons服務:rpc.nfsd和rpc.mountd
rpc.nfsd:用來管理客戶端PC是否可以登錄。類似於windows中的共享權限。
rpc.mountd:用來管理客戶端pc能夠使用的文件安全權限。 如windows中的共享安全權限。
RPC:因為NFS支持的功能很多,所以NFS的功能對應的端口才無法固定,而是采用小於1024的隨機端口。
但客戶端需要得知服務器的端口才能聯機,此時就需要啟用RPC服務。
RPC的功能就是指定每個NFS功能的端口號。並傳信息給客戶端,讓客戶端可以連到正確的端口上。
服務器在啟動NFS時會隨機取用數個端口,並主動向RPC注冊,因此RPC知道每個NFS功能對應的端口。
RPC用111端口監聽客戶端的請求,並應答正確的端口。啟動NFS前,RPC就要先啟動了,否則NFS會無法向RPC注冊。
2、NFS 服務器需要安裝nfs主程序,nfs-utils和rpc主程序 portmap
(二)exports服務器的方法:
1、 NFS文件存取權限
因為NFS沒有驗證機制,當客戶端用戶訪問NFS服務器的共享文件夾時會遇到的權限情況:
(1)NFS服務器端用戶列表中有與客戶端用戶名相同的用戶名時,客戶端可以直接存取共享文件夾。例:客戶端用戶為khp,而nfs服務器用戶列表(/etc/passwd)中也有khp這個用戶名,則將擁有KHP權限。。
(2)當訪問NFS服務器的客戶端用戶UID與服務器端 UID相同,但用戶名卻不相同時,客戶端將擁有與服務器端UID 相同但不同用戶的權限。
例:客戶端為 501UID,用戶名為 khp的帳號訪問NFS服務器。NFS服務器用戶列表中(/etc/passwd)有uid為501 ,但用戶名為pla的用戶,所以客戶端khp用戶可以擁有NFS服務器pla相同權限。
(3)如果客戶端用戶UID在NFS服務器端用戶列表中不存在時,則以匿名用戶的權限訪問。即nobody的用戶。
(4)如果客戶端用戶為root用戶,因為每台電腦都有root用戶,如果不作控制,NFS服務器將會很危險,會被客戶端全部控制。所以默認root用戶名的客戶端訪問NFS服務器,會變為匿名用戶,擁有匿名用戶權限。也可不控制。
2、編輯/etc/exports文件,此文件不一定存在,如不存在就手工建立
/etc /exports的格式:
共享目錄 允許訪問的電腦 (選項)
共享目錄:即nfs服務器准備共享的目錄
允許訪問的電腦:即允許訪問這個共享的客戶端有哪些。可用電腦名、IP地址,還可以用通配符。
選項:
(1) rw //讀寫。客戶端擁有讀寫的權限。
(2) ro //只讀 客戶端只有讀的權限。
(3) no_root_squash //root用戶可訪問,不變成匿名用戶,即root用戶可以以root用戶的權限訪問NFS服務器的共享資源。
(4) root_squash //root用戶變成匿名用戶
(5) all_squash //所有用戶都變成匿名用戶
(6) anonuid
(7) anongid //所有匿名用戶的UID或組ID都變為后面設定的UID或GID的權限。因為所有在NFS服務器用戶列表中沒有用戶名的都會匿名用戶,這里設定這些匿名用戶的用戶權限。
(8) sync //同步到硬盤
(9) async //數據存放到內存而不是直接寫到硬盤
例: /mnt/export www.elitek.com(rw) //這個目錄只允許www.elitek.com這台電腦讀寫。注意,后面(rw)前沒有空格。
/mnt/export www.elitek.com (rw) // /mnt/export這具目錄只允許www.elitek.com這台電腦讀寫,且允許所有其他用戶讀寫權限。(rw)前面有空格。
/mnt/export *.elitek.com(rw) //允許所有elitek.com這個域里的電腦讀寫這個共享文件夾。
3、 exportfs命令。 可以更改設置 (命令目錄/usr/sbin/exportfs)
exportfs [-avu][-o option] [director]
-a:把 exprotfs里的所有路徑都共享出去
-u:把export出去的路徑取消
-v:在export時,共享顯示到屏幕
-o option :即一些選項
-r :重新掛載exports里的設置
例: exportfs -a ro /tmp/user //即把/tmp/user目錄全部exports,但用戶只能讀取資料。
4、 /var/lib/nfs/*tab //存放日志文件.etab記錄NFS共享出來的目錄完整權限設置。 .xtab記錄曾經連接引NFS的客戶機數據
5、rpcinfo [-p] [ip |電腦名] //查看RPC服務的注冊狀態
6、 netstat -ultn 查看開放了哪些端口
二、客戶端的端設置
作為NFS客戶端需要先運行 nfslock和 portmap服務。 /etc/init.d/nsflock start
/etc/init.d/portmap start
並且有幾種掛載方法
(一)、命令方式
mount 命令掛載
1、 showmount -e [nfs服務器電腦名| ip地址 ] //查看nfs服務器的可用共享目錄
2、mount nfs主機名:nfs共享目錄 掛載到本機的目錄 //把nfs服務器共享的目錄掛載到本機。主機名外還可用IP地址
例: mount 192.168.9.1:/tmp/export /tmp/export //即把192.168.9.1nfs服務器共享的 /tmp/export目錄,掛載到本機的 /tmp/export目錄上。
mount -t nfs -o time=20 www.linux.com/home/khp /tmp/export //把遠程nfs服務器的/home/khp 掛載到本機的/tmp/export目錄下。最長響應時間為20秒。
3、 unmount 命令中斷掛載
(二) 編輯 /etc/fstab文件掛載
/etc/fstab文件詳解在文件系統管理中有說明
1、格式: NFS服務器及共享目錄 掛載到本地的目錄 文件格式 選項
www.elitek.com:/home/project /tmp/export ro //把 www.elitek.com這對口NFS服務器上的 /home/project目錄掛載到本機的 /tmp/export目錄上,且為只讀。格式為nfs
2、打開文件夾。此時輸入 mount /tmp/export 即可以打開掛載的文件
(三)autofs來掛載nfs文件系統
只在文件系統被訪問時才被掛載。
1、在 /etc/auto.master中定義掛載點
2、再在 auto.master中定義的 /etc/auto.dirctory 中定義目錄的總掛載點。
即在系統文件 /etc/auto.master中先定義一個總的總掛載點。 然后依這個文件中定義的總掛載點文件,再設置詳細掛載點。
例: vi /etc/auto.master 編輯這個文件:
/misc /etc/auto.khp -timeout 60 //即 /etc/auto.khp中的文件將掛載到 /misc目錄下
再編輯: vi /etc/auto.khp 這個文件,定義掛載點。
myproject -rw,soft,intr www.elitek.com:/home/project //即把NFS服務器 www.elitek.com:/home/project共享目錄,掛載到本機的 /misc/myproject目錄下。
注意: /misc/myproject目錄是動態的,不是實際存在的,只是在訪問時這個目錄才會產生。退出就消息。但 /misc目錄需存在。
當防火牆開着時,有時就無法訪問,可用 /etc/rc.d/init.d/iptables stop 停用防火牆,或用 iptable命令開放NFS的端口。