📄 0330nfs.htm
字号:
<br> <li><b><font color="#000066" face="SimSun">/usr/sbin/exportfs</font></b>:这个是维护NFS 分享资源的指令,我们可以利用这个指令重新分享 /etc/exports 变更的目录资源、将NFS Server 分享的目录卸载或重新分享等等,这个指令是 NFS 系统里面相当重要的一个喔!至于指令的用法我们在底下会再介绍。</li><br> <li><b><font color="#000066" face="SimSun">/usr/sbin/showmount</font></b>:这是另一个重要的NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 则主要用在 Client端。这个 showmount 可以用来察看 NFS 分享出来的目录资源喔!</li><br> <li><b><font color="#000066" face="SimSun">/var/lib/nfs/xtab</font></b>:这个档案则是主要的NFS 的纪录文件咯!当我们的 NFS 分享出目录资源后,到底有哪些 Client 端曾经连接上我们的NFS 主机呢?呵呵!就是看这个档案的内容即可啰! ^_^</li></ul> <br>就说不难吧!主要就是这几个啰!<br> <br><hr width="100%"><a name="NFS_Server_partition"></a><font color="#000099">主机的规划技巧建议</font><br> <br>如果您的工作环境中,具有多部的 Linux 主机,并且预计彼此分享出目录时,那么在安装Linux distribution 的时候,最好可以规划出一块 partition 作为预留之用。因为『<font color="#000066">NFS可以针对目录来分享</font>』,因此,您可以将预留的 partition 挂载在任何一个挂载点,再将该挂载点(就是目录啦!)由/etc/exports 的设定中分享出去,那么整个工作环境中的其它 Linux 主机就可以使用该NFS 主机的那块预留的 partition 了!所以,在主机的规划上面,主要需要留意的只有partition 而已。此外,由于分享的 partition 可能较容易被入侵,<font color="#000066">最好可以针对该partition 设定比较严格的参数在 /etc/fstab 当中喔</font>!<br> <br><hr width="100%"><a name="NFS_Server_fllow"></a><font color="#000099">设定流程(/etc/exports)</font><br> <br>我们在原理的部分对于 NFS 稍微解释了一下,哇!怎么看起来好像粉难喔!其实一点也不!为什么呢?因为portmap 只要一支 scripts 就可以启动, NFS 只要设定一个档案就可以顺利运作!那么怎么能说不简单呢!呵呵!这个NFS 真是他 X 的太太太.....简单了~在开始 NFS 之前,让我们先以 Windows 的系统当中的『资源共享』来说明一下整个流程吧:<br> <ol><li><font color="#000066" face="SimSun">在 Windows Server 上面,开启档案总管,在某个目录上面按右键选择启动资源共享;</font></li><li><font color="#000066" face="SimSun">在资源共享的内容当中,需要设定『使用者权限』(以 Windows 2000 为例 );</font></li><li><font color="#000066" face="SimSun">在 Client 端需要登入 Windowsserver 时,需要启动『网络上的芳邻』来寻找可用的网络上面分享的目录,然后点选该目录,若可以登入该Windows server 时,则可以依据步骤一的权限使用该目录下的档案!</font></li></ol> <br>呵呵!没错! NFS 的整个流程也差不多是这样:<br> <ul><li><font color="#000066" face="SimSun">首先,需要确认一下您的 Linux主机是否可以支持 NFS 这项服务,然后再设定一下使用者的来源IP或主机名称以及分享出去的目录的权限,之后呢,启动NFS 即可将刚刚设定的目录给他分享出去了!</font></li><li><font color="#000066" face="SimSun">那么在 Client 端怎么使用这个分享出来的目录?就是先以showmount 这支程序检查 Linux Server 是否有可以使用的 NFS 目录,如果有的话,就将他mount 在本机上面,如果可以 mount ,那么就可以使用 NFS 主机提供的资源了!</font></li></ul> <br>哈哈!果然很简单吧!所以底下我们就来一个一个步骤的说明一下 NFS 怎么设定啰:<br> <ol><li><font color="#000099"><a href="#NFS_server_neede">系统需求</a></font></li><li><font color="#000099"><a href="#NFS_server_exports">/etc/exports</a></font></li><li><font color="#000099"><a href="#NFS_server_permission">关于权限问题</a></font></li><li><font color="#000099"><a href="#NFS_server_startup">启动服务 portmap, nfsd</a></font></li><li><font color="#000099"><a href="#NFS_server_exportfs">exportfs</a></font></li><li><font color="#000099"><a href="#NFS_server_xtab">检验目录 /var/lib/nfs/xtab</a></font></li><li><font color="#000099"><a href="#NFS_server_showmount">showmount</a></font></li><li><font color="#000099"><a href="#NFS_server_ports">观察启动的 port number</a></font></li></ol> <br>OK!每个咚咚的细部项目就来谈一谈吧:</ul><ul><ul><li><a name="NFS_server_neede"></a><font color="#000066">系统需求</font>:</li><br>嗄!NFS 有最低硬件需求吗?呵呵!您误会了!这里的需求其实指的是『软件需求』啦!需要的是:<ol><li><font color="#000066" face="SimSun">除了刚刚我们已经提到的两个套件『portmap 与 nfs-utils 』必需要存在之外;</font></li><li><font color="#000066" face="SimSun">您的核心版本最好能够高于 2.2.xx以后比较好!</font></li><li><font color="#000066" face="SimSun">此外,如果重新编译过核心,您必需『一定要选择』NFS支援才行!</font></li></ol>目前,如果您使用的是安装时候的 Linux distribution 预设核心时,那么您都不用太担心,因为系统已经预设有支持NFS 啰!所以底下的咚咚您都可以玩!但是,如果您已经重新编译过核心,并且不知道您是怎么编译的( 例如道听途说啦、试试看新鲜玩意啦等等的来编译您的核心时,所以没有注意到这个项目的选择) ,这个时候请拿出『<a href="http://linux.vbird.org/linux_basic/">鸟哥的 Linux 私房菜 -- 基础学习篇</a>』好好的再次的读一遍『<a href="http://linux.vbird.org/linux_basic/0540kernel.php">核心编译</a>』!</ul></ul><ul><ul><li><a name="NFS_server_exports"></a><font color="#000066">/etc/exports:</font></li><br>好了,已经确认『一切OK』之后,我们就真的要来玩弄 NFS 啦!这个东西真的很简单的啦,只要一个档案就可以搞定了!那就是编辑/etc/exports 这个档案,请注意,<font color="#000066">这个档案如果不存在,请自行建立</font>!并且,档名不要写错了喔!这个档案的内容很简单啦,我们列出他的规则:<br> <table bgcolor="#000000" border="1" cols="1" width="550"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">vi /etc/exports</font></font><br><font size="-1" color="#ffff00" face="SimSun">[欲分享的目录] [主机名称1或IP1(参数1,参数2)] [主机名称2或IP2(参数3,参数4)]</font></td></tr></tbody></table> <br>上面的规则是这样的:[欲分享的目录]主要是要分享给[主机名称1]及[主机名称2],但是提供给这两者的权限并不一样,其中,给主机名称1的权限是参数1与参数2,至于给主机名称2的Client 权限则是参数3与参数4。好了,那么那个『权限』也就是『参数』主要有哪些呢?</ul></ul><ul><ul><ul><li><font color="#3333ff">rw</font>:可擦写的权限;</li><li><font color="#3333ff">ro</font>:只读的权限;</li><li><font color="#3333ff">no_root_squash</font>:登入 NFS 主机使用分享目录的使用者,如果是root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用!</li><li><font color="#3333ff">root_squash</font>:在登入 NFS 主机使用分享之目录的使用者如果是root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID都会变成 nobody 那个系统账号的身份;</li><li><font color="#3333ff">all_squash</font>:不论登入 NFS 的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是nobody 啦!</li><li><font color="#3333ff">anonuid</font>:前面关于 *_squash 提到的匿名使用者的UID 设定值,通常为 nobody,但是您可以自行设定这个 UID 的值!当然,这个UID 必需要存在于您的 /etc/passwd 当中!</li><li><font color="#3333ff">anongid</font>:同 anonuid ,但是变成 group ID 就是了!</li><li><font color="#3333ff">sync</font>:数据同步写入到内存与硬盘当中;</li><li><font color="#3333ff">async</font>:数据会先暂存于内存当中,而非直接写入硬盘!</li></ul></ul></ul><ul><ul>大致的参数就是这几样啰!那么我们来假设几个例子好了:</ul></ul><ul><ul><ul><li><font color="#000066">思考一</font>:我要将 /tmp 分享出去给大家使用,由于这个目录本来就是大家都可以读写的,因此我要让所有的人都可以存取。此外,我要让root 写入的档案还是具有 root 的权限!那么您可以这么写喔!</li><table bgcolor="#000000" border="1" cols="1" width="500"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">vi /etc/exports</font></font><br><font size="-1" color="#ffffff" face="SimSun">/tmp *(rw,no_root_squash)</font></td></tr></tbody></table>这样一来,无论来自哪里(*万用字符!表示万事OK!)都可以使用我的 /tmp 这个目录。请注意,那个*(rw,no_root_squash) 中间没有空格符喔!而 /tmp 与 *(rw,no_root_squash)则是有空格符来隔开的!特别注意到那个 no_root_squash 的功能!在这个例子中,如果您是client 端,而且您是以 root 的身份登入您的 Linux 主机,那么当您 mount 上我这部主机的/tmp 之后,您在该 mount 的目录当中,将具有『root 的权限!』<br> <li><font color="#000066">思考二</font>:我要将一个公共的目录 /home/public公开出去,但是只有限定我的局域网络内 192.168.0.0/24 这个网域可以读写,其它人则只能读取:</li><table bgcolor="#000000" border="1" cols="1" width="500"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">vi /etc/exports</font></font><br><font size="-1" color="#ffffff" face="SimSun">/tmp *(rw,no_root_squash)</font><br><font size="-1" color="#ffffff" face="SimSun">/home/public 192.168.0.*(rw) *(ro)</font><br><font size="-1" color="#ffffff" face="SimSun">/home/public 192.168.0.0/24(rw) *(ro)</font></td></tr></tbody></table>请注意,在上面的例子中,倒数两行的格式都可以适用!所以只要写一行即可!上面的例子说的是,当我的IP 是在 192.168.0.0/24 这个网段的时候,那么当我在 Client 端挂载了 Server端的 /home/public 后,针对这个被我挂载的目录我就具有可以读写的权限~至于如果我不是在这个网段之内,那么这个目录的数据我就仅能读取而已,亦即为只读的属性啦!<br> <li><font color="#000066">思考三</font>:我要将一个私人的目录 /home/test 开放给192.168.0.100 这个 Client 端的机器来使用,那么我就必需这么写:</li><table bgcolor="#000000" border="1" cols="1" width="500"><tbody><tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -