分享
 
 
 

linux/FreeBSD下配置NFS

王朝system·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

NFS是网络文件系统(Network File System)的简称,是分布式计算系统的一个组成部分,可实现在异种网络上共享和装配远程文件系统。NFS由Sun公司开发,目前已经成为文件服务的一种标准(RFC1904,RFC1813)。其最大的功能就是可以通过网络,让不同操作系统的计算机可以共享数据,所以也可以将它看做是一个文件服务器(见图1所示)。NFS提供了除Samba之外,Windows与Linux及Unix与Linux之间通信的方法。

图1 NFS Server和Client PC示意图

Client端PC可以挂载NFS Server所提供的目录,并且挂载之后这个目录看起来就像本地的磁盘分区一样,可以使用cp、cd、mv、rm、df等磁盘相关的指令。NFS有属于自己的协议与使用的端口号码,但是在资料传送或者其它相关讯息传递的时候,NFS Server使用的则是一个称为远程过程调用(Remote Procedure Call, RPC)的协议来协助NFS Server本身的运作。

NFS本身的服务并没有提供资料传递的协议,但是它却能进行文件的共享。原因就是NFS使用到一些其它相关的传输协议,而这些传输的协议就是远程过程调用(Remote Procedure Call, RPC)。NFS也可以视为一个RPC Server。需要说明的是,要挂载NFS Server的Client PC主机,也需要同步启动远程过程调用。这样Server端和Client端才能根据远程过程调用协议进行数据共享。

使用NFS Server需要启动至少两个daemons(系统守护进程),一个用来管理Client PC是否可以登入的问题,另一个管理登入主机后的Client PC能够使用的文件权限。说明如下:

◆ rpc.nfsd 它的主要的功能就是管理Client端PC登入主机的权限,其中包含这个登入者的ID的判别。

◆ rpc.mountd 它的主要功能是管理NFS的文件系统。当Client PC顺利地通过rpc.nfsd而登入主机之后,在使用NFS Server提供的文件前,还必须取得使用权限的认证。程序会读NFS的/etc/exports来比对Client端PC的权限。

要激活NFS必须要有两个系统服务才行,它们分别是portmap和nfs-utils。NFS其实可以被视为一个RPC Server,要激活任何一个RPC Server之前,需要做好端口的对应 (Mapping)工作才行。这个工作就是portmap这个服务所负责的。nfs-utils就是提供rpc.nfsd及rpc.mountd这两个NFS daemons与其它相关说明文件等的系统服务。

NFS Server端的设定

NFS Server端的设定,首先需要确认Linux主机是否可以支持NFS这项服务,然后再设定使用者的来源IP或主机名称以及共享出去的目录权限。

那么,在Client PC怎么使用这个共享出来的目录呢?首先以showmount检查Linux Server是否有可以使用的 NFS目录。如果有就将它mount在本机上面,这样就可以使用NFS Server主机提供的资源了。

1.系统要求

除了前面已经提到的两个系统守护进程portmap与nfs-utils之外,内核(Kernel)版本最好高于2.2.18。此外,如果重新编译过内核,一定要选择支持NFS。

2.etc/exports

编辑 /etc/exports文件:

# vi /etc/exports

/usr/src/sys -maproot=daemon host2

/usr/ports -ro -network 192.168.1.0

从上面这个例子中可以看出exports文件的格式,首先是定义要共享的文件目录,必须使用绝对路径,而不能使用符号连接。后面就是对这个目录进行访问限制的参数,用于保证安全性。第一行设置中,将/usr/sys/src目录共享出去,但限制客户机上的root用户等价于本机上的daemon用户,以避免客户机上的root用户拥有这个服务器上的root权力进行非法操作;此后的host2参数是主机名,这就限制只有host2才能共享这个/usr/sys/src目录;第三行设置共享了/usr/ports目录,但限制为只允许读取,并且也只有192.168.1.0网络上的计算机才能访问这个共享目录。

◆ rw 可擦写的权限。

◆ ro 只读的权限。

◆ no_root_squash 当登入NFS主机使用共享之目录的使用者如果是root时,那么这个使用者的权限将被转换成为匿名使用者,通常它的UID与GID都会变成nobody身份。

◆ root_squash 登入NFS主机使用共享目录的使用者,如果是root,那么对于这个共享的目录来说,它就具有 root的权限。

◆ all_squash 不论登入NFS使用者的身份为何,它的身份都会被转换成为匿名使用者,通常也就是nobody。

◆ anonuid 通常为nobody,当然也可以自行设定这个UID的值,UID必须存在于/etc/passwd当中。

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

◆ sync 资料同步写入到内存与硬盘当中。

◆ async 资料会先暂存于内存当中,而非直接写入硬盘。

3.激活服务portmap和nfsd

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

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

portmap激活之后,就会出现一个端口号为111的sunrpc的服务。至于nfs则会激活至少两个以上的系统守护进程,然后就开始监听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这个文件后,不需要重新激活nfs,只要重新扫瞄一次/etc/exports的文件,并且重新将设定加载即可:

# exportfs [-aruv]

参数说明:

-a 全部挂载(或卸载) /etc/exports 文件内的设定 。

-r 重新挂载/etc/exports里的设定,此外,亦同步更新/etc/exports及/var/lib/nfs/xtab的内容。

-u 卸载某一目录。

-v 在export的时候,将共享的目录显示到屏幕上。

5.检验目录/var/lib/nfs/xtab

检验所共享的目录内容,查看/var/lib/nfs/xtab这个文件:

# 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这个共享出去的目录预设NFS里面的属性。

6.showmount

# showmount [-ae] hostname

参数说明:

-a 在屏幕上显示目前主机与Client所连上来的使用目录状态 。

-e 显示hostname这部机器的/etc/exports里面的共享目录。

当要扫瞄某一主机所提供的NFS共享的目录时,就使用showmount -e IP(或主机名称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... )随机产生的,也就是端口号不会是固定的,每次restart nfs都会得到不一样的端口号。

8. 停止NFS服务

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

Client端PC的设定

1.扫瞄可以使用的NFS Server目录

在Client本地端建立mount point,使用mount将远程主机共享的目录挂载进来。假设主机名称是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目录

首先建立这个目录,然后再利用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

将资料挂载进来后,只要进入/home/nfs/public目录,就等于到了www.cao.net那部NFS Server的/home/public 目录中。

3.卸载使用umount

# umount /home/nfs/public

关机时如果NFS Server上面还有Client联机,建议NFS Server关机之前,要先关掉portmap与nfs这两个系统服务。如果无法正确地将这两个系统服务关掉,那么先以netstat -utlp找出PID,然后使用kill杀掉进程,这样才能正常关机。

安全建议

为了保障网络安全,在使用NFS时最好结合TCP_Wrappers来限制使用范围(如果只希望192.168.5.120 这个C地址,以及IP地址为192.168.5.123的主机挂载我的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权限设定来保障安全。

--------------------------------------------------------------------------------------------------------------------------

FreeBSD

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"

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有