版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第26章 网络硬盘NFS,NFS是网络文件系统(Network File System)的简称,用于在计算机间共享文件系统。通过NFS可以让远程主机的文件系统看起来就像是在本地一样。这个由Sun公司于1985年推出的协议产品如今已被广泛采用,几乎(这个词甚至可以舍去)所有的Linux发行版都支持NFS NFS同样基于服务器-客户机架构,本章将着重讨论NFS服务器的安装和配置。NFS只能用于UNIX类主机间的文件共享,Windows客户机应该使用Samba获得文件服务,参考25章获得相关资料。,26.1 快速上手:搭建一个NFS服务器,按照惯例,本节帮助读者快速搭建一个NFS服务器,这个NFS服
2、务器实现最基本的功能:向外界不加限制地导出一个目录。这里暂时不考虑安全方面的因素,稍后会详细介绍和NFS配置相关的完整信息。,26.1.1 安装NFS服务器,所有的主流Linux发行版都在软件包管理系统中附带了NFS服务器套件,用户所要做的只是安装而已。以Ubuntu Linux为例,只要简单地在Shell终端执行下面这条命令,就可以完成安装NFS服务器需要的一切步骤: $ sudo apt-get install nfs-common nfs-kernel-server 正在读取软件包列表. 完成 正在分析软件包的依赖关系树 读取状态信息. 完成 将会安装下列额外的软件包: libevent
3、1 libgssglue1 libnfsidmap2 librpcsecgss3 portmap ,26.1.2 简易配置,完成NFS服务器的安装后,还需要对其进行相关设置,以确定哪些文件应该被共享。通过修改/etc/exports文件来实现服务器的配置。用熟悉的文本编辑器打开/etc/exports文件(需要有root权限),在末尾添加下面这一行: /srv/nfs_share*(rw),26.1.3 测试NFS服务器,作为测试,下面通过mount命令在另一台主机上挂载这个文件系统,如果读者一时找不到其它Linux主机可供测试,那么可以直接在本地完成实验。在服务器的主机名(或者IP地址)和导
4、出目录之间用冒号连接,-o选项指定了使用可读写方式挂载: $ sudo mount -o rw localhost:/srv/nfs_share /mnt/nfs/,26.2 NFS基础,通过简单的实践,读者已经大概了解了让NFS服务器工作起来的基本步骤。NFS协议非常简单,但遗憾的是,简单往往意味着对管理员更大的挑战。NFS服务器的配置文件从来不会像Apache那样长篇大论,很多事情必须自己考虑清楚。特别是在安全性方面,不要指望NFS像Apache那样自动给出一个“完美”的方案。通过本节及以后各节的学习,读者会逐步发现,“快速上手”环节中使用的NFS配置是存在很多问题的,尽管它看上去似乎工作
5、得不错。,26.2.1 关于NFS协议的版本,目前被大量部署和使用的是第3版的NFS协议,这个协议在上世纪90年代初期被开发。在第2版的基础上,NFSv3加入了异步写操作功能,从而有效提高了读写磁盘的速度。第3版的NFS完全兼容第2版。 NFS协议非常稳定,以至于十多年之后才有了第4版的开发。这个版本的NFS提供了一些非常诱人的新特性,例如: 提供上锁(lock)和安装(mount)协议; 有状态操作; 很强的安全措施; 同时支持UNIX和Windows客户机; 支持Unicode编码的文件名; 更高的性能;,26.2.2 RPC:NFS的传输协议,NFS使用RPC作为自己的传输协议。Sun的
6、RPC(Remote Procedure Call,远程过程调用)协议提供了一种与系统无关的方法,用于实现网络进程间的通信。这个协议既可以使用UDP,也可以使用TCP作为下层的传输协议。 最初的NFS使用UDP协议。这个协议非常简单,并且在上世纪80年代那样的网络环境下被证明是最高效的。然而随着时间的推移,UDP缺乏拥塞控制算法的特点(或者说缺点?)在大型网络上逐渐暴露出性能上的劣势。于是人们转而把目光投向了TCP,幸运的是,随着快速CPU和智能化网络控制器的普及,已经没有什么理由再去选择UDP作为RPC的下层协议了。TCP因此成为了目前NFS通信的最好选择。 现在,所有的Linux发行版都能
7、够同时支持TCP和UDP作为NFS的传输协议,具体选择哪一种完全取决于客户机(通过在安装时指定安装选项)。,26.2.3 无状态的NFS,NFSv3的服务器是“无状态”的,这意味着服务器并不知道也不想知道哪些机器正在使用某个特定的文件,或者某个文件系统已经被哪些机器挂载了。在客户机成功地同NFS服务器建立连接后,会获得一个秘密的cookie,客户机通过这个cookie取得访问服务器上资源的权力。从这种意义上,NFS服务器好像一个慷慨的主人,把客人领进餐厅然后对他说:“想吃什么就随便拿吧”,随后就走开了。 这样的设计很有好处。如果NFS服务器崩溃了,那么客户机只要简单地等待服务器恢复正常,然后就
8、像什么都没发生过一样继续工作,这其中不会丢失任何信息。当然,无状态的NFS不能支持类似于文件上锁这样的功能,因为这需要系统提供客户机的相关信息。这也正是NFSv4决定实现“有状态操作”的一个原因。,26.3 NFS配置,这一节主要介绍NFS服务器的配置和管理。和其他Linux服务一样,NFS使用一个配置文件来完成配置工作。对于管理员来说,这个配置文件几乎就是NFS的全部,对此将首先进行讨论。随后在26.3.2节将介绍NFS的启动脚本,这一节的内容兼顾了各种不同的主流发行版。,26.3.1 理解配置文件,NFS服务器的配置文件是/etc/exports,这在所有的发行版上都是一样的。之所以选择这
9、个名字,是因为客户机的挂载对于NFS服务器而言,是“导出(export)”了一个文件系统。当NFS服务器安装完成后,这个文件应该是“空白”,或者包含了一些指导用户设置的注释。在Ubuntu中,这个文件看起来像这个样子: # /etc/exports: the access control list for filesystems which may be exported #to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync) hostname2(ro,s
10、ync) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt) # /srv/nfs4/homes gss/krb5i(rw,sync),26.3.1 理解配置文件,26.3.2 启动和停止服务,NFS需要两个不同的守护进程来处理客户机请求:mountd响应安装请求,而nfsd则响应实际的文件服务。正如25.2.2节已经提到的,NFS运行在Sun的RPC协议上,因此另一个守护进程也是必须的,portmap服务用于把RPC服务映射到TCP或者UDP端口。事实上,所有将RPC协议作为下层传输协议的应用程序都需要p
11、ortmap守护进程。 不要太过担心这些守护进程是否需要手工启动,安装完NFS服务器后,系统会自动把它们设置为随系统启动。,26.3.2 启动和停止服务,26.4 使用SUSE的YaST2配置NFS服务器,用户也可以选择使用图形化管理工具配置NFS。图形化工具对初学者总是充满吸引力,它可以提供更直观的配置选项、更漂亮的界面,同时也提供了更繁琐的操作步骤。SUSE的集成管理工具YaST2在大多数时候能够帮助管理员绕开对配置文件的修改。这里借NFS服务器简要介绍一下使用YaST2配置系统服务的过程。 YaST2可以通过“K菜单”|“计算机”|“管理员设置”命令打开,为此需要提供管理员(root)口
12、令。YaST2的主界面分为两部分,左侧显示了9个不同的模块。,26.4 使用SUSE的YaST2配置NFS服务器,26.5 安全性方面的几点建议,NFS在设计初期并没有着重考虑安全性的问题当发现NFS的配置如此简单的时候就应该意识到这一点。的确,在实际使用过程中,NFS协议带来很多安全隐患,这些安全问题有时候会让人们怀疑随之带来的简便性是否值得。但不管怎么样,有了问题就必须尝试去解决,系统管理员总不能把自己的脑袋埋在沙堆里吧。,26.5.1 充满风险的NFS,NFS通过exports文件导出文件系统,同时指定哪些主机可以访问这些资源。看起来这样的做法没有什么问题:如果管理员能够把exports
13、文件设置得足够“精细”的话,就可以保证只有可信赖的主机拥有访问权限。然而遗憾的是,这种想法只是一厢情愿。NFS服务器是根据客户机的报告,而不是它自己的判断来确定连接来自哪里。在26.3.1节的例子中,如果客户机撒谎说自己是datastore,那么NFS服务器就相信它是datastore,并授予它对/srv/nfs_share的写权限。,26.5.2 使用防火墙,对于上面提到的第一种情况,最好的解决方法就是“交给Linux去解决”。所有的Linux发行版本都包含了一个包过滤防火墙,通过设置防火墙只允许特定的主机连接NFS端口,可以有效地过滤来自其他主机的连接请求。防火墙从源头上断绝了NFS相信陌
14、生人的机会,关于防火墙的设置,请参考第28章。 使用防火墙并不是说可以不必关心exports文件了。相反,仍然应该认真设置exports中的可信赖主机列表,确保文件系统只导出给内部有限的几台主机。在exports中设置太多“信任”的主机会让入侵出现之后的调查变得异常艰难,并且这种设置本身包含了巨大的安全隐患。,26.5.3 压制root和匿名映射,允许root用户在NFS文件系统上随便运行是很危险的。NFS通过UID来判断用户的身份,如果root用户登录进来,那么这个UID为0的超级用户就拥有对其中所有文件和目录的完整权限,管理员精心设置的权限控制就失效了。 在默认情况下,Linux的NFS服
15、务器截获所有来自root用户(UID=0)的请求,将其转换为好像是来自另一个普通用户。这种行为被称作“压制root(squashing root)”。Linux定义了一个特殊的用户nobody(与其对应的组是nogroup)来完成这种转换。这个用户没有任何特殊权限,在大部分情况下,nobody用户必须遵循文件权限中针对“其他人”的设置(参考6.5节)。,26.5.4 使用特权端口,NFS客户机可以选择使用任意一个端口来连接NFS服务器,除非服务器在导出文件系统时指定了secure选项。这个选项要求客户机必须使用特权端口(端口号小于1024)连接NFS服务器。尽管在PC机上,使用特权端口并不能显
16、著提高安全性。 与之相反的一个选项是“insecure”,告诉服务器可以接受来自非特权端口(端口号大于/等于1024)的连接。在默认情况下,Linux客户机都会使用一个特权端口来连接NFS服务器,因此一般不用考虑客户机的设置。,26.6 监视NFS的状态:nfsstat,nfsstat命令可以显示当前NFS的各项统计信息。带“-s”选项的nfsstat命令显示NFS服务器的相关信息: $ nfsstat -s Server rpc stats: calls badcalls badauth badclnt xdrcall 62 0 0 0 0 Server nfs v3: null getattr setattr lookup access readlink 2 3% 31 59% 3 5% 3 5% 7 13% 0 0% read write create mkdir symlink mknod 0 0% 0 0% 1 1% 0 0% 0 0% 0 0% remove rmdir rename link readdir readdirplus 0 0% 0 0% 0 0% 0 0% 0 0% 1 1% fsstat fsinfo pathconf commit 0 0% 3 5% 1 1% 0 0%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 暑期初中生一对一授课合同范本二篇
- 2026年四川省部编版高中生物第二章细胞练习题
- 2026年初中成语故事《负荆请罪》史记廉颇蔺相如教案
- 高考器乐演奏类专业乐器选择指导课
- 南岸区教育体育局遴选工作人员考前密押卷
- 百思特咨询安踏之道系列第七篇资本运作:资本为翼:从6亿港元到46亿欧元
- 永嘉县兴隆电镀年表面处理阀门配件25000吨扩建项目环境影响报告表
- 金融行业科技部开发人员回归测试执行手册(执行版)
- 杭州钱塘区高铁新城涉及110kV海塔1802线、海波1807线和宏波1828线电缆迁改工程环境影响报告表
- 《铁铬液流电池安装技术规范》
- 2026年医院药师招聘考核题库综合试卷及完整答案详解(有一套)
- 软式内镜清洗消毒技术规范WS 507-2025
- T∕CIATCM 132-2025 名老中医经验传承信息系统基本功能规范
- 循证医学:创伤评分课件
- 设备管理员培训
- 贵妇膏产品培训课件
- 行动教育EMBA课程体系
- 遥感技术监测大气污染
- 2025黑龙江齐齐哈尔泰来镇第二次社区工作者招聘44人备考题库附答案
- 2025-2026学年沪教版七年级英语上册(全册)知识点梳理归纳
- 2025年10月25日西藏区直遴选笔试真题及答案解析
评论
0/150
提交评论