Linux系統(tǒng)的NFS服務(wù)配置
本文以u(píng)buntu系統(tǒng)為例,描述nfs服務(wù)的配置方法。
一、服務(wù)器配置
1. 安裝NFS服務(wù)器程序軟件包
linux@farsight:~$ sudo apt-get install nfs-kernel-server
2.配置nfs服務(wù)的共享目錄
linux@farsight:~$sudo vi /etc/exports
配置NFS服務(wù)器的關(guān)鍵也就是配置該文件。配置文件中一行即為一條配置項(xiàng),用于指明網(wǎng)絡(luò)中的“哪些客戶(hù)端”共享“哪些目錄資源”。導(dǎo)出資源配置項(xiàng)格式如下所示。
共享目錄 主機(jī)名 (權(quán)限)
共享目錄表示服務(wù)器中導(dǎo)出的共享資源路徑,必須使用絕對(duì)路徑名;
主機(jī)名的寫(xiě)法有很多種:
網(wǎng)段:192.168.1.0/24
完整IP:192.168.1.23
主機(jī)名稱(chēng):但此主機(jī)名稱(chēng)需要存在于/etc/hosts中或使用DNS可以找到,找到IP即可
支持通配符,如*?
所有主機(jī):*
權(quán)限表示賦予每個(gè)客戶(hù)端主機(jī)的訪(fǎng)問(wèn)權(quán)限。括號(hào)內(nèi)是設(shè)置權(quán)限參數(shù)的位置,權(quán)限不止一個(gè)時(shí),使用,隔開(kāi),主機(jī)名和括號(hào)連在一起。
權(quán)限參數(shù)說(shuō)明如下:
Rw:read-write可讀寫(xiě)的權(quán)限
Ro:read-only只讀權(quán)限
no_root_squash:登入NFS主機(jī)使用共享目錄的用戶(hù),如果是用戶(hù)root,對(duì)于此共享目錄具有root權(quán)限,不建議使用。
root_squash:登入NFS主機(jī)使用共享目錄的用戶(hù),如果是用戶(hù)root,此用戶(hù)權(quán)限將被壓縮為匿名用戶(hù),其UID和GID都會(huì)被壓縮為nobody(nfsnobody)系統(tǒng)賬號(hào)的身份。
all_squash:不論登入NFS的用戶(hù)身份為何,其身份都被轉(zhuǎn)換成為匿名用戶(hù),即nobody。
anonuid=xxx :指定NFS服務(wù)器/etc/passwd文件中匿名用戶(hù)的UID,但此UID必須存在于/etc/passwd中。
anongid=xxx:指定NFS服務(wù)器/etc/passwd文件中匿名用戶(hù)的GID ,但此GID必須存在于/etc/group中。
Anongid:同anonuid,變成group ID即可。
Sync:數(shù)據(jù)同步寫(xiě)入到內(nèi)存與硬盤(pán)中
Async:數(shù)據(jù)先暫存于內(nèi)存中,而非直接寫(xiě)入硬盤(pán)
Secure: NFS通過(guò)1024以下的安全TCP/IP端口發(fā)送
insecure: NFS通過(guò)1024以上的端口發(fā)送
hide : 在NFS共享目錄中不共享其子目錄
no_hide: 共享NFS目錄的子目錄
subtree_check: 如果共享/source/rootfs之類(lèi)的子目錄時(shí),強(qiáng)制NFS檢查父目錄的權(quán)限(默認(rèn))
Zno_subtree_check : 和上面相對(duì),不檢查父目錄權(quán)限
備注:這里所說(shuō)的匿名用戶(hù),指的是/etc/passwd中的nodody用戶(hù)。
nobody用戶(hù)對(duì)應(yīng)的組如下:
權(quán)限說(shuō)明:
1.NFS server和NFS client具有相同的UID和賬號(hào)
如果NFSserver和NFSclient具有相同共享文件賬號(hào)和相同UID,客戶(hù)端登入NFSserver時(shí),就會(huì)擁有/etc/exports設(shè)置的權(quán)限
2.NFS server和NFS client具有不同的賬號(hào)
如果NFSclient不擁有NFSserver共享文件賬號(hào),或NFSclient的賬號(hào)在NFSserver不存在,是否可以讀寫(xiě)共享目錄,需要查看NFSserver的權(quán)限而定,其身份會(huì)變?yōu)槟涿脩?hù)nobody
3.NFS client的身份為root
默認(rèn)情況下,客戶(hù)端的root身份會(huì)被壓縮成匿名用戶(hù)nobody
配置舉例:
/source/rootfs 192.168.1.29(rw)
設(shè)置共享目錄/source/rootfs ,僅192.168.1.29主機(jī)允許訪(fǎng)問(wèn)此共享目錄,具有讀寫(xiě)權(quán)限
/source/rootfs 192.168. 1.29 (rw) *(ro)
設(shè)置共享目錄/source/rootfs,192.1681.29可以讀寫(xiě)該共享目錄,其他主機(jī)只可以讀取該共享目錄
/source/rootfs 192.168. 1.29(no_root_squash)
設(shè)置共享目錄/source/rootfs,僅192.168.1.29可以訪(fǎng)問(wèn)和讀寫(xiě),root登錄時(shí)擁有root權(quán)限
/source/rootfs 192.168.1.0/24(rw)
設(shè)置共享目錄/source/rootfs,僅有192.168.1.0/24網(wǎng)段的主機(jī)才可訪(fǎng)問(wèn)和讀寫(xiě)此目錄文件
/source/rootfs *(rw,all_squash,anonuid=500,anongid=500)
設(shè)置共享目錄/source/rootfs,所有主機(jī)都允許訪(fǎng)問(wèn)此共享目錄,具有讀寫(xiě)權(quán)限,但他們?cè)L問(wèn)該共享目錄時(shí),已將其UID、GID設(shè)置成500。NFSserver主機(jī)中UID、GID=500的權(quán)限已經(jīng)設(shè)置好
3.啟動(dòng)nfs服務(wù)
通常,NFS服務(wù)的守護(hù)進(jìn)程是以持續(xù)監(jiān)聽(tīng)端口的獨(dú)占方式運(yùn)行。用戶(hù)通過(guò)使用NFS的初始化腳本,可以手動(dòng)啟停NFS服務(wù)。系統(tǒng)管理員在調(diào)整共享資源之后,一定要重新啟動(dòng)NFS服務(wù),以便使修改的配置生效。
啟動(dòng)NFS服務(wù):
linux@farsight:~$ sudo /etc/init.d/nfs-kernel-server start
停止NFS服務(wù)
linux@farsight:~$ sudo /etc/init.d/nfs-kernel-server stop
重新啟動(dòng)NFS服務(wù)
linux@farsight:~$ sudo /etc/init.d/nfs-kernel-server restart
查看NFS服務(wù)當(dāng)前狀態(tài)
NFS服務(wù)開(kāi)啟時(shí)顯示nfsd running,關(guān)閉是顯示 nfs not running。
linux@farsight:~$ sudo /etc/init.d/nfs-kernel-server status
二、客戶(hù)端配置
1. 查看NFS服務(wù)器的共享資源
$showmount -e 192.168.1.29
2. 掛載NFS服務(wù)器中的共享目錄到本地目錄/mnt/nfs下
$sudo mount -t nfs 192.168.1.29:/source/rootfs /mnt/nfs
3. 卸載系統(tǒng)中已掛載的NFS共享目錄
$ sudo umount /mnt/nfs
4. 修改fstab文件讓系統(tǒng)啟動(dòng)時(shí)自動(dòng)掛載NFS文件
#vi /etc/fstab
192.168.1.29: /source/rootfs /mnt/nfs nfs defaults 0 0
linux /etc/fstab的內(nèi)容主要包括六項(xiàng)
例如下面兩行:
LABEL=/ / ext3 defaults 1 1
/dev/sda2 /mnt/D/ vfat defaults 0 0
第一列:設(shè)備名或者設(shè)備卷標(biāo)名 (/dev/sda10 或者 LABEL=/)
第二列: 設(shè)備掛載目錄 (例如上面的 "/" 或者 "/mnt/D/")[!--empirenews.page--]
第三列: 設(shè)備文件系統(tǒng) (例如上面的 "ext3" 或者 "vfat")
第四列:掛載參數(shù) (看幫助 man 8 mount)
對(duì)于已經(jīng)掛載好的設(shè)備,例如上面的/dev/sda2,現(xiàn)在要改變掛載參數(shù),這時(shí)可以不用卸載該設(shè)備,而可以使用下面的命令(沒(méi)有掛載的設(shè)備,remount 這個(gè)參數(shù)無(wú)效)
$ mount /mnt/D/ -o remount,ro (改defaults為ro)
為了安全起見(jiàn),可以指明其他掛載參數(shù),例如:
noexec (不允許可執(zhí)行文件可執(zhí)行,但千萬(wàn)不要把根分區(qū)掛為noexec,那就無(wú)法使用系統(tǒng)了
nodev (不允許掛載設(shè)備文件)
nosuid,nosgid(不允許有 suid 和 sgid 屬性)
nouser(不允許普通用戶(hù)掛載)
第五列:指明是否要備份 (0 為不備份,1 為要備份, 一般根分區(qū)要備份)
第六列:指明自檢順序 (0 為不自檢,1 或者 2 為要自檢, 如果是根分區(qū)要設(shè)為1,其他分區(qū)只能是2)
# This file is edited by fstab-sync - see ‘man fstab-sync‘ for details
/dev/hda1 /boot ext3 defaults 1 2
/dev/hda2 /data ext3 defaults 1 2
/dev/hda3 / ext3 defaults 1 1
/dev/hda5 /oracle ext3 defaults 1 2
/dev/hda6 /home ext3 defaults 1 2
/dev/hda7 swap swap defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0