当前位置:操作系统 > Unix/Linux >>

NFS和NIS

使用 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 确定服务正确的跑起来了。

  建立这两个档案(如果它们不存在的话) touch /etc/gshadow /etc/netgroup

  设定 NIS 的domain name /bin/nisdomainname chen

  最好起一个有别於目前 domain 的名字这主要是出於安全考量。如果以後测试成功的话您可以将这行加进 /etc/rc.d/rc.local 里面同时在 /etc/sysconfig/network 档案里面修改这行 NISDOMAIN=chen

  然後初始设定 NIS 服务 /usr/lib/yp/ypinit -m

  记住要用 Ctrl + D 来结束不是用 Ctrl + C 哦切记切记

  留意一下有否错误有则根据信息做适当修改无则继续。例如如果它回应说 "No rule to mak target xxxxxx, needed by yyyyyyyy."通常是在 /etc 下面找不到档案而已用 touch /etc/xxxxxxx 就可以解决之。

  重新启动 ypserver 和 yppasswdd /etc/rc.d/init.d/ypserv restart

  /etc/rc.d/init.d/yppasswdd restart

  然後是设定 NIS Client 。这里是在 redhat62.siyongc.domain (192.168.0.22) 这台机器上面设定

  执行 netconf 然後选择 ‘Network Information System (NIS) 再按 Enter进入後设定好 NIS domain(如chen要和 server 那端一致)和NIS server(如redhat52.siyongc.domain要确定该 server 在 /etc/hosts 里面指定正确)。如果您的系统没有 netconf 也不要紧可以自己修改後面提到的档案(如 /etc/yp.conf 和 /etc/sysconfig/network)。

  接着执行 /bin/nisdomainname chen

  然後修改 /etc/yp.conf加进这行 domain chen

  ypserver redhat52.siyongc.domain

  然後执行 setup 选择‘System Services’确定 [*]ypbind 被选择了。

  修改 /etc/passwd在末尾加入 +

  然後启动 ypbind: ypbind

  (或者/etc/rc.d/init.d/ypbind restart)

  测试 NIS

  在客户端上面以 root 身份登录之後请输入 ypcat passwd

  看看 server 端的帐号是否被列出来了。

  您也可以执行 getent passwd netman

  这里的‘netman’是在 NIS 伺服器上面的一个使用者帐号名称请改成您欲查询的帐号。这个命令的作用是让我们确定该帐号出现在 NIS 登录之中。如果您看不到任何信息回应那麽好可能上面的步骤(包括伺服器和客户端)还没正确完成您则需要找出原因所在。

  如果您能得到信息回应例如 netman:x:1001:1001::/home/netman:/bin/bash

  那是好消息否则您得从头进行 debug 方好继续。

  然後输入 yppasswd netman

  Please enter root passwd:

  Please enter new passwd:

  Please retype password:

  (#注意: 最後两行是设定 netman 的 NIS password。最好和原来的密码一致因为原来的密码也会被更改为 nis 的密码。)

  其实上面这步不是必须的如果您能够从另外的机器用 NIS帐号登录就可以略过此步骤。

  接着请在本地主机上面建立起该使用者的家目录 mkdir /home/netman

  chown netman:netman /home/netman

  当然了您也可以设
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,