安裝 1 環(huán)境描述: * 網(wǎng)絡(luò)環(huán)境: NFS server: 192.168.102.47 NFS client: 192.168.102.15 NFS client: 192.168.102.61 * 軟件版本 nfs-common 5-20 nfs-kernel-server 1.0.9-5 portmap 1.0.9-5 2 安裝: 服務(wù)器端安裝 在Debian系統(tǒng)下安裝NFS是相當(dāng)簡單的,在NFS服務(wù)器上執(zhí)行下面的命令即可 # aptitude install nfs-common nfs-kernel-server portmap 在客戶端則需要安裝: # aptitude install nfs-common portmap 3 服務(wù)的啟動與停止 啟動服務(wù) # /etc/init.d/nfs-kernel-server start 停止服務(wù) # /etc/init.d/nfs-kernel-server stop 重啟服務(wù) # /etc/init.d/nfs-kernel-server restart ************************* 服務(wù)器端配置 1 創(chuàng)建共享目錄 # mkdir /home/share # chown nobody.nogroup /home/share 2 創(chuàng)建或修改/etc/exports 配置文件 這個文件的內(nèi)容非常簡單,每一行由拋出路徑,,客戶名列表以及每個客戶名后緊跟的訪問選項(xiàng)構(gòu)成: [共享的目錄] [主機(jī)名或IP(參數(shù),參數(shù))] 其中參數(shù)是可選的,,當(dāng)不指定參數(shù)時,,nfs將使用默認(rèn)選項(xiàng),。默認(rèn)的共享選項(xiàng)是 sync,ro,root_squash,no_delay,。 當(dāng)主機(jī)名或IP地址為空時,,則代表共享給任意客戶機(jī)提供服務(wù)。 當(dāng)將同一目錄共享給多個客戶機(jī),,但對每個客戶機(jī)提供的權(quán)限不同時,,可以這樣: [共享的目錄] [主機(jī)名1或IP1(參數(shù)1,參數(shù)2)] [主機(jī)名2或IP2(參數(shù)3,參數(shù)4)] 下面是一些NFS共享的常用參數(shù): ro 只讀訪問 rw 讀寫訪問 sync 所有數(shù)據(jù)在請求時寫入共享 async NFS在寫入數(shù)據(jù)前可以相應(yīng)請求 secure NFS通過1024以下的安全TCP/IP端口發(fā)送 insecure NFS通過1024以上的端口發(fā)送 wdelay 如果多個用戶要寫入NFS目錄,則歸組寫入(默認(rèn)) no_wdelay 如果多個用戶要寫入NFS目錄,,則立即寫入,,當(dāng)使用async時,無需此設(shè)置,。 hide 在NFS共享目錄中不共享其子目錄 no_hide 共享NFS目錄的子目錄 subtree_check 如果共享/usr/bin之類的子目錄時,,強(qiáng)制NFS檢查父目錄的權(quán)限(默認(rèn)) no_subtree_check 和上面相對,不檢查父目錄權(quán)限 all_squash 共享文件的UID和GID映射匿名用戶anonymous,,適合公用目錄,。 no_all_squash 保留共享文件的UID和GID(默認(rèn)) root_squash root用戶的所有請求映射成如anonymous用戶一樣的權(quán)限(默認(rèn)) no_root_squas root用戶具有根目錄的完全管理訪問權(quán)限 anonuid=xxx 指定NFS服務(wù)器/etc/passwd文件中匿名用戶的UID anongid=xxx 指定NFS服務(wù)器/etc/passwd文件中匿名用戶的GID 配置文件/etc/exports內(nèi)容如下: $ cat /etc/exports /home/share 192.168.102.15(rw,sync) *(ro) 配置說明: 對192.168.102.15賦予讀寫權(quán)限,其他機(jī)器僅有只讀權(quán)限,。 3 重啟NFS服務(wù) # /etc/init.d/nfs-kernel-server restart 4 在客戶機(jī)上查看NFS的資源共享情況 # showmount -e 192.168.102.47 Export list for 192.168.102.47: /home/share (everyone) 5 使用mount命令即可掛栽共享資源 在客戶機(jī) 192.168.102.15 上加載共享資源 # mount 192.168.102.47:/home/share /mnt # cd /mnt # echo '12345'> 123 即可發(fā)現(xiàn)對服務(wù)器共享目錄可寫 # umount /mnt 在客戶機(jī) 192.168.102.61 上加載共享資源 # mount 192.168.102.47:/home/share /mnt # cd /mnt # ls 123 # touch 321 touch: cannot touch `321': Permission denied # echo '123455' >123 -bash: 123: Permission denied 即可發(fā)現(xiàn)對服務(wù)器共享目錄只有讀取權(quán)限,, 這與我們在服務(wù)器端的權(quán)限設(shè)置是相符的。 是不是我們每次修改了配置文件都需要重啟nfs服務(wù)呢,? 這個時候我們就可以用exportfs命令重新掃描/etc/exports文件,,來使改動立刻生效。 比如: # exportfs -au 卸載所有共享目錄 # exportfs -rv 重新共享所有目錄并輸出詳細(xì)信息 exportfs 命令有軟件包 nfs-kernel-server 提供,,詳細(xì)的 exportfs 命令說明請查看: man exportfs 中文的手冊說明可以查看這里: exportfs聯(lián)機(jī)手冊 當(dāng)完成資源共享,, 我們?nèi)绾沃腊l(fā)布了哪些權(quán)限呢?這時我們可以查看 /var/lib/nfs/etab 文件,,它是有 exportfs 命令根據(jù) /etc/exports 生成的,。 # cat /var/lib/nfs/etab /home/share 192.168.102.15(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash, subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534) /home/share *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,subtree_check, secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534) 現(xiàn)在我們來查看服務(wù)器上有關(guān)NFS服務(wù)器啟動了哪些端口: tonybox:/home/share# lsof -i|grep rpc portmap 1931 daemon 3u IPv4 4289 UDP *:sunrpc portmap 1931 daemon 4u IPv4 4290 TCP *:sunrpc (LISTEN) rpc.statd 3206 statd 3u IPv4 7081 UDP *:1029 rpc.statd 3206 statd 6u IPv4 7072 UDP *:838 rpc.statd 3206 statd 7u IPv4 7085 TCP *:1031 (LISTEN) rpc.mount 3483 root 6u IPv4 7934 UDP *:691 rpc.mount 3483 root 7u IPv4 7937 TCP *:694 (LISTEN) *************************** 5. 安全問題: 5.1 Iptables 防火墻 如果我們的NFS服務(wù)器在防火墻后邊,則需要在防火強(qiáng)策略中加入如下策略: -A INPUT -p tcp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT -A INPUT -p udp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT 5.2 使用 /etc/hosts.allow和/etc/hosts.deny 控制客戶端的訪問 /etc/hosts.allow和/etc/hosts.deny這兩個文件是tcpd服務(wù)器的配置文件,tcpd服務(wù)器可以控制外部IP對本機(jī)服務(wù)的訪問,。這兩個配置文件的格式如下: #服務(wù)進(jìn)程名:主機(jī)列表:當(dāng)規(guī)則匹配時可選的命令操作 server_name:hosts-list[:command] /etc/hosts.allow控制可以訪問本機(jī)的IP地址,,/etc/hosts.deny控制禁止訪問本機(jī)的IP。如果兩個文件的配置有沖突,,以 /etc/hosts.deny為準(zhǔn),。下面是一個/etc/hosts.allow的示例: ALL:127.0.0.1 #允許本機(jī)訪問本機(jī)所有服務(wù)進(jìn)程 smbd:192.168.0.0/255.255.255.0 #允許192.168.0.網(wǎng)段的IP訪問smbd服務(wù) ALL關(guān)鍵字匹配所有情況,EXCEPT匹配除了某些項(xiàng)之外的情況,,PARANOID匹配你想控制的IP地址和它的域名不匹配時(域名偽裝)的情況,。 比如,,在服務(wù)器的 /etc/hosts.deny 文件作如下設(shè)置: # cat /etc/hosts.deny portmap:192.168.102.15 然后在客戶機(jī)192.168.102.15上加載共享目錄 # mount 192.168.102.47:/home/share /mnt mount to NFS server '192.168.102.47' failed. 我們發(fā)現(xiàn)現(xiàn)在已經(jīng)無法加載共享目錄的,。 ********************** 6. 資源使用 除了使用mount的命令手動掛栽共享資源,還可以使用其他方法實(shí)現(xiàn)共享資源的自動掛栽: 6.1 啟動時自動掛栽 修改客戶機(jī)的 /etc/fstab文件,,加入類似如下行: 192.168.102.47:/home/share /mnt nfs rsize=8192,wsize=8192,timeo=14,intr 重啟客戶機(jī),,即可實(shí)現(xiàn)系統(tǒng)啟動時自動掛栽共享資源 6.2 使用 autofs 實(shí)現(xiàn)資源掛栽 autofs 使用 automount 守護(hù)進(jìn)程來管理你的掛載點(diǎn),它只在文件系統(tǒng)被訪問時才動態(tài)地掛載它們,。 autofs 查詢主配置文件 /etc/auto.master 來決定要定義哪些掛載點(diǎn),。然后,它使用適用于各個掛載點(diǎn)的參數(shù)來啟動 automount 進(jìn)程,。主配置中的每一行都定義一個掛載點(diǎn),,然后用單獨(dú)的配置文件定義在該掛載點(diǎn)下要掛載的文件系統(tǒng)。 安裝 autofs # aptitude install autofs 修改/etc/auto.master文件,, 加入如下內(nèi)容: /mnt /etc/auto.nfs 創(chuàng)建 /etc/auto.nfs 文件內(nèi)容如下: nfs -rw,soft,intr,rsize=8192,wsize=8192 192.168.102.47:/home/share 這樣,,每當(dāng)您進(jìn)入 /mnt/nfs 目錄時,系統(tǒng)都會嘗試將服務(wù)器的共享資源掛栽到該目錄上,。應(yīng)當(dāng)注意nfs目錄是由 automount 動態(tài)地創(chuàng)建的,,它不應(yīng)該在客戶機(jī)器上實(shí)際存在。 tonybox2:/# cd /mnt tonybox2:/mnt# ls tonybox2:/mnt# cd nfs tonybox2:/mnt/nfs# ls 123 tonybox2:/mnt/nfs# ls -l total 4 -rw-r--r-- 1 nobody nogroup 6 2006-08-22 07:50 123 tonybox2:/mnt/nfs# 如果修改了/etc/auto.master主配置文件,,則需要運(yùn)行 #/etc/init.d/autofs reload 對其進(jìn)行重新加載 *************************** 7. 參考文獻(xiàn) DebianWiki-NFS Linux NFS Overview, FAQ and HOWTO Documents 網(wǎng)絡(luò)文件系統(tǒng)(NFS) 簡易 NFS 服務(wù)器配置 Setting Up NFS HowTo Linux NFS-HOWTO Next Previous Contents |
|