14简易 NFS 服务器机设定.docx

上传人:b****3 文档编号:5453318 上传时间:2022-12-16 格式:DOCX 页数:19 大小:331.56KB
下载 相关 举报
14简易 NFS 服务器机设定.docx_第1页
第1页 / 共19页
14简易 NFS 服务器机设定.docx_第2页
第2页 / 共19页
14简易 NFS 服务器机设定.docx_第3页
第3页 / 共19页
14简易 NFS 服务器机设定.docx_第4页
第4页 / 共19页
14简易 NFS 服务器机设定.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

14简易 NFS 服务器机设定.docx

《14简易 NFS 服务器机设定.docx》由会员分享,可在线阅读,更多相关《14简易 NFS 服务器机设定.docx(19页珍藏版)》请在冰豆网上搜索。

14简易 NFS 服务器机设定.docx

14简易NFS服务器机设定

简易NFS服务器机设定

1.学习本章的必备技巧

2.NFS的由来与其功能

  什么是NFS(NetworkFileSystem)

  什么是RPC(RemoteProcedureCall)

  NFS激活的RPCdaemons

3.需要的套件

4.Server端的设定

5.Client端的设定

6.RPCserver的相关指令

7.关机或结束时的注意事项

8.安全设定(被防火墙挡掉了)

学习本章的必备技巧:

  欢迎再次来到鸟哥的『碎碎念时间』!

在这个章节中,我们需要使用vi来修改设定档,并且使用激活的scripts来激活我们的服务,除此之外,亦使用简单的rpm指令来安装数据。

所以,要了解这个章节,你最起码需要知道底下这些知识:

·认识vi

·认识BASHShell

·认识服务

·常用的网络指令

·认识网络安全

·简易防火墙架设

  无论如何,将前面关于Linux基础与网络基础的内容看完,会是很好的一件事情

NFS的由来与其功能

·什么是NFS(NetworkFileSystem)

  我们要先来了解一下,什么是NFS呢?

不然讲了一堆也没有用,对吧!

^_^!

所谓的NFS就是NetworkFileSystem的缩写,最早之前是由Sun这家公司所发展出来的。

他最大的功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案(sharefile),所以,你也可以简单的将他看做是一个fileserver呢!

这个NFSServer可以让你的PC来将网络远程的NFS主机分享的目录,挂载到本地端的机器当中,所以,在本地端的机器看起来,那个远程主机的目录就好象是自己的partition一般!

使用上面相当的便利!

  就如同上面的图标一般,当我们的NFSServer设定好了之后,其它的Client端就可以直接在Server上面存取资料了!

也就是说,其它的PersonalComputer可以『挂载NFSserver所提供的档案或目录』,而且挂载之后,这个目录看起来就像你的本地端的磁盘区块一般,只要权限对了,那么你可以使用cp,cd,mv,rm...等等磁盘或档案相关的指令!

真是他X的方便吶!

  那么您或许会问啦:

『咦!

那么这个NFS是藉由什么样的协议来进行传输的呢?

』虽然NFS有属于自己的协议与使用的portnumber,但是在资料传送或者其它相关讯息传递的时候,NFS使用的则是一个称为远程过程调用(RemoteProcedureCall,RPC)的协议来协助NFS本身的运作!

·什么是RPC(RemoteProcedureCall)

  那么什么是RPC呢?

由字面上的意思来看『远程过程调用』不就是一些程序(Program)在执行远程联机时,需要用到的程序吗?

呵呵!

是这样没错啦!

简单的来说,当我们在使用某些服务来进行远程联机的时候,有些信息,例如主机的IP、服务的portnumber、与对应到的服务之PID等等,都需要管理与对应!

这些管理port的对应与服务相关性的工作,就是这个RemoteProcedureCall,RPC的任务了!

  好了,如果我们将NFS与RPC两者的相关性连接起来的话,那么你应该就可以知道:

NFS本身的服务并没有提供资料传递的协议,但是NFS却能让我们进行档案的分享,这其中的原因,就是NFS使用到一些其它相关的传输协议!

而这些传输的协议,就是使用到这个所谓的RPC的功能啰!

这也就是说,NFS本身就是使用RPC的一个program就是了!

说的更白话一点,NFS也可以视作是一个RPCserver啦!

同时要注意到的是,在某些状况中,不但跑NFS的Server需要激活RPC的服务,连带的,要挂载NFSpartition的Client机器,也需要同步激活RPC才行!

这样Server端与Client端才能藉由RPC的协议来进行programport的对应喔!

  OK!

简单的说,NFS也可以看做是RPCserver的一种,因为他是使用这种协议的program呀!

^_^!

那么为什么NFS要使用RPC执行呢?

这是因为NFS本身可以被看做是一个档案系统,那么一来的话,你的使用者联机常常变化,而且你的档案内容啦、分享的目录啦,还有其它档案相关的信息等等,也都会常常在变化,这个时候,使用类似这种可以对应programnumber与portnumber的RPC就相当的方便了!

也就是说,NFS主要在管理分享出来的目录,而至于资料的传递,就直接将他丢给RPC的协议来运作就是了!

更多关于NFS协议的信息您可以参考底下的网页:

ohttp:

//www.faqs.org/rfcs/rfc1094.html

ohttp:

//www.tldp.org/HOWTO/NFS-HOWTO/index.html

·NFS激活的RPCdaemons

  NFSserver总共需要启用到至少两个daemons,一个管理Client是否可以登入的问题,另一个管理登入主机后的Client能够使用的档案权限!

说明如下:

orpc.nfsd:

这个daemon主要的功能就是在管理Client是否能够登入主机的权限啦,其中还包含这个登入者的ID的判别喔!

orpc.mountd:

这个daemon主要的功能,则是在管理NFS的档案系统哩!

当Client端顺利的通过rpc.nfsd而登入主机之后,在他可以使用NFSserver提供的档案之前,还会经过档案使用权限(就是那个-rwxrwxrwx与owner,group那几个权限啦)的认证程序!

他会去读NFS的设定档/etc/exports来比对Client的权限,当通过这一关之后,Client就可以取得使用NFS档案的权限啦!

(注:

这个也是我们用来管理NFS分享之目录的使用权限与安全设定的地方哩!

需要的套件

  要激活NFS我们必须要有两个套件才行,分别是:

onfs-utils

oportmap

·portmap:

  就如同刚刚提的到,我们的NFS其实可以被视为一个RPCserverprogram,而要激活任何一个RPCserverprogram之前,我们都需要做好port的对应(mapping)的工作才行,这个工作其实就是『portmap』这个服务所负责的!

也就是说,在激活任何一个RPCserver之前,我们都需要激活portmap才行呢!

那么这个portmap到底在干嘛呢?

就如同这个服务的名称,哈哈!

就是作port的mapping啊!

举个例子来说:

当Client端尝试来使用RPCserver所提供的服务时,由于Client需要取得一个可以连接的port才能够使用RPCserver所提供的服务,因此,Client首先就会去跟portmap讲『喂!

可不可以通知一下,给我个portnumber,好让我可以跟RPC联络吧!

』这个时候portmap就自动的将自己管理的portmapping告知Client,好让他可以连接上来server呢!

所以啰:

『激活NFS之前,请先激活portmap!

·nfs-utils:

  就是提供rpc.nfsd及rpc.mountd这两个NFSdaemons与其它相关documents与说明文件、执行档等的套件!

这个就是NFS的主要套件啦!

一定要有喔!

  好了,知道我们需要这两个套件之后,现在干嘛?

赶快去你的系统先用RPM看一下有没有这两个套件啦!

没有的话赶快用RPM去安装喔!

不然就完不下去了!

Server端的设定:

  前面对于NFS稍微解释了一下,哇!

怎么看起来好象粉难喔!

其实一点也不!

为什么呢?

因为portmap只要一支scripts就可以激活,NFS只要设定一个档案就可以顺利运作!

那么怎么能说不简单呢!

呵呵!

这个NFS真是他X的太太太.....简单了~在开始NFS之前,让我们先以Windows的系统当中的『资源共享』来说明一下整个流程吧:

1.在WindowsServer上面,开启档案总管,在某个目录上面按右键选择激活资源共享;

2.在资源共享的内容当中,需要设定『使用者权限』(以Windows2000为例);

3.在Client端需要登入Windowsserver时,需要激活『网络上的芳邻』来寻找可用的网络上面分享的目录,然后点选该目录,若可以登入该Windowsserver时,则可以依据步骤一的权限使用该目录下的档案!

呵呵!

没错!

NFS的整个流程也差不多是这样:

·首先,需要确认一下你的Linux主机是否可以支持NFS这项服务,然后再设定一下使用者的来源IP或主机名称以及分享出去的目录的权限,之后呢,激活NFS即可将刚刚设定的目录给他分享出去了!

·那么在Client端怎么使用这个分享出来的目录?

就是先以showmount检查LinuxServer是否有可以使用的NFS目录,如果有的话,就将他mount在本机上面,如果可以mount,那么就可以使用NFS主机提供的资源了!

  哈哈!

果然很简单吧!

所以底下我们就来一个一个步骤的说明一下NFS怎么设定啰:

1.系统需求

2./etc/exports

3.关于权限问题

4.激活服务portmap,nfsd

5.exportfs

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

7.showmount

8.观察激活的portnumber

  OK!

每个咚咚的细部项目就来谈一谈吧:

o系统需求:

  嗄!

NFS有最低硬件需求吗?

呵呵!

您误会了!

这里的需求其实指的是『软件需求』啦!

需要的是:

1.除了刚刚我们已经提到的两个套件『portmap与nfs-utils』必需要存在之外;

2.您的核心版本最好能够高于2.2.xx以后比较好!

3.此外,如果重新编译过核心,你必需『一定要选择』NFS支持才行!

  目前,如果你使用的是安装时候的Linuxdistribution预设核心时,那么你都不用太担心,因为系统已经预设有支持啰!

所以底下的咚咚妳都可以玩!

但是,如果你已经重新编译过核心,并且不知道你是怎么编译的(例如道听途说啦、试试看新鲜玩意啦等等的来编译你的核心时,所以没有注意到这个项目的选择),这个时候请到底下的网页再看一看你的核心资料吧:

『核心编译』!

o/etc/exports:

  好了,已经确认『一切OK』之后,我们就真的要来玩弄NFS啦!

这个东西真的很简单的啦,只要一个档案就可以搞定了!

那就是编辑/etc/exports这个档案,请注意,这个档案如果不存在,请自行建立!

并且,档名不要写错了喔!

这个档案的内容很简单啦,我们列出他的规则:

  上面的规则是这样的:

欲分享的目录主要是要分享给主机名称1及主机名称2,但是提供给这两者的权限并不一样,其中,给主机名称1的权限是参数1与参数2,至于给主机名称2的Client权限则是参数3与参数4。

好了,那么那个『权限』也就是『参数』主要有哪些呢?

rw:

可擦写的权限;

ro:

只读的权限;

no_root_squash:

登入NFS主机使用分享目录的使用者,如果是root的话,那么对于这个分享的目录来说,他就具有root的权限!

这个项目『极不安全』,不建议使用!

root_squash:

在登入NFS主机使用分享之目录的使用者如果是root时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的UID与GID都会变成nobody那个身份;

all_squash:

不论登入NFS的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是nobody啦!

anonuid:

前面关于*_squash提到的匿名使用者的UID设定值,通常为nobody,但是你可以自行设定这个UID的值!

当然,这个UID必需要存在于你的/etc/passwd当中!

anongid:

同anonuid,但是变成groupID就是了!

sync:

资料同步写入到内存与硬盘当中;

async:

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

  大致的参数就是这几样啰!

那么我们来假设几个例子好了:

  思考一:

我要将/tmp分享出去给大家使用,由于这个目录本来就是大家都可以读写的,因此我要让所有的人都可以存取。

此外,我要让root写入的档案还是具有root的权限!

那么你可以这么写喔!

  样一来,无论来自哪里(*万用字符!

表示万事OK!

)都可以使用我的/tmp这个目录。

请注意,那个*(rw,no_root_squash)中间没有空格符喔!

而/tmp与*(rw,no_root_squash)则是有空格符来隔开的!

特别注意到那个no_root_squash的功能!

 

  思考二:

我要将一个公共的目录/home/public公开出去,但是只有限定我的局域网络内192.168.0.0/24这个网域可以读写,其它人则只能读取:

  请注意,在上面的例子中,倒数两行的格式都可以适用!

所以只要写一行即可!

上面的例子说的是,当我的IP是在192.168.0.0/24这个网段的时候,那么/home/public我就可以读写~至于如果我不是在这个网段之内,那么这个目录的资料我就仅能读取而已,亦即为只读的属性啦!

 

  思考三:

我要将一个私人的目录/home/test开放给192.168.0.100这个Client端的机器来使用,那么我就必需这么写:

  这样就设定完成了!

而且,只有192.168.0.100这部机器才能对/home/test这个目录进行存取喔!

 

  思考四:

我要让*.linux.org网域的主机,登入我的NFS主机时,可以存取/home/linux,但是他们存资料的时候,我希望他们的UID与GID都变成40这个身份的使用者:

  特别注意到那个all_squash与anonuid,anongid的功能!

如此一来,当test.linux.org登入这部NFS主机,并且在/home/linux写入档案时,该档案的所有人与所有群组,就会变成/etc/passwd里面对应的UID为40的那个身份的使用者了!

o关于权限问题:

  无论任何时候,权限的问题都是需要考虑到的!

让我们来看看刚刚建立的/etc/exports档案的内容:

  假设我在192.168.0.100登入这部NFS(IP假设为192.168.0.2)主机,并且我在192.168.0.100的帐号为test这个身份,同时,在这部NFS上面也有test这个帐号,果真如此的话,那么:

1.由于192.168.0.2这部NFS主机的/tmp权限为-rwxrwxrwt,所以我(test在192.168.0.100上面)在/tmp底下具有存取的权限,并且写入的档案所有人为test;

2.在/home/public当中,由于我有读写的权限,所以如果在/home/public这个目录的权限对于test有开放写入的话,那么我就可以读写,并且我写入的档案所有人是test。

但是万一/home/public对于test这个使用者并没有开放可以写入的权限时,那么我还是没有办法写入档案喔!

这点请特别留意!

3.在/home/test当中,我的权限与/home/public相同的状态!

还需要NFS主机的/home/test对于test有开放权限;

4.在/home/linux当中就比较麻烦!

因为不论你是何种user,你的身份一定会被变成UID=40这个帐号!

所以,这个目录就必需要针对UID=40的那个帐号名称,修改他的权限才行!

 

  那么假如我在192.168.0.100的身份为test2,但是192.168.0.2这部NFS主机却没有test2这个帐号时,情况会变成怎样呢?

1.我在/tmp底下还是可以写入,但是写入的档案所有人变成nobody了;

2.我在/home/public里面是否可以写入,还需要视/home/public的权限而定,不过,反正我的身份就被变成nobody了就是;

3./home/test的观点与/home/public相同!

4./home/linux底下,我的身份就被变成UID=40那个使用者就是了!

 

  那么假如我在192.168.0.100的身份为root呢?

root这个帐号每个系统都会有呀!

呵呵!

权限变成怎样呢?

1.我在/tmp里面可以写入,并且由于no_root_squash的参数,改变了预设的root_squash设定值,所以在/tmp写入的档案所有人为root喔!

2.我在/home/public底下的身份还是被压缩成为nobody了!

因为预设属性里面都具有root_squash呢!

所以,如果/home/public有针对nobody开放写入权限时,那么我就可以写入,但是档案所有人变成nobody就是了!

3./home/test与/home/public相同;

4./home/linux的情况中,我root的身份也被压缩成为UID=40的那个使用者了!

 

  这样的权限讲解之后,您可以了解了吗?

这里是最重要的地方,如果这一关通过了,底下的咚咚就没有问题啦!

^_^

o激活服务portmap,nfsd

  好了,设定OK也没有权限的问题之后(有问题也没关系,可以事后在好好的检视与修改一番!

),再来自然就是激活他啰!

如何激活呢?

简单的很,直接给他OK下去!

  那个portmap根本就不需要设定!

只要直接激活他就可以啦!

激活之后,会出现一个port111的sunrpc的服务!

那就是portmap啦!

至于nfs则会激活至少两个以上的daemon出现!

然后就开始在监听Client端的需求啦!

激活之后,请赶快到/var/log/messages里面看看有没有被正确的激活呢?

  要正常的出现上面的字样之后,才算是正确的激活喔!

oexportfs:

  好了,那么如果我们修改了/etc/exports这个档案之后,是否需要重新激活nfs呢?

呵呵,并不需要,只要使用exportfs重新扫瞄一次/etc/exports这的档案,并且重新将设定加载即可!

因此,就要来了解一下exportfs的用法了:

  要熟悉一下这个指令的用法喔!

这样一来,就可以直接重新export我们的记录在/etc/exports的目录资料啰!

o检验目录/var/lib/nfs/xtab

  好了,当你顺利的将你的目录都分享出去之后,你怎么知道每个目录的分享权限呢?

不要忘记了,因为我们有相当多的预设属性呢!

因此,这个时候就得需要检验一下你所分享的目录内容啰!

看一下/var/lib/nfs/xtab这个档案吧!

他有点像这样:

  看到没?

这个就是/home/test这个分享出去的目录的预设NFS里面的属性啦!

这个属性状态里头有个比较奇怪的,那就是anonuid=-2这个,怎么有uid=-2的呢?

呵呵!

其实它说的是将65536-2的值,也就是65534的那个UID啦!

对照一下/etc/passwd,你就会发现,哇!

原来那就是nobody的啦!

oshowmount:

  showmount顾名思义,就是看看有没有可以mount的指令嘛!

怎么用呢?

  很简单吧!

所以,当你要扫瞄某一部主机他提供的NFS分享的目录时,就使用showmount-eIP(或hostname)即可!

非常的方便吧!

o观察激活的portnumber:

  OK!

来看看我们激活NFS之后,到底激活了多少的port呢?

要注意的是,我们有激活portmap与nfs两支scripts喔!

  注意看到上面喔!

总共产生了好多的port喔!

真是可怕!

先注意到nfs自己所开启的port,就是那个2049的port啦!

那个就是NFS主要产生的port啰。

那么其它的rpc.xxxx的port又是从何而来?

NFSserver在前面我们就提过了,他是RPCserver的一种,而NFS由于提供了多个program(例如rpc.mountd,rpc.rquotad,rpc.nfsd...),因此就需要激活多个port了!

而且这些port是『随机产生的』,也就是那个portnumber不会是固定的啦!

每次restartnfs都会得到不一样的portnumber呢!

那么Client端怎么知道要连接上那个port来呼叫需要的program呢?

呵呵!

那就是sunrpc(port111)那个portmap服务所产生的portnumber的功用啦!

Client会先连接到sunrpc那个port去知道应该到那个port去呼叫所需要的程序!

所以啰,rpc.xxxx等之类的daemon自然就不需要有固定的portnumber啰!

  OK!

这样一来,Server端的设定就OK啦!

Client端的设定:

挂载远程主机:

  好了,Server端已经设定完毕,接着下来自然就是要使用Client端连接上Server端啰!

那么连接上Server的步骤是怎样

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1