Linux下NFS网络文件系统设定及管理19页word

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux下NFS网络文件系统设定及
管理
1.准备工作
2.NFS的由来与其功能2.1什么是NFS(Network FileSystem)2.2什么是RPC(Remote Procedure Call)2.3 NFS启动的RPC daemons 2.4 NFS的文件存取权限
3.NFS Server端的设定3.1所需要的套件
3.2 NFS的套件结构3.3/etc/exports配置文件的语法与参数3.4 NFS服务的
启动:rpcinfo 3.5 NFS的连接观察:
showmount,/var/lib/nfs/etab,exportfs 3.6 NFS的安全性4.NFS客户端的
设定4.1远端NFS服务器的挂载4.2客户端可处理的挂载参数与开机挂载4.3
无法挂载的原因分析4.4自动挂载autofs的使用5.案例演练6.参考资料1、
准备工作NFS这个借由网路分享文件系统的服务在架设的时候是很简单的,不过,他最大的问题在于『权限』方面的概念!因为在客户端与服务器端可能必
须要具备相同的帐号才能够存取某些目录或档案。

另外,NFS的启动需要透过
所谓的远端程序呼叫(RPC),也就是说,我们并不是只要启动NFS就好了,还
需要启动RPC这个服务才行!2、NFS的由来与其功能2.1什么是NFS(Network FileSystem)NFS(Network File System)是一种分布式文件系统,允许网络中
的安装不同操作系统的计算机间共享文件和外设,所以它的通讯协定设计与主
机及操作系统无关.它是由SUN公司于1984年推出,使得可以本地机一样的使
用另一台联网计算机的文件和外设。

NFS在文件传送或信息传送过程中依赖于RPC协议。

500)this.width=500;"border=0图一、NFS主机分享目录与
Client挂载示意图就如同上面的图示一般,当我们的NFS Server设定好共享
出来的/home/sharefile这个目录后,其他的NFS Client端就可以将这个目
录挂载到自己系统上面的某个挂载点(挂载点可以自定义),例如前面图示中的NFS client 1与NFS client 2挂载的目录就不相同。

我只要在NFS client 1
系统中进入/home/data/sharefile内,就可以看到NFS Server系统内的
/home/sharefile目录下的所有资料了(当然,权限要足够)。

这个
/home/data/sharefile就好像NFS client 1自己机器里面的一个partition。

只要权限对了,那么您可以使用cp,cd,mv,rm.等等磁盘或文件相关的命令。

好的,既然NFS是通过网络来进行文件的传输,那么经由socket pair的概念
你会知道NFS应该会使用一些port吧?那么NFS使用哪个port来进行传输呢?
答案是.不知道?因为NFS用来传输的port是随机选择小于1024以下的端口来
使用的。

那客户端怎么知道你服务器端使用那个port呢?此时就得要远程过程
调用(Remote Procedure Call,RPC)的协议来辅助,下面我们就来谈谈什么是RPC?2.2什么是RPC(Remote Procedure Call)RPC,远程过程调用(remote procedure call)是能使客户端执行其他系统中程序的一种机制。

由于使用
RPC的程序不必了解支持通信的网络协议的情况,因此RPC提高了程序的互操
作性。

常用于分布式客户端/服务器模型,发出请求的程序是客户程序,而提
供服务的程序是服务器。

因为NFS支持的功能相当的多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些port来传输文件,因此,NFS的功能所对应的port才没有固定,而是采用随机取用一些未被使用的小
于1024的端口来作为传输之用。

但如此一来又造成客户端想要连上服务器时
的困拢,因为客户端得要知道服务器端的相关端口才能够连接!此时我们就得需要远程过程调用(RPC)的服务,RPC最主要的功能就是在指定每个NFS功能
所对应的port number,并且返回给客户端,让客户端可以连结到正确的端口
上去。

那RPC又是如何知道每个NFS的端口呢?这是因为当服务器在启动NFS
时会随机取用数个端口,并主动的向RPC注册,因此RPC可以知道每个端口对应的NFS功能,然后RPC又是固定使用port 111来监听客户端的需求并返回
客户端正确的端口。

注:在启动NFS之前,RPC就要先启动了,否则NFS会无
法向RPC注册。

另外,RPC若重新启动时,原来注册的资料会不见,因此RPC
重新启动后,它管理的所有程序都需要重新启动以重新向RPC注册。

500)this.width=500;"border=0图二、NFS与RPC服务及文件系统操作的相
关性如上图所示,当客户端有NFS文件存取需求时,它会如何向服务器端请求文件呢?1)、客户端会向服务器端的RPC(port 111)发出NFS档案存取功能的
询问要求;2)、服务器端找到对应的已注册的NFS daemon端口后,会返回给
客户端;3)、客户端了解正确的端口后,就可以直接与NFS daemon来建立连接;由于NFS的各项功能都必须要向RPC来注册,如此一来RPC就能了解NFS
这个服务的各项功能之port number,PID,NFS在主机所监听的IP等等,而客
户端才能够通过RPC的询问找到正确对应的端口。

也就是说,NFS必须要有RPC存在时才能成功的提供服务,因此我们称NFS为RPC server的一种。


实上,有很多这样的服务器都是向RPC注册的,举例来说,NIS(Network Information Service)也是RPC server的一种。

此外,由图二你也会知道,
不论是客户端还是服务器端,要使用NFS时,两者都需要启动RPC才行。

更多的NFS相关协议信息你可以参考下面网页:2.3 NFS启动的RPC daemons我们
现在知道NFS服务器在启动的时候就得要向RPC注册,所以NFS服务器也被称为RPC server之一。

那么NFS服务器主要的任务是进行文件系统的共享,文
件系统的共享则与权限有关。

所以NFS服务器启动时至少需要两个daemons,
一个管理client端是否能够登入的问题,一个管理client端能够取得的权限。

如果你还想要管理quota的话,那么NFS还得要再载入其他的RPC程序。

我们
以较单纯的NFS主机来说:rpc.nfsd:这个daemon主要的功能就是在管理Client是否能够登入主机的权限,其中还包含这个登入者的ID的判别。

rpc.mountd这个daemon主要的功能,则是在管理NFS的文件系统,当Client
端顺利的通过rpc.nfsd而登入主机之后,在他可以使用NFS服务器提供的文
件之前,还会经过文件使用权限(就是那个-rwxrwxrwx与owner,group那几个
权限)的认证程序!它会去读NFS的配置文件/etc/exports来比对Client的
权限,当通过这一关之后Client就可以取得使用NFS文件的权限(注:这个也
是我们用来管理NFS共享之目录的使用权限与安全设定的地方)rpc.lockd(非
必要)这个玩意儿可以用在管理文件的锁定(lock)用途。

为何文件需要『锁定』呢?因为既然分享的NFS文件可以让客户端使用,那么当多个客户端同时尝试
写入某个文件时,就可能对于该文件造成一些问题啦!这个rpc.lockd则可以
用来克服这个问题。

但rpc.lockd必须要同时在客户端与服务器端都开启才行,此外,rpc.lockd也常与rpc.statd同时启用。

rpc.statd(非必要)可以用来
检查文件的一致性,与rpc.lockd有关!若发生因为客户端同时使用同一文件
造成文件可能有所损毁时,rpc.statd可以用来检测并尝试回复该文件。

与rpc.lockd同样的,这个功能必须要在服务器端与客户端都启动才会生效。

2.4 NFS的文件存取权限不知道你有没有想过这个问题,在图一的环境下,假
如我在NFS client 1上面以dmtsai这个使用者身份想要去存取
/home/data/sharefile/这个来自NFS server所提供的文件系统时,请问NFS server所提供的文件系统会让我以什么身份去存取?是dmtsai还是?为什么会
这么问呢?这是因为NFS本身的服务并没有进行身份登入的识别,所以说,当
你在客户端以dmtsai的身份想要存取服务器端的文件系统时,服务器端会以
客户端的使用者UID与GID等身份来尝试读取服务器端的文件系统。

这时有个
有趣的问题就产生啦!那就是如果客户端与服务器端的使用者身份并不一致怎
么办?我们以下面这个图示来说明一下:500)this.width=500;"border=0图三、NFS的服务器端与客户端的使用者身份确认机制当我以dmtsai这个一般
身份使用者要去存取来自服务器端的文件时,你要先注意到的是:文件系统的inode所记录的属性为UID,GID而非帐号与群组名。

那一般Linux主机会主动
的以自己的/etc/passwd,/etc/group来查询对应的使用者、群组名称。

所以
当dmtsai进入到该目录后,会参照NFS client 1的使用者与群组名称。

但是
由于该目录的文件主要来自NFS server,所以可能就会发现几个情况:NFS server/NFS client刚好有相同的帐号与群组则此时使用者可以直接以dmtsai
的身份进行服务器所提供的文件系统之存取。

NFS server的501这个UID帐
号对应为vbird若NFS服务器上的/etc/passwd里面UID 501的使用者名称为vbird时,则客户端的dmtsai可以存取服务器端的vbird这个使用者的文件!只因为两者具有相同的UID而已。

这就造成很大的问题了!因为没有人可以保
证客户端的UID所对应的帐号会与服务器端相同,那服务器所提供的资料就可
能会被错误的使用者修改?NFS server并没有501这个UID另一个极端的情况是,在服务器端并没有501这个UID的存在,则此时dmtsai的身份在该目录
下会被压缩成匿名者,一般NFS的匿名者会以UID为65534为其使用者,早期
的Linux distributions这个65534的帐号名称通常是nobody,我们的RHEL4
则取名为nfsnobody。

如果使用者身份是root时有个比较特殊的使用者,那
就是每个Linux主机都有的UID为0的root。

想一想,如果客户端可以用
root的身份去存取服务器端的文件系统时,那服务器端的资料哪有什么保护性?所以在预设的情况下,root的身份会被主动的压缩成为匿名者。

总之,客
户端使用者能做的事情是与UID及其GID有关的,那当客户端与服务器端的
UID及帐号的对应不一致时,可能就会造成文件系统使用上的困扰,这个就是NFS文件系统在使用上面的一个很重要的地方!而在了解使用者帐号与UID及
文件系统的关系之后,要实际在客户端以NFS取用服务器端的文件系统时,你
还得需要具有:NFS服务器有开放可写入的权限(与/etc/exports设定有关);
实际的文件权限具有可写入(w)的权限。

当你满足了(1)使用者帐号,亦即UID
的相关身份;(2)NFS服务器允许有写入的权限;(3)文件系统确实具有w的权
限时,你才具有该文件的可写入权限!尤其是身份(UID)确认的环节部分,最
容易搞错!也因为如此,所以NFS通常需要与NIS这一个可以确认客户端与服
务器端身份一致的服务搭配使用,以避免身份的错乱3、NFS Server端的设定
既然要使用NFS的话,就得要安装NFS所需要的套件,下面让我们查询一下系
统有无安装所需要的套件,NFS套件的架构以及如何设定NFS主机。

^3.1所需
要的套件以RHEL 4为例的话,要设定好NFS服务器我们必须要有两个套件才行,分别是:NFS主程序:nfs-utils RPC主程序:portmap portmap就如同
刚刚提的到,我们的NFS其实可以被视为一个RPC程序,而要启动任何一个RPC程序之前,我们都需要做好port的对应(mapping)的工作才行,这个工作
其实就是『portmap』这个服务所负责的!也就是说,在启动任何一个RPC server之前,我们都需要启动portmap才行!nfs-utils就是提供rpc.nfsd
及rpc.mountd这两个NFS daemons与其他相关documents与说明文件、执行
档等的套件!这个就是NFS的主要套件。

判断系统中是否已安装NFS相关包RHEL4系统的情况;其它版本的Redhat及Fedora的系统和这相似;#rpm-
qa|grep nfs nfs-utils-1.0.6-65.EL4#rpm-qa|grep portmap portmap-4.0-
63 3.2 NFS的套件结构/etc/exports这个文件就是NFS的主要配置文件。


统可能没有预设,所以这个文件不一定会存在,您可能必须要使用vi主动的
建立这个文件。

/usr/sbin/exportfs这个是维护NFS共享资源的命令,我们
可以利用这个命令重新共享/etc/exports变更的目录资源、将NFS Server分
享的目录卸载或重新分享等等,这个指令是NFS系统里面相当重要的。

至于指
令的用法我们在下面会再介绍。

/usr/sbin/showmount这是另一个重要的NFS
命令。

exportfs是用在NFS Server端,而showmount则主要用在Client端。

这个showmount可以用来察看NFS共享出来的目录资源。

/var/lib/nfs/*tab
在NFS服务器的登录档都放置到/var/lib/nfs/目录里面,在该目录下有两个
比较重要的登录档,一个是etab,主要记录了NFS所分享出来的目录的完整
权限设定值;另一个xtab则记录曾经连结到此NFS主机的相关客户端资料。

/var/lib/nfs/rmtab状态文件,列出了挂接导出文件的远程客户机清单。

3.3/etc/exports配置文件的语法与参数在开始NFS服务器的设置之前,您必
须要了解的是,NFS会直接使用到内核功能,所以你的内核必须要有支持NFS
才行。

万一如果你的内核版本小于2.2版,或者重新自行编译过内核的话,那
么就得要很注意,因为你可能会忘记选择NFS的核心支持。

还好,我们RHEL4
或者是其他版本的Linux,预设内核通常是支援NFS功能的,所以你只要确认
你的内核版本是目前新的2.6.x版,并且使用你的distribution所提供的核心,那应该就不会有问题。

至于NFS服务器的架设实在很简单,你只要编辑好
主要配置文件/etc/exports之后,先启动portmap,然后再启动nfs,你的
NFS就成功了!不过这样的设定能否对客户端生效?那就得要考虑你权限方面
的设定能力了。

我们就直接来看看/etc/exports应该如何配置,某些distributions并不会主动提供/etc/exports文件,所以请您自行手动建立。

例如:#vi/etc/exports/tmp
192.168.1.0/24(ro)localhost(rw)*.tw(ro,sync)[分享目
录][第一个主机(权限)][可用主机名][可用域名]这个文件的内容非常简单,
每一行由共享路径,客户端列表以及每个客户端后紧跟的访问选项构成:[共
享的目录][主机名或IP(参数,参数)]其中参数是可选的,当不指定参数时,
nfs将使用默认选项。

默认的共享选项是sync,ro,root_squash,no_delay。


主机名或IP地址为空时,则代表共享给任意客户机提供服务。

当将同一目录
共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:[共享的
目录][主机名1或IP1(参数1,参数2)][主机名2或IP2(参数3,参数4)]下面
是一些NFS共享的常用参数:ro:read-only,只读访问权限rw:read-write,
可读写的权限sync:资料同步写入到内存与硬盘中async:资料会先暂存于内
存中,而非直接写入硬盘secure:NFS通过1024以下的安全TCP/IP端口发送insecure:NFS通过1024以上的端口发送wdelay:如果多个客户要写入NFS
目录,则归组写入(默认)no_wdelay:如果多个客户要写入NFS目录,则立即
写入,当使用async时,无需此设置。

hide:在NFS共享目录中不共享其子目
录no_hide:共享NFS目录的子目录subtree_check:如果共享/usr/bin之类
的子目录时,强制NFS检查父目录的权限(默认)no_subtree_check:和上面相对,不检查父目录权限no_all_squash:保留共享文件的UID和GID(默
认)all_squash不论登入NFS的使用者身份为何,他的UID和GID映射匿名客
户anonymous(通常也就是nobody(nfsnobody)),适合公用目录。

root_squash
在登入NFS主机使用共享之目录的使用者如果是root时,那么这个使用者的
权限将被映射成为匿名使用者,通常他的UID与GID都会变成
nobody(nfsnobody)那个系统帐号的身份的权限;(默认)no_root_squas登入NFS主机使用共享目录的使用者,如果是root的话,那么对于这个共享的目
录来说,他就具有root的权限!这个项目『极不安全』,不建议使用!anonuid=xxx:指定NFS服务器/etc/passwd文件中匿名客户的UID
anongid=xxx:指定NFS服务器/etc/passwd文件中匿名客户的
GID/etc/exports中client的书写规则(1)单个主机可以用短名及完全限定名,或者用IP地址,例如student01、student01.flying或者192.168.10.1都是
合法的主机名。

(2)Net-Group可以列出/etc/netgroup文件中或NFS网组映射
中定义的整组主机。

网组名以@开头。

(3)通配符主机.discuz*.*senz(4)掩码192.168.1.0/255.255.255.0接下来我们利用上述的几个参数来实际思考一下
几个有趣的小习题:思考一:让root保有root的权限我想将/tmp共享出去
给大家使用,由于这个目录本来就是大家都可以读写的,因此想让所有的人都
可以存取。

此外,我要让root写入的文件还是具有root的权限,那如何设计
配置文件?#vi/etc/exports#任何人都可以用我的/tmp,用通配字符(*)来处理
主机名称,重点在no_root_squash/tmp*(rw,no_root_squash)参考前面的主
机名称设定说明,我们可以利用通配字符(*)。

这表示无论来自哪里都可以使
用我的/tmp这个目录。

再次提醒,『*(rw,no_root_squash)』这一串设定值
中间是没有空格的,而/tmp与*(rw,no_root_squash)则是有空格来隔开的。

特别注意到no_root_squash的功能!在这个例子中,如果你是客户端,而且
您是以root的身份登入您的Linux主机,那么当您mount上我这部主机的
/tmp之后,您在该mount的目录当中,将具有『root的权限』思考二:同一
目录针对不同范围开放不同权限我要将一个公共的目录/home/public公开出
去,但是只有限定我的局域网内192.168.0.0/24这个网段可以读写,其他人
则只能读取:#vi/etc/exports/tmp*(rw,no_root_squash)/home/public
192.168.0.0/24(rw)*(ro)#继续加在后面,注意,我有将主机与网域分为两段(用空格隔开)上面的例子说的是,当我的IP是在192.168.0.0/24这个网段的时候,那么当我在Client端挂载了Server端的/home/public后,针对这个
被我挂载的目录我就具有可以读写的权限,至于如果我不是在这个网段之内,
那么这个目录的文件我就只能读取而已,亦即为只读的属性。

需要注意的是,
通配字符仅能用在主机名称的分辨上面,IP或网段就只能用192.168.0.0/24
的状况,不可以使用192.168.0.*思考三:仅给某个单一主机使用的目录设置
我要将一个私人的目录/home/test开放给192.168.0.100这个Client端的机
器来使用,那么我就必需这么写:
#vi/etc/exports/tmp*(rw,no_root_squash)/home/public
192.168.0.0/24(rw)*(ro)/home/test 192.168.0.100(rw)#只要设定IP正确
即可!这样就设定完成了!而且,只有192.168.0.100这部机器才能对
/home/test这个目录进行存取。

思考四:开放匿名登入的情况我要让
*网域的主机,登入我的NFS主机时,可以存取/home/linux,但
是他们存资料的时候,我希望他们的UID与GID都变成40这个身份的使用者,假设我NFS服务器上的UID 40已经有设定妥当:
#vi/etc/exports/tmp*(rw,no_root_squash)/home/public
192.168.0.0/24(rw)*(ro)/home/test
192.168.0.100(rw)/home/linux*(rw,all_squash,anonuid=40,ano ngid=40)#如果要开放匿名,那么重点是all_squash,并且要配合anonuid特
别注意到那个all_squash与anonuid,anongid的功能!如此一来,当
登入这部NFS主机,并且在/home/linux写入文件时,该文件的所有人与所有群组,就会变成/etc/passwd里面对应的UID为40的那个身
份的使用者。

上面四个案例的权限如果依照前一小节的存取设定权限来思考的话,那么权限会是什么情况呢?让我们来检查一下:客户端与主机端具有相同
的UID与帐号:假设我在192.168.0.100登入这个NFS(IP假设为
192.168.0.2)主机,并且我在192.168.0.100的帐号为dmtsai这个身份,同时,在这个NFS上面也有dmtsai这个帐号,并具有相同的UID,果真如此的话,那么:a)由于192.168.0.2这个NFS主机的/tmp权限为-rwxrwxrwt,所
以我(dmtsai在192.168.0.100上面)在/tmp底下具有存取的权限,并且写入
的文件所有人为dmtsai;b)在/home/public当中,由于我有读写的权限,所
以如果在/home/public这个目录的权限对于dmtsai有开放写入的话,那么我
就可以读写,并且我写入的文件所有人是dmtsai。

但是万一/home/public对于dmtsai这个使用者并没有开放可以写入的权限时,那么我还是没有办法写入文件(这点请特别留意);c)在/home/test当中,我的权限与/home/public 相同的状态,还需要NFS主机的/home/test对于dmtsai有开放权限;d)在
/home/linux当中就比较麻烦,因为不论您是何种user,您的身份一定会被变成UID=40这个帐号!所以,这个目录就必需要针对UID=40的那个帐号名称,修改他的权限才行。

客户端与主机端的帐号并未相同时:假如我在
192.168.0.100的身份为vbird,但是192.168.0.2这部NFS主机却没有vbird这个帐号时,情况会变成怎样呢?a)我在/tmp底下还是可以写入,但是写入的文件所有人变成nobody了;b)我在/home/public里面是否可以写入,还需要视/home/public的权限而定,不过,反正我的身份就被变成nobody了就是;c)/home/test的观点与/home/public相同!d)/home/linux底下,我的身份就被变成UID=40那个使用者呢!当客户端的身份为root时:假如我在192.168.0.100的身份为root,root这个帐号每个系统都会有,权限变成怎样呢?a)我在/tmp里面可以写入,并且由于no_root_squash的参数,改变了预设的root_squash设定值,所以在/tmp写入的文件所有者为root b)我在/home/public底下的身份还是被压缩成为nobody,因为预设属性里面都具有root_squash,所以,如果/home/public有针对nobody开放写入权限时,那么我就可以写入,但是文件所有者变成nobody c)/home/test与/home/public 相同;d)/home/linux的情况中,我root的身份也被压缩成为UID=40的那个使用者这样的权限讲解之后,您可以了解了吗?这里是最重要的地方,如果这一关通过了,下面的就没有问题啦!当然,您还是得要回到前一小节NFS的文件存取权限好好的瞧一瞧,才能解决NFS的问题。

3.4 NFS服务的启动NFS的启动还需要portmap的协助,所以需先启动。

#/etc/init.d/portmap start#如果portmap本来就已经在执行了,那就不需要启动啊!#/etc/init.d/nfs start#有时候可能会出现如下的警告讯息:exportfs:/etc/exports[3]:No'sync'or'async'option specified for export"192.168.0.100:
/home/test".Assuming default behaviour('sync').#上面的警告讯息仅是在告知因为我们没有指定sync或async的参数,#则NFS将预设会使用sync的资讯而已。

你可以不理他,也可以加入/etc/exports。

#vi/etc/exports/tmp*(rw,no_root_squash,sync)/home/public
192.168.0.0/24(rw,sync)*(ro,sync)/home/test
192.168.0.100(rw,sync)/home/linux*(rw,all_squash,anonuid=4 0,anongid=40,sync)#/etc/init.d/nfs restart portmap不需要设定,只要
直接启动就行,启动之后,会出现一个port 111的sunrpc的服务,那就是portmap啦!至于nfs则会启动至少两个以上的daemon出现!然后就开始在
监听Client端的请求。

你必须要很注意屏幕上面的输出资讯,因为如果配置
文件写错的话,屏幕上会显示出错误。

此外,如果你想要增加一些NFS服务器
的文件一致性功能时,可能需要用到rpc.lockd及rpc.statd等RPC服务,那
么或许你可以增加一个服务,那就是nfslock#/etc/init.d/nfslock start启
动之后,请赶快到/var/log/messages里面看看有没有被正确的启动
呢?#vi/var/log/messages Sep 22 00:01:37 linux nfs:Starting NFS services:succeeded Sep 22 00:01:37 linux nfs:rpc.rquotad startup succeeded Sep 22 00:01:37 linux nfsd[1050]:nfssvc_versbits:
+2+3+4 Sep 22 00:01:37 linux nfs:rpc.nfsd startup succeeded Sep
22 00:01:37 linux nfs:rpc.mountd startup succeeded Sep 22 00:01:37 linux rpcidmapd:rpc.idmapd-SIGHUP succeeded在确认没有问题之后,
接下来我们来看一看NFS到底开了哪些端口?#netstat-ultn Active Internet connections(only servers)Proto Recv-Q Send-Q Local Address State
PID/Program name tcp 00 0.0.0.0:2049 LISTEN-tcp 00 0.0.0.0:803 LISTEN 1047/rpc.rquotad tcp 00 0.0.0.0:111 LISTEN 32503/portmap tcp 00 0.0.0.0:819 LISTEN 1064/rpc.mountd udp 00 0.0.0.0:2049-udp 00 0.0.0.0:800 1047/rpc.rquotad udp 00 0.0.0.0:816 1064/rpc.mountd
udp 00 0.0.0.0:111 32503/portmap注意看到上面,总共产生了好多的port,真是可怕!不过主要的端口是:portmap启动的port在111;NFS启动的port
在2049;其它rpc.daemons启动的port则是随机产生的,因此需向port 111
注册。

好了,那我怎么知道每个RPC服务的注册状况?你可以使用rpcinfo来
处理的。

#rpcinfo[-p][IP|hostname]参数:-p:显示出所有的port与porgram的信息;范例一:显示出目前这部主机的RPC状态#rpcinfo-p localhost program vers proto port 100000 2tcp 111 portmapper 100000
2udp 111 portmapper 100011 1udp 800 rquotad 100011 2udp 800 rquotad 100011 1tcp 803 rquotad 100011 2tcp 803 rquotad 100003 2udp 2049 nfs 100003 3udp 2049 nfs 100003 2tcp 2049 nfs 100003 3tcp 2049 nfs 100005 1udp 816 mountd 100005 1tcp 819 mountd 100005 2udp 816 mountd 100005 2tcp 819 mountd 100005 3udp 816 mountd 100005 3tcp 819
mountd#NFS版本端口服务名称上面出现的信息当中除了程序名称与端口的对
应可以与netstat-tlunp输出的结果作比对之外,还需要注意到NFS版本支持!新的NFS版本传输速度较快,由上表看起来,我们的NFS至少支持到第3版,
应该还算合理,如果你的rpcinfo无法输出,那就表示注册的资料有问题,可能需要重新启动portmap与nfs。

3.5 NFS的连接观察在你的NFS服务器设定
好之后,我们可以先自我测试一下是否可以连接?showmount[-
ae][hostname|IP]参数:-a:这个参数是一般在NFS SERVER上使用,是用来
显示已经mount上本机nfs目录的cline机器-e:显示主机的/etc/exports
所共享的目录。

范例一:请显示出刚刚我们所设定好的相关exports信息
#showmount-e localhost Export list for localhost:
/tmp*/home/linux*/home/public(everyone)/home/test
192.168.0.100很简单吧!所以,当您要查看某一台主机提供的NFS共享的目
录时,就使用showmount-e IP(或hostname)即可!非常的方便吧!这也是
NFS client端最常用的指令。

事实上NFS关于目录权限设定的资料非常之多!我们可以检查一下/var/lib/nfs/etab就知道了!
#tail/var/lib/nfs/etab/home/public*(ro,sync,wdelay,hide,nocrossmnt,s ecure,root_squash,no_all_squash,subtree_check,secure_locks,mapping=i dentity,anonuid=-2,anongid=-2)#上面是同一行,可以看出除了
ro,sync,root_squash等等,#其实还有anonuid及anongid等等的设定!
/tmp*(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_sq uash,subtr ee_check,secure_locks,mapping=identity,anonuid=-
2,anongid=-2)#同样的,在/tmp也有很多的权限相关的参数上面仅仅是一个
小范例,只是.怎么anonuid会是-2?其实那个数值是65536-2,所以得到65534,比对/etc/passwd,会发现RHEL4出现的是nfsnobody,这个帐号在不
同的版本都可能会不一样。

另外,如果有其他客户端挂载了你的NFS文件系统时,那么该客户端与文件系统信息就会被记录到/var/lib/nfs/xtab。

另外,
如果你想要重新处理/etc/exports文件,是不是我们每次修改了配置文件都
需要重启nfs服务呢?这个时候我们就可以用exportfs命令重新扫描
/etc/exports文件,来使改动立刻生效。

exportfs[-aruv]参数:-a:全部挂
载(或卸载)/etc/exports文件内的设置-r:重新挂载/etc/exports里面的设置,此外,亦同步更新/etc/exports及/var/lib/nfs/xtab的内容!-u:卸载某一目录-v:在export的时候,将分享的目录显示到屏幕上!范例一:重新
挂载一次/etc/exports的设置#exportfs-arv exporting 192.168.0.100:
/home/test exporting 192.168.0.0/24:/home/public
exporting*:/home/linux exporting*:/home/public
exporting*:/tmp范例二:全部卸载#exportfs-auv 3.6 NFS的安全性在NFS
的安全性上面,有些地方是你必须知道的!下面我们分别来看一看:a)利用。

相关文档
最新文档