日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

linux/FreeBSD下配置NFS

 德威雅 2020-01-31
NFS是網(wǎng)絡(luò)文件系統(tǒng)(Network File System)的簡稱,是分布式計(jì)算系統(tǒng)的一個(gè)組成部分,可實(shí)現(xiàn)在異種網(wǎng)絡(luò)上共享和裝配遠(yuǎn)程文件系統(tǒng)。NFS由Sun公司開發(fā),目前已經(jīng)成為文件服務(wù)的一種標(biāo)準(zhǔn)(RFC1904,RFC1813)。其最大的功能就是可以通過網(wǎng)絡(luò),讓不同操作系統(tǒng)的計(jì)算機(jī)可以共享數(shù)據(jù),所以也可以將它看做是一個(gè)文件服務(wù)器(見圖1所示)。NFS提供了除Samba之外,Windows與Linux及Unix與Linux之間通信的方法。

95359.jpg


圖1 NFS Server和Client PC示意圖


Client端PC可以掛載NFS Server所提供的目錄,并且掛載之后這個(gè)目錄看起來就像本地的磁盤分區(qū)一樣,可以使用cp、cd、mv、rm、df等磁盤相關(guān)的指令。NFS有屬于自己的協(xié)議與使用的端口號碼,但是在資料傳送或者其它相關(guān)訊息傳遞的時(shí)候,NFS Server使用的則是一個(gè)稱為遠(yuǎn)程過程調(diào)用(Remote Procedure Call, RPC)的協(xié)議來協(xié)助NFS Server本身的運(yùn)作。

NFS本身的服務(wù)并沒有提供資料傳遞的協(xié)議,但是它卻能進(jìn)行文件的共享。原因就是NFS使用到一些其它相關(guān)的傳輸協(xié)議,而這些傳輸?shù)膮f(xié)議就是遠(yuǎn)程過程調(diào)用(Remote Procedure Call, RPC)。NFS也可以視為一個(gè)RPC Server。需要說明的是,要掛載NFS Server的Client PC主機(jī),也需要同步啟動(dòng)遠(yuǎn)程過程調(diào)用。這樣Server端和Client端才能根據(jù)遠(yuǎn)程過程調(diào)用協(xié)議進(jìn)行數(shù)據(jù)共享。

使用NFS Server需要啟動(dòng)至少兩個(gè)daemons(系統(tǒng)守護(hù)進(jìn)程),一個(gè)用來管理Client PC是否可以登入的問題,另一個(gè)管理登入主機(jī)后的Client PC能夠使用的文件權(quán)限。說明如下:

◆ rpc.nfsd 它的主要的功能就是管理Client端PC登入主機(jī)的權(quán)限,其中包含這個(gè)登入者的ID的判別。

◆ rpc.mountd 它的主要功能是管理NFS的文件系統(tǒng)。當(dāng)Client PC順利地通過rpc.nfsd而登入主機(jī)之后,在使用NFS Server提供的文件前,還必須取得使用權(quán)限的認(rèn)證。程序會(huì)讀NFS的/etc/exports來比對Client端PC的權(quán)限。

要激活NFS必須要有兩個(gè)系統(tǒng)服務(wù)才行,它們分別是portmap和nfs-utils。NFS其實(shí)可以被視為一個(gè)RPC Server,要激活任何一個(gè)RPC Server之前,需要做好端口的對應(yīng) (Mapping)工作才行。這個(gè)工作就是portmap這個(gè)服務(wù)所負(fù)責(zé)的。nfs-utils就是提供rpc.nfsd及rpc.mountd這兩個(gè)NFS daemons與其它相關(guān)說明文件等的系統(tǒng)服務(wù)。

NFS Server端的設(shè)定


NFS Server端的設(shè)定,首先需要確認(rèn)Linux主機(jī)是否可以支持NFS這項(xiàng)服務(wù),然后再設(shè)定使用者的來源IP或主機(jī)名稱以及共享出去的目錄權(quán)限。

那么,在Client PC怎么使用這個(gè)共享出來的目錄呢?首先以showmount檢查Linux Server是否有可以使用的 NFS目錄。如果有就將它mount在本機(jī)上面,這樣就可以使用NFS Server主機(jī)提供的資源了。

1.系統(tǒng)要求

除了前面已經(jīng)提到的兩個(gè)系統(tǒng)守護(hù)進(jìn)程portmap與nfs-utils之外,內(nèi)核(Kernel)版本最好高于2.2.18。此外,如果重新編譯過內(nèi)核,一定要選擇支持NFS。

2.etc/exports

編輯 /etc/exports文件:

# vi /etc/exports/usr/src/sys -maproot=daemon host2/usr/ports -ro -network 192.168.1.0


從上面這個(gè)例子中可以看出exports文件的格式,首先是定義要共享的文件目錄,必須使用絕對路徑,而不能使用符號連接。后面就是對這個(gè)目錄進(jìn)行訪問限制的參數(shù),用于保證安全性。第一行設(shè)置中,將/usr/sys/src目錄共享出去,但限制客戶機(jī)上的root用戶等價(jià)于本機(jī)上的daemon用戶,以避免客戶機(jī)上的root用戶擁有這個(gè)服務(wù)器上的root權(quán)力進(jìn)行非法操作;此后的host2參數(shù)是主機(jī)名,這就限制只有host2才能共享這個(gè)/usr/sys/src目錄;第三行設(shè)置共享了/usr/ports目錄,但限制為只允許讀取,并且也只有192.168.1.0網(wǎng)絡(luò)上的計(jì)算機(jī)才能訪問這個(gè)共享目錄。

◆ maproot=登陸時(shí)映射為哪個(gè)用戶 (0是root)

◆ rw 可擦寫的權(quán)限。

◆ ro 只讀的權(quán)限。

◆ no_root_squash 當(dāng)?shù)侨隢FS主機(jī)使用共享之目錄的使用者如果是root時(shí),那么這個(gè)使用者的權(quán)限將被轉(zhuǎn)換成為匿名使用者,通常它的UID與GID都會(huì)變成nobody身份。

◆ root_squash 登入NFS主機(jī)使用共享目錄的使用者,如果是root,那么對于這個(gè)共享的目錄來說,它就具有 root的權(quán)限。

◆ all_squash 不論登入NFS使用者的身份為何,它的身份都會(huì)被轉(zhuǎn)換成為匿名使用者,通常也就是nobody。

◆ anonuid 通常為nobody,當(dāng)然也可以自行設(shè)定這個(gè)UID的值,UID必須存在于/etc/passwd當(dāng)中。

◆ anongid 同anonuid,但是變成group ID就是了。

◆ sync 資料同步寫入到內(nèi)存與硬盤當(dāng)中。

◆ async 資料會(huì)先暫存于內(nèi)存當(dāng)中,而非直接寫入硬盤。

3.激活服務(wù)portmap和nfsd

# /etc/rc.d/init.d/portmap  start # /etc/rc.d/init.d/nfs  start  


portmap激活之后,就會(huì)出現(xiàn)一個(gè)端口號為111的sunrpc的服務(wù)。至于nfs則會(huì)激活至少兩個(gè)以上的系統(tǒng)守護(hù)進(jìn)程,然后就開始監(jiān)聽Client PC的需求,用cat/var/log/messages可以看到操作是否成功:

#cat /var/log/messages Nov 16 15:04:45 cao portmap: portmap startup succeeded Nov 16 15:04:53 cao nfs: Starting NFS services: succeeded Nov 16 15:04:54 cao nfs: rpc.rquotad startup succeeded Nov 16 15:04:54 cao nfs: rpc.mountd startup succeeded Nov 16 15:04:54 cao nfs: rpc.nfsd startup succeeded


4.exportfs

如果修改了/etc/exports這個(gè)文件后,不需要重新激活nfs,只要重新掃瞄一次/etc/exports的文件,并且重新將設(shè)定加載即可:

# exportfs [-aruv]


參數(shù)說明:

-a 全部掛載(或卸載) /etc/exports 文件內(nèi)的設(shè)定 。

-r 重新掛載/etc/exports里的設(shè)定,此外,亦同步更新/etc/exports及/var/lib/nfs/xtab的內(nèi)容。

-u 卸載某一目錄。

-v 在export的時(shí)候,將共享的目錄顯示到屏幕上。

5.檢驗(yàn)?zāi)夸?var/lib/nfs/xtab

檢驗(yàn)所共享的目錄內(nèi)容,查看/var/lib/nfs/xtab這個(gè)文件:

# vi /var/lib/nfs/xtab /home/cao 192.168.0.1(rw,sync,wdelay,hide,secure,root_squash, no_all_squash,subtree_check,secure_locks, mapping=identity,anonuid=-2, anongid=-2)


這就是/home/cao這個(gè)共享出去的目錄預(yù)設(shè)NFS里面的屬性。

6.showmount

# showmount [-ae] hostname


參數(shù)說明:

-a 在屏幕上顯示目前主機(jī)與Client所連上來的使用目錄狀態(tài) 。

-e 顯示hostname這部機(jī)器的/etc/exports里面的共享目錄。

當(dāng)要掃瞄某一主機(jī)所提供的NFS共享的目錄時(shí),就使用showmount -e IP(或主機(jī)名稱hostname)即可。

7.觀察激活的端口號

# netstat -utln Active Internet connections (only SERVERs) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN <== portmap tcp 0 0 0.0.0.0:817 0.0.0.0:* LISTEN <== rpc.xxxx tcp 0 0 0.0.0.0:1266 0.0.0.0:* LISTEN <== rpc.xxxx udp 0 0 0.0.0.0:2049 0.0.0.0:*           <== nfs 的 port udp 0 0 0.0.0.0:814 0.0.0.0:*           <== rpc.xxxx udp 0 0 0.0.0.0:1327 0.0.0.0:*           <== rpc.xxxx udp 0 0 0.0.0.0:111 0.0.0.0:*           <== portmap


nfs所開啟的端口是2049,其它的端口是RPC Server其它程序(例如rpc.mountd、rpc.rquotad、rpc.nfsd... )隨機(jī)產(chǎn)生的,也就是端口號不會(huì)是固定的,每次restart nfs都會(huì)得到不一樣的端口號。


8. 停止NFS服務(wù)

# /etc/rc.d/init.d/portmap stop


Client端PC的設(shè)定



1.掃瞄可以使用的NFS Server目錄

在Client本地端建立mount point,使用mount將遠(yuǎn)程主機(jī)共享的目錄掛載進(jìn)來。假設(shè)主機(jī)名稱是www.cao.net,使用showmount查看NFS Server可以共享的目錄。然后將/home/public掛載在 /home/nfs/public下:

# showmount -e www.cao.net Export list for localhost: /tmp * /home/linux *.cao.net /home/public (everyone) /home/cao 192.168.0.1


2.掛載/home/public目錄

首先建立這個(gè)目錄,然后再利用mount指令來掛載/home/public目錄:

# mkdir -p /home/nfs/public  # mount -t nfs CAO.linux.org:/home/public /home/nfs/public


掛載的格式:

# mount -t nfs hostname(orIP):/directory/mount/point # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda1 1904920 1235380 572776 68% / /dev/hdb1 976344 115212 810736 13% /backup www.cao.net:/home/public 1904920 1235376 572776 69% /home/nfs/public


將資料掛載進(jìn)來后,只要進(jìn)入/home/nfs/public目錄,就等于到了www.cao.net那部NFS Server的/home/public 目錄中。

3.卸載使用umount

# umount /home/nfs/public


關(guān)機(jī)時(shí)如果NFS Server上面還有Client聯(lián)機(jī),建議NFS Server關(guān)機(jī)之前,要先關(guān)掉portmap與nfs這兩個(gè)系統(tǒng)服務(wù)。如果無法正確地將這兩個(gè)系統(tǒng)服務(wù)關(guān)掉,那么先以netstat -utlp找出PID,然后使用kill殺掉進(jìn)程,這樣才能正常關(guān)機(jī)。

安全建議



為了保障網(wǎng)絡(luò)安全,在使用NFS時(shí)最好結(jié)合TCP_Wrappers來限制使用范圍(如果只希望192.168.5.120 這個(gè)C地址,以及IP地址為192.168.5.123的主機(jī)掛載我的NFS Server):

# vi /etc/hosts.allow portmap: 192.168.5.120/255.255.255.248 : allow portmap: 192.168.5.123 : allow# vi /etc/hosts.deny portmap: ALL : deny



除了使用TCP_Wrappers之外,還可以使用iptables防火墻、/etc/exports權(quán)限設(shè)定來保障安全。


--------------------------------------------------------------------------------------------------------------------------
FreeBSD
配置rpc服務(wù)
vi /etc/rc.conf
nfs_server_enable='YES'
nfs_server_flags='-u -t -n 4'
rpc_statd_enable='YES'
rpc_lockd_enable='YES'
portmap_enable='YES'
mountd_flags='-r'


---------------------------------------------------------------------------
修改/ect/exports后要SIGHUP
kill -s  HUP `cat /var/run/mountd.pid`

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多