⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0330nfs.htm

📁 鸟哥LINUX 学习课本
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<font color="#000099">使用者的权限不符</font>:以上面的例子来说明,我的/home/test 只能提供 192.168.0.0/24 这个网域,所以,如果我在 test.linux.org这部机器中,以 localhost 来挂载时,就会无法挂载上,这个权限概念没问题吧!那么您可以试试看:</li><table bgcolor="#000000" border="1" cols="1" width="600"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root @testroot]# </font><font color="#ffff00">mount -t nfs localhost:/home/test /home/nfs</font></font><br><font size="-1" color="#ffffff" face="SimSun">mount: localhost:/home/testfailed, reason given by server: Permission denied</font></td></tr></tbody></table>所以啰!如果您发现上面的显示的讯息时,就表示您的主机权限不能够进入该目录啰!如果确定您的IP 没有错误,那么请回到 /etc/exports 这个档案中,针对您自己的 IP 来进行修正吧!<br> <li><font color="#000099">忘记启动 portmap :</font></li><br><font color="#000000">这个最容易被忘记了!就是忘记了启动 portmap 这个服务啦!如果您发现您的mount 的讯息是这样:</font><table bgcolor="#000000" border="1" cols="1" width="600"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">mount -t nfs localhost:/home/test /home/nfs</font></font><br><font size="-1" color="#ffffff" face="SimSun">mount: RPC:Port mapper failure - RPC: Unable to receive</font></td></tr></tbody></table><font color="#000000">或者是:</font><table bgcolor="#000000" border="1" cols="1" width="600"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">mount -t nfs localhost:/home/test /home/nfs</font></font><br><font size="-1" color="#ffffff" face="SimSun">mount: RPC:Program not registered</font></td></tr></tbody></table><font color="#000000">那么就赶紧将 portmap 启动吧!!并且也需要将 nfs 重新启动喔!</font><table bgcolor="#000000" border="1" cols="1" width="600"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">/etc/rc.d/init.d/portmap start</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">/etc/rc.d/init.d/nfs restart</font></font></td></tr></tbody></table><font color="#000000"> </font><li><font color="#000099">被防火墙挡掉了</font>:</li><br>这个也很容易忘记了!那就是重新设定一下您的防火墙,这包含了两部份,包括iptables 与 TCP_Wrappers !因为我们启动了 portmap ,这个东西有两个数据需要分享出来,一个是port 111 需要提供出去,因此您的 iptables 规则当中,需要开放这个 port 喔!有点像这样的几行字要加入您的iptables rules 当中:<table bgcolor="#000000" border="1" cols="1" width="600"><tbody><tr><td><font size="-1" color="#ffffff" face="SimSun">iptables -AINPUT -p TCP --dport 111 -j ACCEPT</font><br><font size="-1" color="#ffffff" face="SimSun">iptables -AINPUT -p UDP --dport 111 -j ACCEPT</font></td></tr></tbody></table>如果您已经开放了这个 port 的连接权限,却还是无法连接成功,那么应该就是TCP_Wrappers 的问题了!检查一下您的 /etc/hosts.deny 里头是否有这行:<table bgcolor="#000000" border="1" cols="1" width="600"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">vi /etc/hosts.deny</font></font><br><font size="-1" color="#ffffff" face="SimSun">ALL: ALL</font></td></tr></tbody></table>果真如此的话,由于 portmap 是由 portmap 这个 daemon 所启动的,所以您就必须要在/etc/hosts.allow 里面加入这一行:<table bgcolor="#000000" border="1" cols="1" width="600"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]#</font><font color="#ffff00"> vi /etc/hosts.allow</font></font><br><font size="-1" color="#ffffff" face="SimSun">portmap: ALL&#160;</font></td></tr></tbody></table>或者是将 ALL 改成您所想要让他使用 NFS 的网域即可!这样说可以了解了吗?若想进一步了解一下防火墙,请参考前面章节提过的:<a href="http://linux.vbird.org/linux_server/0250simple_firewall.php">简易防火墙建置</a>。</ol></blockquote><hr width="100%"><a name="close_your_linux"></a><font size="+1" color="#000099">关机或结束时的注意事项:</font><blockquote>需要注意的是,由于 NFS 使用的这个 RPC 在 client 端连上主机时,那么您的主机想要关机,那可就会成为『不可能的任务』!如果您的Server 上面还有 Client 在联机,那么您要关机,可能得要等到数个钟头才能够正常的关机成功!嗄!真的假的!不相信吗?不然您自个儿试试看!^_^!所以啰,建议您的 NFS Server 想要关机之前,能先『关掉 portmap 与 nfs』这两个东西!如果无法正确的将这两个 daemons 关掉,那么先以 netstat -utlp找出 PID ,然后以 kill 将他关掉先!这样才有办法正常的关机成功喔!这个请特别特别的注意呢!</blockquote><hr width="100%"><a name="firewall"></a><font size="+1" color="#000099">安全设定(被防火墙挡掉了):</font><blockquote>好了!一些注意事项讲完了之后,再来呢?对了!又是最重要的安全设定方面的问题了!那么NFS 可以设定安全的地方有哪里呢?其实还不少呢?由外而内可以这样看:<ol><li>iptables 防火墙设定;</li><li>TCP_Wrappers 防火墙设定;</li><li>/etc/exports 权限设定。</li></ol>防火墙的基本概念请参考『<a href="http://linux.vbird.org/linux_server/0250simple_firewall.php">简易防火墙建置</a>』一文,最好能将该篇文章给他看完,否则还真难了解底下在干嘛~嗯!假设您已经看完该篇短文了,接着下来我们就得要一步一步的接着建立防火墙啰!<ul><li><font color="#000099">使用 iptables 限制大范围联机:</font></li><br>假设我们的 NFS 主要是针对内部网络开放而已,而对于外部网络只有对学术网络开放,亦即是140.0.0.0/8 ,那么您可以使用这样的语法:<table bgcolor="#000000" border="1" cols="1" width="600"><tbody><tr><td><font size="-1" color="#ffffff" face="SimSun">iptables -AINPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT</font><br><font size="-1" color="#ffffff" face="SimSun">iptables -AINPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT</font><br><font size="-1" color="#ffffff" face="SimSun">iptables -AINPUT -i eth0 -p TCP -s 140.0.0.0/8&#160;&#160;&#160; --dport 111 -j ACCEPT</font><br><font size="-1" color="#ffffff" face="SimSun">iptables -AINPUT -i eth0 -p UDP -s 140.0.0.0/8&#160;&#160;&#160; --dport 111 -j ACCEPT</font></td></tr></tbody></table>这样大致上就可以让 192.168.0.0/24 这个 C Class 的网域与 140.0.0.0/8 这个A Class 的网域到您的主机里面来,而其它的联机就视您的原本的 iptables 的状态而定喔!<br> <li><font color="#000099">使用 TCP_Wrappers 限制更细的范围:</font></li><br>事实上,如果您不懂得如何设定 iptables 的话,那也没关系,我们可以使用TCP_Wrappers 阿!因为要使用 NFS 就必须要通过 portmap 这一关( 因为要使用RPC 啦! ),而这个 portmap 可以藉由 TCP_Wrappers 来管理!呵呵!太好了!那么就将他联机的范围限制的更小啰!我们可以在/etc/hosts.allow 里面规定连上 NFS 主机的主机 IP 与名称,假设限制中的主机只有192.168.0.0/24 这个 C class 及 140.116.44.125 这个主机,以及后面接的是ncku.edu.tw 的网域可以连上我的 NFS 主机,那么我可以写成这样:<table bgcolor="#000000" border="1" cols="1" width="600"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]#</font><font color="#ffff00"> vi /etc/hosts.allow</font></font><br><font size="-1" color="#ffffff" face="SimSun">portmap: 192.168.0.0/255.255.255.0&#160;</font><br><font size="-1" color="#ffffff" face="SimSun">portmap: 140.116.44.125&#160;</font><br><font size="-1" color="#ffffff" face="SimSun">portmap: .ncku.edu.tw&#160;</font><p><font size="-1" face="SimSun"><font color="#ffffff">[root@test root]#</font><font color="#ffff00">vi/etc/hosts.deny</font></font><br><font size="-1" color="#ffffff" face="SimSun">portmap: ALL</font></p></td></tr></tbody></table>呵呵!这样可就设定好啰!很简单的吧!<br> <li><font color="#000099">使用 /etc/exports 设定更安全的权限:</font></li><br>这就牵涉到您的逻辑思考了!怎么设定都没有关系,但是在『便利』与『安全』之间,要找到您的平衡点吶!善用root_squash 及 all_squash 等功能,再利用 anonuid 等等的设定来规范登入您主机的使用者身份!应该还是有办法提供一个较为安全的NFS 主机的!</ul><ul><li><font color="#000099">Client 端挂载的问题:</font></li><br>基本上,在 Client 端挂载的时候,为了担心会不小心刚 NFS 端挂进来的具有SUID 权限档案的程序执行!这个很可能会危害到系统的安全呢!因为 SUID 本来就不是很安全的嘛!所以呢,您这个root 也可以将 NFS 所分享的目录以较为安全的情况挂载进来!例如:<table bgcolor="#000000" border="1" cols="1" width="600"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]#</font><font color="#ffff00"> mount -t nfs -o nosuid,ro hostname:/directory/mount/point</font></font></td></tr></tbody></table>选择 nosuid 也是一个很不错的抉择喔!</ul>通常我们都会约略的建议,不要启动 NFS Server ,即使要启动,最好也是针对某个范围来进行目录的分享!并且,『要分使用者层级来管理』会比较好一些喔!底下我们就来实际的在您的机器上面搞一个简单的NFS server 吧!</blockquote><hr width="100%"><a name="excer"></a><font size="+1" color="#000099">实际演练:</font><blockquote><b><font color="#000066">假设环境:</font></b><ol><li>假设我的 Linux 主机为 192.168.0.100 这一部;</li><li>预计将 /tmp 以可擦写,并且不限制使用者身份的方式分享给所有 192.168.0.0/24这个网域中的所有 Linux 工作站;</li><li>预计开放 /home/nfs 这个目录,使用的属性为只读,可提供除了网域内的工作站外,向外亦提供数据内容;</li><li>预计开放 /home/upload 做为 192.168.0.0/24 这个网域的数据上传目录,其中,这个/home/upload 的使用者及所属群组为 nfs-upload 这个名字,他的 UID 与 GID均为 210;</li><li>预计将 /home/andy 这个目录仅分享给 192.168.0.50 这部 Linux 主机,以提供该主机上面andy 这个使用者来使用,也就是说, andy 在 192.168.0.50 及 192.168.0.100均有账号,且账号均为 andy ,所以预计开放 /home/andy 给 andy 使用他的家目录啦!</li></ol><b><font color="#000066">实地演练:</font></b><br>好了,那么请您先不要看底下的答案,先自己动笔或者直接在自己的机器上面动手作作看,等到得到您要的答案之后,在看底下的说明吧!<ul><li>首先,就是要建立 /etc/exports 这个档案的内容啰,您可以这样写吧!</li><table bgcolor="#000000" border="1" cols="1" width="600"><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     192.168.0.*(rw,no_root_squash)</font><br><font size="-1" color="#ffffff" face="SimSun">/home/nfs  192.168.0.*(ro)&#160; *(ro,all_squash)</font><br><font size="-1" color="#ffffff" face="SimSun">/home/upload 192.168.0.*(rw,all_squash,anonuid=210,anongid=210)</font><br><font size="-1" color="#ffffff" face="SimSun">/home/andy  192.168.0.50(rw)</font></td></tr></tbody></table>大概就是这样子吧!您可以自行测试看看!<br> <li>再来,就是要建立每个对应的目录的实际 Linux 权限了!我们一个一个来看:</li><table bgcolor="#000000" border="1" cols="1" width="600"><tbody><tr><td><font size="-1" color="#ffffcc" face="SimSun">1. /tmp</font><br><font size="-1" face="SimSun"><font color="#ffffff">[root @testroot]#</font><font color="#ffff00"> ll /&#160;</font></font><br><font size="-1" face="SimSun"><font color="#ffff00">drwxrwxrwt</font><font color="#ffffff">&#160;&#160;&#160;6 root&#160;&#160;&#160;&#160; root&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;4096 Nov 16 09:07 tmp</font></font><p><font size="-1" color="#ffffcc" face="SimSun">2. /home/nfs</font><br><font size="-1" face="SimSun"><font color="#ffffff"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -