您现在的位置: 万盛学电脑网 >> 操作系统 >> Linux教程 >> 正文

NFS 和 NIS

作者:佚名    责任编辑:admin    更新时间:2022-06-22

class="22347"> 使用;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


当然了您也可以设定;Linux;在开机的时候通过;NFS;挂载到使用者原本的家目录(tips修改;/etc/fstab)。但如何做您自己去尝试吧这里暂时卖个关子。;

如果该使用者需要使用到本机上面的邮件系统也请为之建立信箱;touch;/var/spool/mail/netman;
chown;netman:mail;/var/spool/mail/netman;
chmod;660;/var/spool/