📄 0330nfs.htm
字号:
<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/test 192.168.0.100(rw)</font></td></tr></tbody></table>这样就设定完成了!而且,只有 192.168.0.100 这部机器才能对 /home/test 这个目录进行存取喔!<br> <li><font color="#000099">思考四</font>:我要让 *.linux.org 网域的主机,登入我的NFS 主机时,可以存取 /home/linux ,但是他们存数据的时候,我希望他们的 UID与 GID 都变成 40 这个身份的使用者:</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/test 192.168.0.100(rw)</font><br><font size="-1" color="#ffffff" face="SimSun">/home/linux *.linux.org(rw,all_squash,anonuid=40,anongid=40)</font></td></tr></tbody></table>特别注意到那个 all_squash 与 anonuid, anongid 的功能!如此一来,当 test.linux.org登入这部 NFS 主机,并且在 /home/linux 写入档案时,该档案的所有人与所有群组,就会变成/etc/passwd 里面对应的 UID 为 40 的那个身份的使用者了!</ul></ul></ul><ul><ul><li><a name="NFS_server_permission"></a><font color="#000066">关于权限问题:</font></li><br>无论任何时候,权限的问题都是需要考虑到的!让我们来看看刚刚建立的 /etc/exports档案的内容:<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="#ffff00" face="SimSun">/tmp *(rw,no_root_squash)</font><br><font size="-1" color="#ffff00" face="SimSun">/home/public 192.168.0.*(rw) *(ro)</font><br><font size="-1" color="#ffff00" face="SimSun">/home/test 192.168.0.100(rw)</font><br><font size="-1" color="#ffff00" face="SimSun">/home/linux *.linux.org(rw,all_squash,anonuid=40,anongid=40)</font></td></tr></tbody></table>假设我在 192.168.0.100 登入这部 NFS ( IP 假设为 192.168.0.2 ) 主机,并且我在192.168.0.100 的账号为 test 这个身份,同时,在这部 NFS 上面也有 test 这个账号,果真如此的话,那么:<ol><li>由于 192.168.0.2 这部 NFS 主机的 /tmp 权限为 -rwxrwxrwt ,所以我 ( test在 192.168.0.100 上面 ) 在 /tmp 底下具有存取的权限,并且写入的档案所有人为test ;</li><li>在 /home/public 当中,由于我有读写的权限,所以如果在 /home/public 这个目录的权限对于test 有开放写入的话,那么我就可以读写,并且我写入的档案所有人是 test 。<font color="#000099">但是万一/home/public 对于 test 这个使用者并没有开放可以写入的权限时,那么我还是没有办法写入档案喔</font>!这点请特别留意!</li><li>在 /home/test 当中,我的权限与 /home/public 相同的状态!还需要 NFS 主机的/home/test 对于 test 有开放权限;</li><li>在 /home/linux 当中就比较麻烦!因为不论您是何种 user ,您的身份一定会被变成UID=40 这个账号!所以,这个目录就必需要针对 UID = 40 的那个账号名称,修改他的权限才行!</li></ol> <br>那么假如我在 192.168.0.100 的身份为 test2 ,但是 192.168.0.2 这部 NFS主机却没有 test2 这个账号时,情况会变成怎样呢?<ol><li>我在 /tmp 底下还是可以写入,但是<font color="#000066">写入的档案所有人变成nobody </font>了;</li><li>我在 /home/public 里面是否可以写入,还需要视 /home/public 的权限而定,不过,反正我的身份就被变成nobody 了就是;</li><li>/home/test 的观点与 /home/public 相同!</li><li>/home/linux 底下,我的身份就被变成 UID = 40 那个使用者就是了!</li></ol> <br>那么假如我在 192.168.0.100 的身份为 root 呢? root 这个账号每个系统都会有呀!呵呵!权限变成怎样呢?<ol><li>我在 /tmp 里面可以写入,并且由于 no_root_squash 的参数,改变了预设的 root_squash设定值,所以在 /tmp 写入的档案所有人为 root 喔!</li><li>我在 /home/public 底下的身份还是被压缩成为 nobody 了!因为预设属性里面都具有root_squash 呢!所以,如果 /home/public 有针对 nobody 开放写入权限时,那么我就可以写入,但是档案所有人变成nobody 就是了!</li><li>/home/test 与 /home/public 相同;</li><li>/home/linux 的情况中,我 root 的身份也被压缩成为 UID = 40 的那个使用者了!</li></ol> <br>这样的权限讲解之后,您可以了解了吗?这里是最重要的地方,如果这一关通过了,底下的咚咚就没有问题啦!^_^</ul></ul><ul><ul><li><a name="NFS_server_startup"></a><font color="#000099">启动服务 portmap,nfsd</font></li><br><font color="#000000">好了,设定OK也没有权限的问题之后 ( 有问题也没关系,可以事后在好好的检视与修改一番!),再来自然就是启动他啰!如何启动呢?简单的很,直接给他OK下去!</font><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">/etc/rc.d/init.d/portmap start</font><font color="#ff6666"><==启动portmap !</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">/etc/rc.d/init.d/nfs start</font><font color="#ffffff"> </font><font color="#ff6666"><==启动 NFS</font></font></td></tr></tbody></table><font color="#000000">那个 portmap 根本就不需要设定!只要直接启动他就可以啦!启动之后,</font><font color="#000066">会出现一个port 111 的 sunrpc 的服务</font><font color="#000000">!那就是 portmap啦!至于 nfs 则会启动至少两个以上的 daemon 出现!然后就开始在监听 Client端的需求啦!启动之后,请赶快到 /var/log/messages 里面看看有没有被正确的启动呢?</font><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 /var/log/messages</font></font><br><font size="-1" color="#ffffff" face="SimSun">Nov 16 15:04:45test portmap: portmap startup succeeded</font><br><font size="-1" color="#ffffff" face="SimSun">Nov 16 15:04:53test nfs: Starting NFS services:  succeeded</font><br><font size="-1" color="#ffffff" face="SimSun">Nov 16 15:04:54test nfs: rpc.rquotad startup succeeded</font><br><font size="-1" color="#ffffff" face="SimSun">Nov 16 15:04:54test nfs: rpc.mountd startup succeeded</font><br><font size="-1" color="#ffffff" face="SimSun">Nov 16 15:04:54test nfs: rpc.nfsd startup succeeded</font></td></tr></tbody></table><font color="#000000">要正常的出现上面的字样之后,才算是正确的启动喔!</font></ul></ul><ul><ul><li><a name="NFS_server_exportfs"></a><font color="#000099">exportfs:</font></li><br>好了,那么如果我们修改了 /etc/exports 这个档案之后,是否需要重新启动nfs 呢?呵呵,并不需要,只要使用 exportfs 重新扫瞄一次 /etc/exports 这的档案,并且重新将设定加载即可!因此,就要来了解一下exportfs 的用法了:<table bgcolor="#000000" border="1" cols="1" width="500"><tbody><tr><td><font size="-1" color="#ffffcc" face="SimSun">语法:</font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">exportfs [-aruv]</font></font><br><font size="-1" color="#ff6666" face="SimSun">参数说明:</font><br><font size="-1" color="#ffff99" face="SimSun">-a :全部挂载(或卸载)/etc/exports 档案内的设定</font><br><font size="-1" color="#ffff99" face="SimSun">-r :重新挂载/etc/exports 里面的设定,此外,亦同步更新 /etc/exports</font><br><font size="-1" color="#ffff99" face="SimSun"> 及 /var/lib/nfs/xtab的内容!</font><br><font size="-1" color="#ffff99" face="SimSun">-u :卸载某一目录</font><br><font size="-1" color="#ffff99" face="SimSun">-v :在 export的时候,将分享的目录显示到屏幕上!</font><br><font size="-1" color="#ff6666" face="SimSun">范例:</font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">exportfs -rv  </font><font color="#ff6666"><==全部重新export 一次!</font></font><br><font size="-1" color="#ffffff" face="SimSun">exporting 192.168.0.100:/home/test</font><br><font size="-1" color="#ffffff" face="SimSun">exporting 192.168.0.*:/home/public</font><br><font size="-1" color="#ffffff" face="SimSun">exporting *.linux.org:/home/linux</font><br><font size="-1" color="#ffffff" face="SimSun">exporting *:/home/public</font><br><font size="-1" color="#ffffff" face="SimSun">exporting *:/tmp</font><br><font size="-1" color="#ffffff" face="SimSun">reexporting192.168.0.100:/home/test to kernel</font><p><font size="-1" face="SimSun"><font color="#ffffff">[root@test root]#</font><font color="#ffff00">exportfs -au</font><font color="#ff6666"> <==全部都卸载了!</font></font></p></td></tr></tbody></table><font color="#000000">要熟悉一下这个指令的用法喔!这样一来,就可以直接重新export 我们的记录在 /etc/exports 的目录数据啰!</font></ul></ul><ul><ul><li><a name="NFS_server_xtab"></a><font color="#000099">检验目录 /var/lib/nfs/xtab</font></li><br><font color="#000000"> 好了,当您顺利的将您的目录都分享出去之后,您怎么知道每个目录的分享权限呢?不要忘记了,因为我们有相当多的预设属性呢!因此,这个时候就得需要检验一下您所分享的目录内容啰!看一下/var/lib/nfs/xtab 这个档案吧!他有点像这样:</font><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 /var/lib/nfs/xtab</font></font><br><font size="-1" color="#ffffff" face="SimSun">/home/test 192.168.0.100(rw,sync,wdelay,hide,secure,root_squash,</font><br><font size="-1" color="#ffffff" face="SimSun">no_all_squash,subtree_check,secure_locks,mapping=identity,anonuid=-2,</font><br><font size="-1" color="#ffffff" face="SimSun">anongid=-2)</font></td></tr></tbody></table><font color="#000000">看到没?这个就是 /home/test 这个分享出去的目录的预设NFS 里面的属性啦!这个属性状态里头有个比较奇怪的,那就是 anonuid=-2 这个,怎么有uid=-2 的呢?呵呵!其实它说的是将 65536 - 2 的值,也就是 65534 的那个 UID啦!对照一下 /etc/passwd ,您就会发现,哇!原来那就是 nobody 的啦!</font></ul></ul><ul><ul><li><a name="NFS_server_showmount"></a><font color="#000099">showmount:</font></li><br><font color="#000000">showmount 顾名思义,就是看看有没有可以 mount的指令嘛!怎么用呢?</font><table bgcolor="#000000" border="1" cols="1" width="500"><tbody><tr><td><font size="-1" color="#ffffcc" face="SimSun">语法:</font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]#</font><font color="#ffff00"> showmount [-ae] hostname</font></font><br><font size="-1" color="#ffffcc" face="SimSun">-a :在屏幕上显示目前主机与
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -