萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> NFS 和 NIS

NFS 和 NIS

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/
copyright © 萬盛學電腦網 all rights reserved