NFS和NIS(1)
使用 Telnet 之後您就无需再要在荧幕和键盘之间跑来跑去了。不过通过 Telnet 连接所使用的档案系统都是远端系统如果您要将资料回存在本地电脑上面就不那麽方便了。您有否想过将远端的资料 mount 进本地的档案系统中呢那麽NFS(Network File System) 就可以帮到你了。另外使用 telnet 的时候您有否发觉到一个麻烦现在的 telnet 已经禁止使用 root 进行登录了您如果要使用到 root 的权限您得使用其他帐号登录然後用 su 切换到 root 的身份去。这样在使用 telnet 之前您就必须为每一个使用者在每一台Linux机器上建立独立的帐号。您是否希望好像 NT 那样有一个中央的 DOMAIN 登录资料库呢有此念头完全正确而好消息是您也可以在 Linux 上面使用 NIS (Network Information Service) 来做到
我们只需指定某一台 Linux 机器做 NIS 伺服器而其他则可以做为 NIS 客户使用。如果您的网路较大也可以考虑安装 Slave NIS 伺服器来分担 Master NIS 的工作。这里我只说说 NIS Server 和 Client 的设定Slave NIS 则留给您自己去研究了。
设定NFS
要设定 NFS关键是在 server 那端/etc/exports 这个档案。在下建议您先输入 man exports
看一下如何设定这个档案。如果这个档案设定错误了以後重新开机的时候您可等得非常不耐烦了。下面是我这里的设定 /tmp (rw,no_root_squash)
/home/public/sw *.siyongc.domain(ro,insecure)
/home/public/upload 192.168.0.22(rw,all_squash,anonuid=2043,anongid=2044)
这里您可以看到我将 /tmp 这个目录完全分享出去了在括号里面的‘rw’就是 Read&Write 的意思而‘no_root_squash’呢则是允许让使用者具备 root 的权限在某些特殊情况下例如使用 bootp 登录的无磁碟工作站是相当好用的。因为预设情况下 NFS 会将 root 的身份 squash 为权限较低的 anonymous (nobody) 身份而其它身份则以 client 端机器上当时拥有的 User ID 和 Group ID 来建立档案。
第二行我将 /home/public/sw 这个目录分享给以 siyongc.domain 这个 domain 做结尾的所有机器而无需使用 secure port (insecure)但只具备唯读权限(ro)。
第三行我将 /home/public/upload 这个目录只分享给 192.168.0.22 这台机器且具备了读和写的权限(rw)但在 server 上写入的档案必须换成 anonymous 身份进行。但是其後的设定又将所有 anonymous 换成设定的 UID 和 GID这样的安排是要确定所有写入都按指定身份进行。
如果您不知道或不想直接修改 /etc/exports 档案您可以使用 netconf 然後选择‘Exported file system (NFS)’来进行设定。
然後就是重新启动 nfsd /etc/rc.d/init.d/nfs restart
测试 NFS
一但 server 设定好了您只需在 client 端输入 mount -t nfs redhat52:/tmp /mnt
就可以将伺服器端的分享目录 mount 进自己的机器了。
通常最常见的错误信息是: mount: redhat52:/tmp, reason given by server: Permission denied
造成这样的原因多数是因为 /etc/exports 档案没设定好也就是在分享目录後面的“( )”里面的权限设定建议从简单的设定测试起。或是从 /var/log/messages 这个档案找找原因检查一下被拒绝的原因例如可能会发现客户主机的名称不怎麽对那您就必须要确定 client 的机器名称已经在 /etc/hosts 被“正确”的建立起来或者能够通过 DNS 查询得到(包括正反两解)。
在我的实践中‘link_relative’有时候会造成‘Unknown keyword’这样会引至 nfsd 无易做图常启动。所以当你修改过 NFS 设定最好用下面的 script 来确定 nfsd 能够正常启动才好关机 /etc/rc.d/init.d/nfs stop
/etc/rc.d/init.d/nfs start
确定没有 failure 信息才好继续。切记
如果您碰到 rpc 相关的错误信息可能是您的 portmap 问题了您可以试试将之重新启动: /etc/rc.d/init.d/portmap restart
不过执行之後请重新启动 nfsd 以及其它所有和 portmap 相关的服务(因为它们会因为 portmap 重启而失效。
另外当您升级 server 的 kernal 之後最好也将 client 的 kernal 一起同步。否则您会遇到 mount version 的警告管您还是可以成功的实现 nfs mount 。
有时候您或许会突发兴致给电脑改改名称或转换 domain这样也容易造成 NFS 在启动的时候延迟而且是延迟非常厉害的那种造成这样的问题可能有多方面的如 hostsname 设定不正确或 DNS 那里有误。不过有一个地方您可以考虑的就是把下面这个档案内容清一下
/var/lib/nfs/rmtab
如果还有问题先熟读一下 exports 的 man page (man exports)更详细的就请参考 NFS 的 HOWTO 文章。
设定NIS
首先让我们架设好中央的 NIS 伺服器吧。在设定之前您必须确定网路工作正常。 (以下步骤是本人实践之作或许会有更好的方法的。如果您有更好的主意欢迎告诉网中人。)
修改 /etc/inetd.conf确定下两行的解(‘#’)给拿掉 time stream tcp nowait root internal
time dgram udp wait root internal
重新启动 inetd /etc/rc.d/init.d/inet restart
修改 /var/yp/securenets确定有这样的叙述(请针对您的网路设定做适当修改) # Always allow access for localhost
255.0.0.0 127.0.0.0
# This line gives access to everybody. PLEASE ADJUST!
255.255.255.0 192.168.0.0
修改 /etc/ypserv.conf或许会有这样的叙述(但不是很确定是否必须如此) dns: no
* : passwd.byname : port : yes
然後输入 rpcinfo -u localhost ypserv
确定 YP server 是工作的您应该会看到这样的信息 program 100004 version 1 ready and waiting
program 100004 version 2 ready and waiting
如果您没看到那就执行 /etc/rc.d/init.d/ypserv start
同时确定 setup --> System services -->
[ * ] yppasswdd 和 [ * ] ypserv 。
然後再重 rpcinfo 确定服务正确的跑起来了。