鸟哥的Linux私房菜(服务器)- 第十四章、账号控管: NIS 服务器
最近更新日期:2011/07/28
| 有沒有想過,如果我有十部 Linux 主機(jī),這十部主機(jī)僅負(fù)責(zé)不同的功能,事實(shí)上,所有的主機(jī)賬號(hào)與對應(yīng)的密碼都相同! 那么我是將賬號(hào)與密碼分別設(shè)定置在十部計(jì)算機(jī)上面,還是可以透過一部主機(jī)做為賬號(hào)管理的功能,然后其他的主機(jī)只要當(dāng)用戶用登入時(shí), 就必須要到管理賬號(hào)的主機(jī)上面確認(rèn)其賬號(hào)與密碼呢?哪一個(gè)比較方便而且靈活?當(dāng)然是找一個(gè)賬號(hào)管理的主機(jī)比較方便的多啦! 如果有用戶要修改密碼,不必要去到十部主機(jī)修改密碼啦!只要到主要管理主機(jī)去修改,其他的主機(jī)根本就不需要更動(dòng)! 哈哈!輕松又愉快呢!這個(gè)功能的達(dá)成有很多的方式,在這里,我們介紹一個(gè)很簡單的方式,那就是 Network Information Service 這個(gè) NIS 服務(wù)器的架設(shè)啦! |
14.1?NIS 的由來與功能
14.1.1?NIS 的主要功能:管理帳戶信息
14.1.2?NIS 的運(yùn)作流程:透過 RPC 服務(wù)
14.2?NIS server 端的設(shè)定
14.2.1?所需要的軟件
14.2.2?NIS 服務(wù)器相關(guān)的配置文件
14.2.3?一個(gè)實(shí)作案例
14.2.4?NIS master 的設(shè)定與啟動(dòng)
14.2.5?防火墻設(shè)置
14.3?NIS client 端的設(shè)定
14.3.1?NIS client 所需軟件與軟件結(jié)構(gòu)
14.3.2?NIS client 的設(shè)定與啟動(dòng)
14.3.3?NIS client 端的檢驗(yàn):?yptest,?ypwhich,?ypcat
14.3.4?使用者參數(shù)修改: yppasswd, ypchfn, ypchsh
14.4?NIS 搭配 NFS 的設(shè)定在叢集計(jì)算機(jī)上的應(yīng)用
14.5?重點(diǎn)回顧
14.6?課后練習(xí)
14.7?參考數(shù)據(jù)與延伸閱讀
14.8?針對本文的建議:http://phorum.vbird.org/viewtopic.php?p=115269
14.1 NIS 的由來與功能
在一個(gè)大型的網(wǎng)域當(dāng)中,如果有多部 Linux 主機(jī),萬一要每部主機(jī)都需要設(shè)定相同的賬號(hào)與密碼時(shí),你該怎么辦?復(fù)制 /etc/passwd ?應(yīng)該沒有這么呆吧?如果能夠有一部賬號(hào)主控服務(wù)器來管理網(wǎng)域中所有主機(jī)的賬號(hào), 當(dāng)其他的主機(jī)有用戶登入的需求時(shí),才到這部主控服務(wù)器上面要求相關(guān)的賬號(hào)、密碼等用戶信息, 如此一來,如果想要增加、修改、刪除用戶數(shù)據(jù),只要到這部主控服務(wù)器上面處理即可, 這樣就能夠降低重復(fù)設(shè)定使用者賬號(hào)的步驟了。
這樣的功能有很多的服務(wù)器軟件可以達(dá)成,這里我們要介紹的則是?Network Information Services (NIS server)?這個(gè)服務(wù)器軟件喔!底下就先來談一談這個(gè) NIS 的相關(guān)功能吧!
| Tips: NIS 主要提供的是用戶的賬號(hào)、密碼、家目錄文件名、UID等信息,但 NIS 并沒有提供文件系統(tǒng)。同時(shí), NIS 同樣使用前一章談到的 RPC 服務(wù)器,因此在本章開始前,你還是得要認(rèn)識(shí)一下第十三章談到的 NFS 與 RPC, 同時(shí)你還得要知道基礎(chǔ)學(xué)習(xí)篇第三版里面的第十四章賬號(hào)管理, 同時(shí)也得了解一下基礎(chǔ)學(xué)習(xí)篇第二十二章 make/Makefile?的信息才好。 |
14.1.1 NIS 的主要功能:管理帳戶信息
通常我們都會(huì)建議,一部 Linux 主機(jī)的功能越單純越好,也就是說,一部 Linux 就專門進(jìn)行一項(xiàng)服務(wù)。這樣有許多的好處,這包含功能單純所以系統(tǒng)資源得以完整運(yùn)用, 并且在發(fā)生入侵或者是系統(tǒng)產(chǎn)生狀況的時(shí)候,也比較容易追查問題所在。因此,一個(gè)公司內(nèi)部常常會(huì)有好幾部 Linux 主機(jī),有的專門負(fù)責(zé) WWW 、有的專門負(fù)責(zé) Mail 、有的專門負(fù)責(zé) SAMBA 等等的服務(wù)。
不過,這樣雖然有分散風(fēng)險(xiǎn)、容易追蹤問題的好處,但是,由于是同一個(gè)公司內(nèi)的多部主機(jī),所以事實(shí)上所有的 Linux 主機(jī)的賬號(hào)與密碼都是一樣的!哇!那如果公司里面有 100 的人的話, 我們就需要針對這么多部的主機(jī)去設(shè)定賬號(hào)密碼了!而且,如果未來還有新進(jìn)員工的話, 那么光是設(shè)定密碼就會(huì)使系統(tǒng)管理員抓狂了!
這個(gè)時(shí)候,讓我們換一個(gè)角度來思考:如果我設(shè)計(jì)了一部專門管理賬號(hào)與密碼的服務(wù)器,而其他的 Linux 主機(jī)當(dāng)有客戶端要登入的時(shí)候,就必須要到這部管理密碼的服務(wù)器來查尋用戶的賬號(hào)與密碼, 如此一來,我要管理所有的 Linux 主機(jī)的賬號(hào)與密碼,只要到那部主服務(wù)器上面去進(jìn)行設(shè)定即可! 包括新進(jìn)人員的設(shè)定,反正其他的 Linux 主機(jī)都是向它查尋的嘛!沒錯(cuò)!真是好~這個(gè)就是 Network Information Service, NIS 服務(wù)器的主要功能啦!
事實(shí)上,Network Information Service 最早應(yīng)該是稱為 Sun Yellow Pages (簡稱 yp),也就是 Sun 這家公司出的一個(gè)名為 Yellow Pages 的服務(wù)器軟件,請注意,?NIS 與 YP 是一模一樣的咚咚喔!這個(gè) Yellow Pages 名字取的真是好!怎么說呢?知道黃頁 (Yellow Pages) 是什么嗎?就是我們家里的電話簿啦! 今天如果你要查尋一家廠商的電話號(hào)碼,通常就是直接去查黃頁上面的紀(jì)錄來取得電話號(hào)碼啊!而這個(gè) NIS 也一樣,當(dāng)使用者要登入時(shí), Linux 系統(tǒng)就會(huì)到 NIS 服務(wù)器上面去找尋這個(gè)使用的賬號(hào)與密碼信息來加以比對, 以提供使用者登入之用的檢驗(yàn)啊!很棒吧! ^_^
那么 NIS 服務(wù)器提供了哪些信息呢?還記得賬號(hào)與密碼放置在哪里吧?NIS 就是提供那些數(shù)據(jù)啦! 主要有底下這些基本的數(shù)據(jù)提供給有登入需求的主機(jī)喔:
| 服務(wù)器端文件名 | 檔案內(nèi)容 |
| /etc/passwd | 提供用戶賬號(hào)、UID、GID、家目錄所在、Shell 等等 |
| /etc/group | 提供群組數(shù)據(jù)以及 GID 的對應(yīng),還有該群組的加入人員 |
| /etc/hosts | 主機(jī)名與 IP 的對應(yīng),常用于 private IP 的主機(jī)名對應(yīng) |
| /etc/services | 每一種服務(wù) (daemons) 所對應(yīng)的埠口 (port number) |
| /etc/protocols | 基礎(chǔ)的 TCP/IP 封包協(xié)定,如 TCP, UDP, ICMP 等 |
| /etc/rpc | 每種 RPC 服務(wù)器所對應(yīng)的程序號(hào)碼 |
| /var/yp/ypservers | NIS 服務(wù)器所提供的數(shù)據(jù)庫 |
至少可以提供上述這些功能,當(dāng)然啦,你也可以自行定義哪些數(shù)據(jù)庫需要,哪些數(shù)據(jù)庫不需要!
14.1.2 NIS 的運(yùn)作流程:透過 RPC 服務(wù)
由于 NIS 服務(wù)器主要是提供用戶登入的信息給客戶端主機(jī)來查詢之用,所以,?NIS 服務(wù)器所提供的數(shù)據(jù)當(dāng)然就需要用到傳輸與讀寫比較快速的 "數(shù)據(jù)庫" 文件系統(tǒng), 而不是傳統(tǒng)的純文本數(shù)據(jù)。為了要達(dá)到這個(gè)目的,所以?NIS 服務(wù)器就必須要將前一小節(jié)提到的那些檔案制作成為數(shù)據(jù)庫檔案, 然后使用網(wǎng)絡(luò)協(xié)議讓客戶端主機(jī)來查詢啰。至于所使用的通訊協(xié)議與前一章的NFS?相同,都使用遠(yuǎn)程過程調(diào)用 (RPC) 這個(gè)玩意兒喔!
此外,如果在一個(gè)很大型的網(wǎng)域里面,萬一所有的 Linux 主機(jī)都向同一部 NIS 服務(wù)器要求用戶數(shù)據(jù)時(shí), 這部 NIS 服務(wù)器的負(fù)載 (loading) 可能會(huì)過大。甚至如果考慮到數(shù)據(jù)使用的風(fēng)險(xiǎn), 要是這單一的一部 NIS 服務(wù)器掛點(diǎn)時(shí),那其他的 Linux 主機(jī)還要不要讓 users 登入啊? 所以啰,在較為大型的企業(yè)環(huán)境當(dāng)中,?NIS 服務(wù)器可以使用 master/slave (主控/輔助服務(wù)器) 架構(gòu)的。
Master NIS 服務(wù)器提供系統(tǒng)管理者制作的數(shù)據(jù)庫, slave 則取得來自 master 的數(shù)據(jù),并藉以提供其他客戶端的查詢。 客戶端可以向整個(gè)網(wǎng)域要求用戶資料的響應(yīng),master 與 slave 皆可回答, 由于 slave 的數(shù)據(jù)來自于 master ,所以用戶賬號(hào)數(shù)據(jù)本身是同步的! 如此一方面可以分散 NIS 服務(wù)器的負(fù)載,而且也可以避免因 NIS 服務(wù)器掛點(diǎn)而導(dǎo)致的無法登入的風(fēng)險(xiǎn)。
圖 14.1-1、NIS 服務(wù)器與客戶端的運(yùn)作與查詢方式示意圖
整個(gè) NIS 的運(yùn)作就如同上圖,首先必須要有 NIS server 的存在,之后才會(huì)有 NIS Client 的存在。 那么當(dāng)使用者有登入的需求時(shí),整個(gè) NIS 的運(yùn)作程序是:
- 關(guān)于 NIS Server (master/slave) 的運(yùn)作程序:
- NIS Master 先將本身的賬號(hào)密碼相關(guān)檔案制作成為數(shù)據(jù)庫檔案;
- NIS Master 可以主動(dòng)的告知 NIS slave server 來更新;
- NIS slave 亦可主動(dòng)的前往 NIS master server 取得更新后的數(shù)據(jù)庫檔案;
- 若有賬號(hào)密碼的異動(dòng)時(shí),需要重新制作 database 與重新同步化 master/slave。
- 關(guān)于當(dāng) NIS Client 有任何登入查詢的需求時(shí):
- NIS client 若有登入需求時(shí),會(huì)先查詢其本機(jī)的 /etc/passwd, /etc/shadow 等檔案;
- 若在 NIS Client 本機(jī)找不到相關(guān)的賬號(hào)數(shù)據(jù),才開始向整個(gè) NIS 網(wǎng)域的主機(jī)廣播查詢;
- 每部 NIS server (不論 master/slave) 都可以響應(yīng),基本上是『先響應(yīng)者優(yōu)先』。
從上面的流程當(dāng)中,你會(huì)發(fā)現(xiàn) NIS client 還是會(huì)先針對本機(jī)的賬號(hào)數(shù)據(jù)進(jìn)行查詢,若本機(jī)查不到時(shí)才到 NIS server 上頭尋找。因此,如果你的 NIS client 本身就有很多一般使用者的賬號(hào)時(shí),那跟 NIS server 所提供的賬號(hào)就可能產(chǎn)生一定程度的差異啰!所以,一般來說,在這樣的環(huán)境下,NIS client 或 NIS slave server 會(huì)主動(dòng)拿掉自己本機(jī)的一般使用者賬號(hào),僅會(huì)保留系統(tǒng)所需要的 root 及系統(tǒng)賬號(hào)而已。?如此一來,一般使用者才都會(huì)經(jīng)由 NIS master server 所控管啊! ^_^
根據(jù)上面圖 14.1-1?的說明,我們的 NIS 環(huán)境大致上需要設(shè)定的基本組件就有:
- NIS Master server :將檔案建置成數(shù)據(jù)庫,并提供 slave server 來更新;
- NIS Slave server :以 Master server 的數(shù)據(jù)庫作為本身的數(shù)據(jù)庫來源;
- NIS client :向 master/server 要求登入者的驗(yàn)證數(shù)據(jù)。
就如同上面提到的,在大型環(huán)境中才會(huì)使用到這么復(fù)雜的 NIS master/slave 架構(gòu)。因此,本章僅會(huì)介紹 NIS Master 的建置, 以及 NIS client 的設(shè)定而已。其實(shí),NIS 服務(wù)使用的環(huán)境大概越來越僅局限在學(xué)術(shù)數(shù)值模式仿真的叢集計(jì)算機(jī)架構(gòu)中 (PC cluster), 在那樣的架構(gòu)中,老實(shí)說,鳥哥認(rèn)為僅要學(xué)會(huì) NIS master 即可。如果還有其他賬號(hào)方面的要求,例如跨平臺(tái)的帳戶信息提供, 那可能就得要參考 Samba 或更進(jìn)階的 LDAP 才好呦!這里我們不談啦~現(xiàn)在,就讓我們開始來玩一玩這個(gè) NIS 的設(shè)定吧!
14.2 NIS Server 端的設(shè)定
NIS 服務(wù)器端主要在于提供數(shù)據(jù)庫給客戶端作為驗(yàn)證之用,雖然 NIS 服務(wù)器類型有 Master 與 Slave , 不過鳥哥這里介紹的并不是大型企業(yè)環(huán)境,因此僅介紹 NIS master 的設(shè)定而已啦~那就來設(shè)定看看啰!
14.2.1 所需要的軟件
由于 NIS 服務(wù)器需要使用 RPC 協(xié)議,且 NIS 服務(wù)器同時(shí)也可以當(dāng)成客戶端,因此它需要的軟件就有底下這幾個(gè):
- yp-tools :提供 NIS 相關(guān)的查尋指令功能
- ypbind ??:提供 NIS Client 端的設(shè)定軟件
- ypserv ??:提供 NIS Server 端的設(shè)定軟件
- rpcbind ?:就是 RPC 一定需要的數(shù)據(jù)啊!
如果你是使用 Red Hat 的系統(tǒng),例如我們的 CentOS 6.x 的話,那你可以利用『 rpm -qa | grep '^yp' 』 來檢查是否有安裝上述的軟件。一般來說 yp-tools, ypbind 都會(huì)主動(dòng)的安裝,不過 ypserv 可能就不會(huì)安裝了。 此時(shí)建議你直接使用『?yum?install ypserv 』來安裝吧!立刻就裝好了。底下立刻來設(shè)定啰!
14.2.2 NIS 服務(wù)器相關(guān)的配置文件
在 NIS 服務(wù)器上最重要的就是 ypserv 這個(gè)軟件了,但是,由于 NIS 設(shè)定時(shí)還會(huì)使用到其他網(wǎng)絡(luò)參數(shù)設(shè)定數(shù)據(jù), 因此在配置文件方面需要有底下這些數(shù)據(jù)喔:
- /etc/ypserv.conf:這是最主要的 ypserv 軟件所提供的配置文件,可以規(guī)范 NIS 客戶端是否可登入的權(quán)限。
- /etc/hosts:由于 NIS server/client 會(huì)用到網(wǎng)絡(luò)主機(jī)名與 IP 的對應(yīng),因此這個(gè)主機(jī)名對應(yīng)檔就顯的相當(dāng)重要!每一部主機(jī)名與 IP 都需要記錄才行!
- /etc/sysconfig/network:可以在這個(gè)檔案內(nèi)指定 NIS 的網(wǎng)域 (nisdomainname)。
- /var/yp/Makefile:前面不是說賬號(hào)數(shù)據(jù)要轉(zhuǎn)成數(shù)據(jù)庫文件嗎? 這就是與建立數(shù)據(jù)庫有關(guān)的動(dòng)作配置文件;
至于 NIS 服務(wù)器提供的主要服務(wù)方面有底下兩個(gè):
- /usr/sbin/ypserv:就是 NIS 服務(wù)器的主要提供服務(wù);
- /usr/sbin/rpc.yppasswdd:提供額外的 NIS 客戶端之用戶密碼修改服務(wù), 透過這個(gè)服務(wù), NIS 客戶端可以直接修改在 NIS 服務(wù)器上的密碼。相關(guān)的使用程序則是 yppasswd 指令;
與賬號(hào)密碼的數(shù)據(jù)庫有關(guān)的指令方面有底下幾個(gè):
- /usr/lib64/yp/ypinit:建立數(shù)據(jù)庫的指令,非常常用 (在 32 位的系統(tǒng)下,文件名則是 /usr/lib/yp/ypinit 喔!);
- /usr/bin/yppasswd:與 NIS 客戶端有關(guān),主要在讓用戶修改服務(wù)器上的密碼。
14.2.3 一個(gè)實(shí)作案例
如果你有觀察過圖 14.1-1?的話,你會(huì)發(fā)現(xiàn)到我們的 NIS 需要設(shè)定 Master/Slave 及 client 等, 不過我們這里僅介紹 NIS master server 與 NIS client 兩個(gè)組件而已,如果你有需要額外的 slave 的話, 再請查閱 NIS 官網(wǎng)的介紹啰。底下鳥哥先擬一個(gè)簡單的案例,做完案例我們再來談?wù)剬?shí)際可能會(huì)使用于叢集計(jì)算機(jī)的案例吧!
- NIS 的域名為 vbirdnis
- 整個(gè)內(nèi)部的信任網(wǎng)域?yàn)?192.168.100.0/24
- NIS master server 的 IP 為 192.168.100.254 ,主機(jī)名為 www.centos.vbird
- NIS client 的 IP 為 192.168.100.10,主機(jī)名為 clientlinux.centos.vbird
底下我們就一個(gè)一個(gè)來設(shè)定吧!
14.2.4 NIS server 的設(shè)定與啟動(dòng)
NIS 服務(wù)器的設(shè)定真是很簡單,首先,你必須要在 NIS 服務(wù)器上面搞定你的賬號(hào)與密碼相關(guān)數(shù)據(jù), 這包括 /etc/passwd, /etc/shadow, /etc/hosts, /etc/group .... 等等,都得要先搞定才行! 詳細(xì)的賬號(hào)相關(guān)資料請參考基礎(chǔ)篇的第十四章賬號(hào)管理。 等到搞定之后你就可以繼續(xù) NIS 服務(wù)器的設(shè)定了:
-
1. 先設(shè)定 NIS 的域名 (NIS domain name)
NIS 是會(huì)分領(lǐng)域名 (domain name) 來分辨不同的賬號(hào)密碼數(shù)據(jù)的,因此你必須要在服務(wù)器與客戶端都指定相同的 NIS 領(lǐng)域名才行。設(shè)定這個(gè) NIS 領(lǐng)域名的動(dòng)作很簡單,就直接編輯 /etc/sysconfig/network 即可!如下所示:
| [root@www ~]# vim /etc/sysconfig/network # 不要更改其他既有數(shù)據(jù),只要加入底下這幾行即可: NISDOMAIN=vbirdnis <==設(shè)定 NIS 領(lǐng)域名 YPSERV_ARGS="-p 1011" <==設(shè)定 NIS 每次都啟動(dòng)在固定的埠口 |
當(dāng)然,你也可以使用手動(dòng)的方式暫時(shí)設(shè)定好你的 NIS 領(lǐng)域名,透過的方法就是 nisdomainname 這個(gè)指令。 (其實(shí) nisdomainname 與 ypdomainname 及 domainname 都是一模一樣的指令啦!你只要記住一個(gè)指令名稱即可。請自行 man domainname 吧!)不過,這個(gè)指令現(xiàn)在大概只用來檢查設(shè)定是否正確,因?yàn)閱?dòng) NIS 服務(wù)器時(shí),服務(wù)器去捉取的數(shù)據(jù)就是從 network 這個(gè)檔案里面捉取的!所以只要改這個(gè)配置文件即可啊!
另外,由于未來想使用 iptables 直接管理 NIS 的使用,因此我們想要控制 NIS 啟動(dòng)在固定的埠口上。此時(shí), 就使用『YPSERV_ARGS="-p 1011"』這個(gè)設(shè)定值來固定埠口在 1011 吧!
-
2. 主要配置文件 /etc/ypserv.conf
這個(gè)配置文件就是 NIS 服務(wù)器最主要的配置文件啦!內(nèi)容其實(shí)很簡單,你可以保留默認(rèn)值即可。不過,也可以作一些更動(dòng)啦!
| [root@www ~]# vim /etc/ypserv.conf dns: no # NIS 服務(wù)器大多使用于內(nèi)部局域網(wǎng)絡(luò),只要有 /etc/hosts 即可,不用 DNS 啦files: 30 # 預(yù)設(shè)會(huì)有 30 個(gè)數(shù)據(jù)庫被讀入內(nèi)存當(dāng)中,其實(shí)我們的賬號(hào)檔案并不多,30 個(gè)夠用了。xfr_check_port: yes # 與 master/slave 有關(guān),將同步更新的數(shù)據(jù)庫比對所使用的端口,放置于 <1024 內(nèi)。# 底下則是設(shè)定限制客戶端或 slave server 查詢的權(quán)限,利用冒號(hào)隔成四部分: # [主機(jī)名/IP] : [NIS域名] : [可用數(shù)據(jù)庫名稱] : [安全限制] # [主機(jī)名/IP] :可以使用 network/netmask 如 192.168.100.0/255.255.255.0 # [NIS域名] :例如本案例中的 vbirdnis # [可用數(shù)據(jù)庫名稱]:就是由 NIS 制作出來的數(shù)據(jù)庫名稱; # [安全限制] :包括沒有限制 (none)、僅能使用 <1024 (port) 及拒絕 (deny) # 一般來說,你可以依照我們的網(wǎng)域來設(shè)定成為底下的模樣: 127.0.0.0/255.255.255.0 : * : * : none 192.168.100.0/255.255.255.0 : * : * : none * : * : * : deny # 星號(hào) (*) 代表任何數(shù)據(jù)都接受的意思。上面三行的意思是,開放 lo 內(nèi)部接口、 # 開放內(nèi)部 LAN 網(wǎng)域,且杜絕所有其他來源的 NIS 要求的意思。# 還有一個(gè)簡單作法,你可以先將上面三行批注,然后加入底下這一行即可: * : * : * : none |
由于鳥哥習(xí)慣在內(nèi)部網(wǎng)域并不設(shè)定比較嚴(yán)格的限制,因此通常鳥哥都是選擇使用『 * : * : * : none 』那個(gè)設(shè)定值! 然后透過 iptables 來管控可使用的來源就是了。當(dāng)然,你可以依據(jù)你的需求來設(shè)定啦!
-
3. 設(shè)定主機(jī)名與 IP 的對應(yīng) (/etc/hosts)
在 /etc/ypserv.conf 的設(shè)定當(dāng)中我們談到 NIS 大部分是給局域網(wǎng)絡(luò)內(nèi)的主機(jī)使用的,所以當(dāng)然就不需要 DNS 的設(shè)定了。不過,由于 NIS 使用到很多的主機(jī)名,但是網(wǎng)絡(luò)聯(lián)機(jī)透過的是 IP 啊!所以你一定要設(shè)定好 /etc/hosts 里面的主機(jī)名與 IP 的對應(yīng),否則會(huì)無法成功聯(lián)機(jī) NIS !這個(gè)很重要,絕大部分的朋友無法達(dá)成 NIS server/client 的聯(lián)機(jī)都是這里出問題而已。 依據(jù)本案例的設(shè)定值,你應(yīng)該這樣做:
| [root@www ~]# vim /etc/hosts # 原本就有的 localhost 與 127.0.0.1 之類的設(shè)定都不要更動(dòng),只要新增數(shù)據(jù): 192.168.100.254 www.centos.vbird 192.168.100.10 clientlinux.centos.vbird[root@www ~]# hostname www.centos.vbird # 再做個(gè)確認(rèn),確定輸出的主機(jī)名與本機(jī) IP 確實(shí)有寫入 /etc/hosts 喔! |
注意!如果你的主機(jī)名 (hostname) 與 NIS 的主機(jī)名不一樣,那么在這個(gè)檔案當(dāng)中還是需要將你的主機(jī)名給他設(shè)定進(jìn)來! 否則在后面數(shù)據(jù)庫的設(shè)定時(shí),肯定會(huì)發(fā)生問題。當(dāng)然啦,你也可以直接在 /etc/sysconfig/network 當(dāng)中直接重新設(shè)定主機(jī)名,然后重新啟動(dòng),或者是利用 hostname 這個(gè)指令重新設(shè)定你的主機(jī)名也可以。
-
4. 啟動(dòng)與觀察所有相關(guān)的服務(wù)
接下來當(dāng)然是先啟動(dòng)所有相關(guān)的服務(wù)啰,這包括 RPC, ypserv 以及 yppasswdd 啰!不過,如果你的 RPC 本來就已經(jīng)啟動(dòng)的話,那就不要重新啟動(dòng) rpcbind 了!此外,為了也讓 yppasswdd 啟動(dòng)在固定的埠口,方便防火墻的管理, 因此,我們也建議你可以設(shè)定一下 /etc/sysconfig/yppasswdd 喔!
| [root@www ~]# vim /etc/sysconfig/yppasswdd YPPASSWDD_ARGS="--port 1012" <==找到這個(gè)設(shè)定值,修改一下內(nèi)容成這樣![root@www ~]# /etc/init.d/ypserv start [root@www ~]# /etc/init.d/yppasswdd start [root@www ~]# chkconfig ypserv on [root@www ~]# chkconfig yppasswdd on |
注意,主要的 NIS 服務(wù)是 ypserv ,不過,如果要提供 NIS 客戶端的密碼修改功能的話, 最好還是得要啟動(dòng) yppasswdd 這個(gè)服務(wù)才好。在啟動(dòng)完畢后,我們可以利用 rpcinfo 來檢查看看:
| [root@www ~]# rpcinfo -p localhostprogram vers proto port service100000 4 tcp 111 portmapper100000 4 udp 111 portmapper100004 2 udp 1011 ypserv100004 1 udp 1011 ypserv100004 2 tcp 1011 ypserv100004 1 tcp 1011 ypserv100009 1 udp 1012 yppasswdd # 其他不相干的 RPC 鳥哥將它拿掉了,與 NIS 有關(guān)的至少要有上面這幾個(gè)!要仔細(xì)看, # 看看埠口是否為我們規(guī)定的 1011, 1012 ,若不是的話,得要修改一下配置文件。[root@www ~]# rpcinfo -u localhost ypserv program 100004 version 1 ready and waiting program 100004 version 2 ready and waiting |
很多時(shí)候,很多朋友在設(shè)定完 NIS 后又回去設(shè)定 NFS 了,結(jié)果看了前一章的介紹,竟然又重新啟動(dòng) rpcbind , 這將導(dǎo)致 ypserv 的注冊數(shù)據(jù)被注銷掉。因此,使用上述的動(dòng)作來檢查看看服務(wù)有沒有在等待中, 要看到如上的『就緒并等待服務(wù)』才會(huì)是正常的呦!
-
5. 處理賬號(hào)并建立數(shù)據(jù)庫
在完成了上面的所有步驟后,接下來我們得要開始將主機(jī)上面的賬號(hào)檔案轉(zhuǎn)成數(shù)據(jù)庫檔案啦! 不過,因?yàn)閾?dān)心與 NIS 客戶端的賬號(hào)有沖突,加上之前我們已經(jīng)建立過一些賬號(hào)了。所以,這里我們建立三個(gè)新賬號(hào), 分別是 nisuser1, nisuser2, nisuser3 。不過賬號(hào)主要是依據(jù) UID 來判斷的啊!因此,我們使用大于 1000 的 UID 來建立這三個(gè)賬號(hào)喔!
| [root@www ~]# useradd -u 1001 nisuser1 [root@www ~]# useradd -u 1002 nisuser2 [root@www ~]# useradd -u 1003 nisuser3 [root@www ~]# echo password | passwd --stdin nisuser1 [root@www ~]# echo password | passwd --stdin nisuser2 [root@www ~]# echo password | passwd --stdin nisuser3 |
接下來,將建立的帳密數(shù)據(jù)轉(zhuǎn)成數(shù)據(jù)庫吧!轉(zhuǎn)換的動(dòng)作直接透過 /usr/lib64/yp/ypinit 這個(gè)指令來處理即可!整個(gè)步驟是這樣做的:
| [root@www ~]# /usr/lib64/yp/ypinit -mAt this point, we have to construct a list of the hosts which will run NIS servers. www.centos.vbird is in the list of NIS server hosts. Please continue to add the names for the other hosts, one per line. When you are done with the list, type a <control D>.next host to add: www.centos.vbird <==系統(tǒng)根據(jù)主機(jī)名自動(dòng)捉取next host to add: <==這個(gè)地方按下 [crtl]-d The current list of NIS servers looks like this:www.centos.vbirdIs this correct? [y/n: y] y We need a few minutes to build the databases... Building /var/yp/vbirdnis/ypservers... Running /var/yp/Makefile... gmake[1]: Entering directory `/var/yp/vbirdnis' Updating passwd.byname... Updating passwd.byuid... ....(中間省略).... gmake[1]: Leaving directory `/var/yp/vbirdnis'www.centos.vbird has been set up as a NIS master server.Now you can run ypinit -s www.centos.vbird on all slave server. |
要注意出現(xiàn)的信息當(dāng)中,在告知你可以直接輸入 [ctrl]-d 以結(jié)束的那個(gè)地方, 你的主機(jī)名會(huì)主動(dòng)的被捉出來,注意!這個(gè)主機(jī)名務(wù)必需要在 /etc/hosts 可以被找到 IP 的對應(yīng), 否則會(huì)出現(xiàn)問題。另外,萬一在執(zhí)行 ypinit -m 時(shí),出現(xiàn)如下的錯(cuò)誤,那肯定就是有些數(shù)據(jù)沒有被建立了!
| gmake[1]: *** No rule to make target `/etc/aliases', needed by `mail.aliases'. Stop. gmake[1]: Leaving directory `/var/yp/vbirdnis' make: *** [target] Error 2 Error running Makefile. Please try it by hand.[root@www ~]# touch /etc/aliases # 解決方法很簡單吶!缺少什么檔案,就 touch 他就是了![root@www ~]# /usr/lib64/yp/ypinit -m # 然后再重新執(zhí)行一次即可! |
如果是如下的錯(cuò)誤,那可能是因?yàn)?#xff1a;
- 你的 ypserv 服務(wù)沒有順利啟動(dòng),請利用 rpcinfo 檢查看看;
- 你的主機(jī)名與 IP 沒有對應(yīng)好,請檢查 /etc/hosts
| gmake[1]: Entering directory `/var/yp/vbirdnis' Updating passwd.byname... failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating passwd.byuid... failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating group.byname... ....(底下省略).... |
要注意啊,如果你的用戶密碼有變動(dòng)過,那么你就得要重新制作數(shù)據(jù)庫,重新啟動(dòng) ypserv 及 yppasswdd 喔! 注意注意啊!整個(gè) NIS 服務(wù)器這樣就給搞定了,有沒有很簡單啊!
14.2.5 防火墻設(shè)置
又來到了防火墻的規(guī)劃了!要注意的是,我們的 NIS 與 NFS 都是使用 RPC Server 的,所以啰,除了上述談到的固定埠口之外, 你還得要開放 port 111 才行。假設(shè)你已經(jīng)看過前一章,而且是使用鳥哥的 iptables.rule 腳本來處理你的防火墻, 那么你可以修改該檔案的內(nèi)容,新增幾條規(guī)則去:
| [root@www ~]# vim /usr/local/virus/iptables/iptables.allow iptables -A INPUT -i $EXTIF -p tcp -s 192.168.100.0/24 --dport 1011 -j ACCEPT iptables -A INPUT -i $EXTIF -p udp -s 192.168.100.0/24 -m multiport \--dport 1011,1012 -j ACCEPT[root@www ~]# /usr/local/virus/iptables/iptables.rule # 千萬記得要重新建置防火墻規(guī)則啊! |
14.3 NIS Client 端的設(shè)定
我們知道網(wǎng)絡(luò)聯(lián)機(jī)是雙向的,所以 NIS server 提供數(shù)據(jù)庫檔案,NIS client 當(dāng)然也需要提供一些聯(lián)機(jī)的軟件啰!這個(gè)聯(lián)機(jī)的軟件就是 ypbind 啦!此外,如同圖 14.1-1?的介紹,在 NIS client 端有登入需求時(shí),NIS client 基本上還是先搜尋自己的 /etc/passwd, /etc/group 等數(shù)據(jù)后才再去找 NIS server 的數(shù)據(jù)庫啊!所以 NIS client 最好能夠?qū)⒈旧淼馁~號(hào)密碼刪除到僅剩下系統(tǒng)賬號(hào),亦即 UID, GID 均小于 500 以下的賬號(hào)即可, 如此一來既可讓系統(tǒng)執(zhí)行無誤,也能夠讓登入者的信息完全來自 NIS server ,比較單純啦!
| Tips: 事實(shí)上,你想要讓 NIS 服務(wù)器寫入的各項(xiàng)賬號(hào)數(shù)據(jù)都在 NIS server 的 /var/yp/Makefile 那個(gè)檔案設(shè)定的! 你可以進(jìn)入該檔案搜尋一下 UID 就知道了! ^_^ |
14.3.1 NIS client 所需軟件與軟件結(jié)構(gòu)
NIS client 端所需要的軟件僅有:
- ypbind
- yp-tools
yp-tools 是提供查詢的軟件,至于 ypbind 則是與 ypserv 互相溝通的客戶端聯(lián)機(jī)軟件啦! 另外,在 CentOS 當(dāng)中我們還有很多配置文件是與認(rèn)證有關(guān)的,包含 ypbind 的配置文件時(shí), 在設(shè)定 NIS client 你可能需要?jiǎng)拥降紫碌臋n案:
- /etc/sysconfig/network:就是 NIS 的領(lǐng)域名嘛!
- /etc/hosts:至少需要有各個(gè) NIS 服務(wù)器的 IP 與主機(jī)名對應(yīng);
- /etc/yp.conf:這個(gè)則是 ypbind 的主要配置文件,里面主要設(shè)定 NIS 服務(wù)器所在
- /etc/sysconfig/authconfig:規(guī)范賬號(hào)登入時(shí)的允許認(rèn)證機(jī)制;
- /etc/pam.d/system-auth?:這個(gè)最容易忘記!因?yàn)橘~號(hào)通常由 PAM 模塊所管理, 所以你必須要在 PAM 模塊內(nèi)加入 NIS 的支持才行!
- /etc/nsswitch.conf?:這個(gè)檔案可以規(guī)范賬號(hào)密碼與相關(guān)信息的查詢順序,默認(rèn)是先找 /etc/passwd 再找 NIS 數(shù)據(jù)庫;
另外, NIS 還提供了幾個(gè)有趣的程序給 NIS 客戶端來進(jìn)行賬號(hào)相關(guān)參數(shù)的修改,例如密碼、shell 等等, 主要有底下這幾個(gè)指令:
- /usr/bin/yppasswd :更改你在 NIS database (NIS Server 所制作的數(shù)據(jù)庫) 的密碼
- /usr/bin/ypchsh ? :同上,但是是更改 shell
- /usr/bin/ypchfn ? :同上,但是是更改一些用戶的訊息!
OK!那么底下就讓我們開始來設(shè)定 NIS 客戶端吧!^_^
14.3.2 NIS client 的設(shè)定與啟動(dòng)
啟動(dòng) NIS client 的設(shè)定就簡單多了!最主要是加入 NIS domain 當(dāng)中,然后再啟動(dòng) ypbind 即可。 雖然你可以手動(dòng)去修改所有的配置文件,然而近期以來的 Linux distributions 賬號(hào)處理機(jī)制越來越復(fù)雜, 所以如果你想要手動(dòng)修改所有配置文件,恐怕會(huì)瘋掉的~因此,這里建議你使用系統(tǒng)提供的工具來設(shè)定, 至于一些重要配置文件,最后有機(jī)會(huì)再去參考一下即可。
那么 CentOS 6.x 提供了什么好用的管理工具呢?很簡單,就利用 setup 這個(gè)指令即可!輸入 setup 就會(huì)出現(xiàn)如下的圖示, 然后依序這么處理就好了呦!
圖 14.3-1、利用 setup 進(jìn)入 authconfig 認(rèn)證項(xiàng)目
記得在出現(xiàn)上圖 14.3-1 后,選擇認(rèn)證設(shè)定,如果是出現(xiàn)英文的話,那么你就得要選擇『Authentication configuration』的項(xiàng)目,之后就會(huì)進(jìn)入下面的畫面:
圖 14.3-2、進(jìn)入 authconfig 之后,選擇 NIS 項(xiàng)目
因?yàn)槲覀円?NIS 作為登入者身份驗(yàn)證的機(jī)制,因此就得要選擇 NIS 項(xiàng)目,如果是英文的話,得要選擇『Use NIS』項(xiàng)目即可。
圖 14.3-3、填寫 NIS 領(lǐng)域以及 NIS 服務(wù)器的 IP 即可
最后再填寫 NIS 網(wǎng)域 (Domain) 以及 NIS 服務(wù)器的 IP (Server),按下確定即可。如果系統(tǒng)很快的就跳回圖 14.3-1 的畫面, 代表你的設(shè)定理論上是沒有問題的。如果一直卡在如下的畫面中:
| 正在激活 rpcbind: [ 確定 ] 正在關(guān)閉 NIS 服務(wù): [ 確定 ] 正在啟動(dòng) NIS 服務(wù): [ 確定 ] 正在綁定 NIS 服務(wù):....... <==這里一直卡住,沒辦法結(jié)束 |
上述的數(shù)據(jù)就是出問題啦!那代表你的 NIS client 沒有辦法連接上 NIS server,最常發(fā)生的就是服務(wù)器的防火墻忘記放行,或者是你客戶端輸入服務(wù)器 IP 時(shí),打錯(cuò)數(shù)字了~ 那也是很常發(fā)生的錯(cuò)誤啦!這時(shí)請自行去修改一番吧!那么這個(gè) setup 到底做了什么修改呢?我們也來看看幾個(gè)被改掉的重要配置文件吧:
| [root@clientlinux ~]# cat /etc/sysconfig/network HOSTNAME=clientlinux.centos.vbird NETWORKING=yes GATEWAY=192.168.100.254 NISDOMAIN=vbirdnis <==這個(gè)玩意兒會(huì)主動(dòng)的被建立起來[root@clientlinux ~]# cat /etc/yp.conf ....(前面省略).... domain vbirdnis server 192.168.100.254 <==主動(dòng)建立這玩意兒~[root@clientlinux ~]# vim /etc/nsswitch.conf passwd: files nis shadow: files nis group: files nis hosts: files nis dns # 上面幾個(gè)項(xiàng)目是比較重要的,包括身份參數(shù)、密碼、群組名、主機(jī)名與 IP 對應(yīng)數(shù)據(jù)等。 # 你會(huì)看到,每個(gè)項(xiàng)目后面都會(huì)接著 nis ,所以 nis 有被支持啰! |
因?yàn)楦鼊?dòng)到的檔案實(shí)在太多了,所以鳥哥還是建議使用 setup 來調(diào)整即可。但是,如果你真的想要手動(dòng)處理的話, 那么你必須要手動(dòng)的修改底下這些檔案:
- /etc/sysconfig/network (加入 NISDOMAIN 項(xiàng)目)
- /etc/nsswitch.conf (修改許多主機(jī)驗(yàn)證功能的順序)
- /etc/sysconfig/authconfig (CentOS 的認(rèn)證機(jī)制)
- /etc/pam.d/system-auth (許多登入所需要的 PAM 認(rèn)證過程)
- /etc/yp.conf (亦即是 ypbind 的配置文件)
14.3.3 NIS client 端的檢驗(yàn): yptest, ypwhich, ypcat
如何確定 NIS client 已經(jīng)連上 NIS server 呢?基本上,只要?jiǎng)倓偸褂?setup 去設(shè)定時(shí),最后的步驟并沒有被卡住, 那應(yīng)該就是順利成功啦!該步驟會(huì)自動(dòng)啟動(dòng) rpcbind 與 ypbind 兩個(gè)服務(wù)呦!那如何確認(rèn)數(shù)據(jù)傳送是正確的? 簡單的要命啊!你可以利用 id 這個(gè)指令直接檢查 NIS server 有的,但是 NIS client 沒有的賬號(hào),如果有出現(xiàn)該賬號(hào)的相關(guān) UID/GID 信息時(shí),那表示數(shù)據(jù)傳輸也是正確的。 除此之外,我們還可以透過 NIS 提供的相關(guān)檢驗(yàn)功能來檢查喔!底下分別來瞧一瞧:
-
利用 yptest 檢驗(yàn)數(shù)據(jù)庫之測試:
直接在 NIS client 輸入 yptest 即可檢查相關(guān)的測試數(shù)據(jù),如下所示:
| [root@clientlinux ~]# yptest Test 1: domainname Configured domainname is "vbirdnis"Test 2: ypbind Used NIS server: www.centos.vbirdTest 3: yp_match WARNING: No such key in map (Map passwd.byname, key nobody) ....(中間省略)....Test 6: yp_master www.centos.vbird....(中間省略)....Test 8: yp_maplist passwd.byname protocols.byname hosts.byaddr hosts.byname ....(中間省略)....Test 9: yp_all nisuser1 nisuser1:$1$U9Gccb60$K5lDQ.mGBw9x4oNEkM0Lz/:1001:1001::/home/nisuser1:/bin/bash ....(中間省略).... 1 tests failed |
從這個(gè)測試當(dāng)中我們可以發(fā)現(xiàn)一些錯(cuò)誤,就是在 Test 3 出現(xiàn)的那個(gè)警告信息啦。還好,那只是說沒有該數(shù)據(jù)庫而已~ 該錯(cuò)誤是可以忽略的。重點(diǎn)在第 9 個(gè)步驟 yp_all 必須要有列出你 NIS server 上頭的所有帳戶信息,如果有出現(xiàn)賬號(hào)相關(guān)數(shù)據(jù)的話,那么應(yīng)該就算驗(yàn)證成功了!
| Tips: 比較有問題的是第三步驟,他會(huì)出現(xiàn)在 passwd.byname 當(dāng)中找不到 nobody 的字樣。這是因?yàn)樵缙诘?nobody 之 UID 都設(shè)定在 65534 ,但 CentOS 則將 nobody 設(shè)定為系統(tǒng)賬號(hào)的 99 ,所以當(dāng)然不會(huì)被記錄,也就出現(xiàn)這一個(gè)警告。不過,這個(gè)錯(cuò)誤是可忽略的啦! |
-
利用 ypwhich 檢驗(yàn)數(shù)據(jù)庫數(shù)量
單純使用 ypwhich 的時(shí)候顯示的是『NIS Client 的 domain』名稱,而當(dāng)加入 -x 這個(gè)參數(shù)時(shí), 則是顯示『NIS Client 與 Server 之間溝通的數(shù)據(jù)庫有哪些?』你可以這樣測試哩!
| [root@clientlinux ~]# ypwhich -x Use "hosts" for map "hosts.byname" Use "group" for map "group.byname" Use "passwd" for map "passwd.byname" ....(以下省略).... |
由上面我們可以很清楚的就看到相關(guān)的檔案啦!這些數(shù)據(jù)庫檔案則是放置在我的 NIS Server 的 /var/yp/vbirdnis/* 里面啰!
-
利用 ypcat 讀取數(shù)據(jù)庫內(nèi)容
除了 yptest 之外,你還可以直接利用 ypcat 讀取數(shù)據(jù)庫的內(nèi)容喔!一般作法是這樣:
| [root@clientlinux ~]# ypcat [-h nisserver] [數(shù)據(jù)庫名稱] 選項(xiàng)與參數(shù): -h nisserver :如果有設(shè)定的話,指向某一部特定的 NIS 服務(wù)器,如果沒有指定的話,就以 ypbind 之設(shè)定為主; 數(shù)據(jù)庫名稱:亦即在 /var/yp/vbirdnis/ 內(nèi)的檔名啊!例如 passwd.byname# 讀出 passwd.byname 的數(shù)據(jù)庫內(nèi)容 [root@clientlinux ~]# ypcat passwd.byname |
這三個(gè)指令在進(jìn)行 NIS Client 端的檢驗(yàn)時(shí),是相當(dāng)有用的喔!不要忽略了他的存在啊!尤其是剛架設(shè)好 NIS Client 時(shí),一定要使用 yptest 去檢查看看有沒有設(shè)定錯(cuò)誤喔!根據(jù)屏幕顯示的訊息去一個(gè)一個(gè)校正錯(cuò)誤才行啊!
14.3.4 使用者參數(shù)修改: yppasswd, ypchfn, ypchsh
好了,完成了上述的設(shè)定后,你的 NIS server/client 的賬號(hào)已經(jīng)同步了!真是高興不是嗎? 不過,還有個(gè)挺大的問題,那就是...使用者如何在 NIS client 修改他自己的登入?yún)?shù),例如密碼、shell 等等? 因?yàn)?NIS client 是藉由數(shù)據(jù)庫來取得用戶的賬號(hào)密碼,那如何在 NIS 客戶端處理賬號(hào)密碼的訂正?
問的好!這也是為何我們需要在 NIS server 啟動(dòng) yppasswdd 這支服務(wù)的主要用意! 因?yàn)?yppasswdd 可以接收 NIS client 端傳來的密碼修改,藉此而處理 NIS server 的 /etc/passwd, /etc/shadow , 然后 yppasswdd 還能夠重建密碼數(shù)據(jù)庫,讓 NIS server 同步更新數(shù)據(jù)庫!真是很不錯(cuò)啊! ^_^
那該如何下達(dá)指令呢?很簡單啊!透過 yppasswd, ypchsh, ypchfn 來處理即可。這三個(gè)指令的對應(yīng)是:
- yppasswd :與 passwd 指令相同功能;
- ypchfn :與 chfn 相同功能;
- ypchsh :與 chsh 相同功能。
因?yàn)楣δ芟喈?dāng),所以鳥哥這里僅說明一下 yppasswd 而已。假設(shè)你已經(jīng)登入 NIS client 那部主機(jī), 并且是以 nisuser1 這個(gè)使用者登入的,記住,這個(gè)用戶相關(guān)數(shù)據(jù)僅在 NIS server 上。 接下來,這個(gè)使用者可以下達(dá) yppasswd ,如下所示:
| [root@clientlinux ~]# grep nisuser /etc/passwd <==不會(huì)出現(xiàn)任何訊息,因?yàn)闊o此賬號(hào) [root@clientlinux ~]# su - nisuser1 <==直接切換身份看看! su: warning: cannot change directory to /home/nisuser1: No such file or directory -bash-4.1$ id uid=1001(nisuser1) gid=1001(nisuser1) groups=1001(nisuser1) # 因?yàn)槲覀?client.centos.vbird 僅有帳戶信息,并沒有用戶家目錄, # 所以就會(huì)出現(xiàn)如上的警告,因此才需要用 id 驗(yàn)證,并且需要加掛 NFS 嘛! # 仔細(xì)看,現(xiàn)在的身份確實(shí)是 nisuser1 喔!確實(shí)有連上 NIS server 啦!-bash-4.1$ yppasswd Changing NIS account information for nisuser1 on www.centos.vbird. Please enter old password: <==這里輸入舊密碼 Changing NIS password for nisuser1 on www.centos.vbird. Please enter new password: <==這里輸入新密碼 Please retype new password: <==再輸入一遍The NIS password has been changed on www.centos.vbird.-bash-4.1$ exit |
嘿嘿!如何,這樣就更新了 NIS server 上頭的 /etc/shadow 以及 /var/yp/vbirdnis/passwd.by* 的數(shù)據(jù)庫, 簡單吧!一下子就同步化了。不過,如果要教育使用者使用 yppasswd 的話,他可能不太能適應(yīng), 不要緊,你可以透過修改 alias 或者是置換掉 /usr/bin/passwd 這支程序即可!那現(xiàn)在讓我們回到 NIS 服務(wù)器端看看真的有更動(dòng)到數(shù)據(jù)庫嗎?
| [root@www ~]# ll /var/yp/vbirdnis/ -rw-------. 1 root root 13836 Jul 28 13:10 netid.byname -rw-------. 1 root root 14562 Jul 28 13:29 passwd.byname -rw-------. 1 root root 14490 Jul 28 13:29 passwd.byuid -rw-------. 1 root root 28950 Jul 28 13:10 protocols.byname # 仔細(xì)看,就是那個(gè)密碼檔案被更動(dòng)過~時(shí)間已經(jīng)不一樣了!再看看登錄檔吧![root@www ~]# tail /var/log/messages Jul 28 13:29:14 www rpc.yppasswdd[1707]: update nisuser1 (uid=1001) from host 192.168.100.10 successful. |
最終從登錄檔里面,我們也能夠得到相關(guān)的記錄!這樣就非常完美啦! ^_^
14.4 NIS 搭配 NFS 的設(shè)定在叢集計(jì)算機(jī)上的應(yīng)用
剛剛在 NIS 客戶端的 nisuser1 登入測試中,你應(yīng)該已經(jīng)發(fā)現(xiàn)了一件事,那就是怎么 nisuser1 沒有家目錄啊?這很正常啊!因?yàn)?nisuser1 的家目錄是在服務(wù)器端的 /home 上頭,而你在客戶端登入時(shí), 在客戶端的 /home 底下根本不可能有 nisuser1 的家目錄嘛!那怎辦?很簡單,將服務(wù)器端的 /home 掛載到客戶端上面即可啊! 那這個(gè)觀念跟叢集計(jì)算機(jī)有啥關(guān)系啊?就讓我們來談?wù)劙?#xff01;
-
什么是叢集計(jì)算機(jī)?
因?yàn)閭€(gè)人計(jì)算機(jī)的 CPU 速度越來越快,核心數(shù)目越來越多,因此個(gè)人計(jì)算機(jī)的效能已經(jīng)不比服務(wù)器等級的大型計(jì)算機(jī)差了! 不過,如果要用來作為計(jì)算大型數(shù)值模式的應(yīng)用,即使是最快的個(gè)人計(jì)算機(jī),還是沒有辦法有效的負(fù)荷的。此時(shí)你可能就得要考慮一下, 是要買超級計(jì)算機(jī) (Top 500) 還是要自己組一部 PC 叢集計(jì)算機(jī) (PC cluster)。
超級計(jì)算機(jī)的結(jié)構(gòu)中,主要是透過內(nèi)部電路將好多顆 CPU 與內(nèi)存連接在一塊,因?yàn)槭翘厥庠O(shè)計(jì),因此價(jià)格非常昂貴。 如果我們可以將較便宜的個(gè)人計(jì)算機(jī)串接在一塊,然后將數(shù)值運(yùn)算的任務(wù)分別丟給每一部串接在一塊的個(gè)人計(jì)算機(jī), 那不就很像超級計(jì)算機(jī)了嗎?沒錯(cuò)!這就是 PC cluster 最早的想法。
但是這個(gè)作法當(dāng)中有幾個(gè)限制喔,因?yàn)槊坎坑?jì)算機(jī)都需要運(yùn)算相同的程序,而我們知道運(yùn)算的數(shù)據(jù)都在內(nèi)存當(dāng)中, 而程序啟動(dòng)時(shí)需要給予一個(gè)身份,而程序讀取的程序在每部計(jì)算機(jī)上面都需要是相同的!同時(shí),每部計(jì)算機(jī)都需要支持平行化運(yùn)算! 所以,在 PC cluster 上面的所有計(jì)算機(jī)就得要有:
- 相同的用戶帳戶信息,包括賬號(hào)、密碼、家目錄等等一大堆信息;
- 相同的文件系統(tǒng),例如 /home, /var/spool/mail 以及數(shù)值程序放置的位置
- 可以搭配的平行化函式庫,常見的有 MPICH, PVM...
上面的三個(gè)項(xiàng)目中,第一個(gè)項(xiàng)目我們可以透過 NIS 來處理,第二個(gè)項(xiàng)目則可以使用 NFS 來搞定~所以啰,你說, NIS 與 NFS 有沒有可使用的空間啊? ^_^
| Tips: 由于『預(yù)測』這個(gè)玩意兒越來越重要,比如說氣象預(yù)報(bào)、空氣質(zhì)量預(yù)報(bào)等等,而預(yù)測需要一個(gè)很龐大的模式來進(jìn)行仿真的工作, 這么龐大的模擬工作需要大量的運(yùn)算,在學(xué)校單位要買一部很貴的大型主機(jī)實(shí)在很不容易!不過,如果能夠串接十部四核心的個(gè)人計(jì)算機(jī)的話, 那么可能只需要不到 20 萬便能夠組成相當(dāng)于具有 40 顆 CPU 的大型主機(jī)的運(yùn)算能力了!所以說,在未來 PC cluster 是一個(gè)可以發(fā)展的課題喔! |
-
另一個(gè)不成材的實(shí)例
那我們有沒有辦法來實(shí)作一下平行化的叢集架構(gòu)呢?老實(shí)說,很麻煩~不過,至少我們可以先完成前面談到的兩個(gè)組件! 分別是 NIS 與 NFS 嘛!但是,在我們目前這個(gè)網(wǎng)絡(luò)環(huán)境中,用戶賬號(hào)實(shí)在是太紊亂了~所以,如果想要將服務(wù)器的 /home 掛載到客戶端的 /home,那么那個(gè)測試用的客戶端可能很多本地用戶都無法登入了~因此,在這個(gè)測試練習(xí)中, 我們打算這樣做:
- 賬號(hào):建立大于 2000 以上的賬號(hào),賬號(hào)名稱為 cluser1, cluser2, cluser3 (將 cluster user 縮寫為 cluser,不是少寫一個(gè) t 喔!),且這些賬號(hào)的家目錄預(yù)計(jì)放置于 /rhome 目錄內(nèi),以與 NIS client 本地的用戶分開;
- NIS 服務(wù)器:領(lǐng)域名為 vbirdcluster,服務(wù)器是 www.centos.vbird (192.168.100.254),客戶端是 clientlinux.centos.vbird (192.168.100.10);
- NFS 服務(wù)器:服務(wù)器分享了 /rhome 給 192.168.100.0/24 這個(gè)網(wǎng)域,且預(yù)計(jì)將所有程序放置于 /cluster 目錄中。 此外,假設(shè)所有客戶端都是很干凈的系統(tǒng),因此不需要壓縮客戶端 root 的身份。
- NFS 客戶端:將來自 server 的文件系統(tǒng)都掛載到相同目錄名稱底下!
那就分別來實(shí)作一下啰!
-
NIS 實(shí)作階段
| # 1. 建立此次任務(wù)所需要的賬號(hào)數(shù)據(jù): [root@www ~]# mkdir /rhome [root@www ~]# useradd -u 2001 -d /rhome/cluser1 cluser1 [root@www ~]# useradd -u 2002 -d /rhome/cluser2 cluser2 [root@www ~]# useradd -u 2003 -d /rhome/cluser3 cluser3 [root@www ~]# echo password | passwd --stdin cluser1 [root@www ~]# echo password | passwd --stdin cluser2 [root@www ~]# echo password | passwd --stdin cluser3# 2. 修改 NISDOMAIN 的名稱 [root@www ~]# vim /etc/sysconfig/network NISDOMAIN=vbirdcluster <==重點(diǎn)在改這個(gè)項(xiàng)目喔! |
這個(gè)案例中,你只要做完上述的動(dòng)作就即將完成了,其他的配置文件請參考前面 14.2 節(jié)所談到的各個(gè)必要項(xiàng)目。 接下來當(dāng)然就是重新啟動(dòng) ypserv 以及制作數(shù)據(jù)庫啰!
| # 3. 制作數(shù)據(jù)庫以及重新啟動(dòng)所需要的服務(wù): [root@www ~]# nisdomainname vbirdcluster [root@www ~]# /etc/init.d/ypserv restart [root@www ~]# /etc/init.d/yppasswdd restart [root@www ~]# /usr/lib64/yp/ypinit -m |
依序一個(gè)一個(gè)指令下達(dá)!上述的這四個(gè)指令稍微有相依性關(guān)系的!所以不要錯(cuò)亂了順序喔!接下來,請換到客戶端進(jìn)行:
作法太簡單了,鳥哥這里就不示范啰。
-
NFS 服務(wù)器的設(shè)定
| # 1. 設(shè)定 NFS 服務(wù)器開放的資源: [root@www ~]# mkdir /cluster [root@www ~]# vim /etc/exports /rhome 192.168.100.0/24(rw,no_root_squash) /cluster 192.168.100.0/24(rw,no_root_squash)# 2. 重新啟動(dòng) NFS 啰: [root@www ~]# /etc/init.d/nfs restart [root@www ~]# showmount -e localhost Export list for localhost: /rhome 192.168.100.0/24 /cluster 192.168.100.0/24 |
服務(wù)器的設(shè)定是很單純的~客戶端的設(shè)定得要注意啰!
| # 1. 設(shè)定 NIS Client 的 mount 數(shù)據(jù)! [root@clientlinux ~]# mkdir /rhome /cluster [root@clientlinux ~]# mount -t nfs 192.168.100.254:/rhome /rhome [root@clientlinux ~]# mount -t nfs 192.168.100.254:/cluster /cluster # 如果上述兩個(gè)指令沒有問題,可以將他加入 /etc/rc.d/rc.local 當(dāng)中啊![root@clientlinux ~]# su - cluser1 [cluser1@clientlinux ~]$ |
最后你應(yīng)該就能夠在客戶端以 cluser1 登入系統(tǒng)!就這么簡單的將賬號(hào)與文件系統(tǒng)同步做完啦!如果你真的想要玩一下 PC Cluster 的話,鳥哥也有寫過一篇不是很成熟的 PC cluster 簡易架設(shè),有興趣的話請自行參考:
- http://linux.vbird.org/linux_server/0600cluster.php
14.5 重點(diǎn)回顧
- Network Information Service (NIS) 也可以稱為 Sun Yellow Pages (yp),主要是負(fù)責(zé)在網(wǎng)域當(dāng)中幫忙 NIS Client 端查尋賬號(hào)與密碼以及其他相關(guān)網(wǎng)絡(luò)參數(shù)的服務(wù);
- NIS server 其實(shí)就是提供本身的 /etc/passwd, /etc/shadow, /etc/group, /etc/hosts 等賬號(hào)密碼數(shù)據(jù),以及相關(guān)的網(wǎng)絡(luò)參數(shù)等,以提供網(wǎng)域當(dāng)中 NIS Client 的搜尋之用;
- NIS 為 server/client 架構(gòu),當(dāng) NIS client 有賬號(hào)登入需求時(shí),該主機(jī)會(huì) (1)先找自己的 /etc/passwd, (2)再前往 NIS server 搜尋相關(guān)賬號(hào)資料。
- NIS 使用的軟件就是 yp 這個(gè)軟件,主要分為兩部份, ypserv 用在 NIS Server,至于 ypbind 與 yp-tools 則用在 NIS Client 上面。
- 為加快 NIS 查詢的速度,因此 NIS server 會(huì)將本機(jī)的賬號(hào)數(shù)據(jù)制成傳輸較快的數(shù)據(jù)庫檔案, 并放置于 /var/yp/(nisdomainname)/ 目錄當(dāng)中;
- 不論是 NIS 或者是 NFS 都是藉由 RPC Server 所啟用的,因此都可以使用 rpcinfo 來查尋 NIS 是否已經(jīng)啟動(dòng),以及該 daemon 是否已經(jīng)向 portmapper (RPC server) 注冊了!
- 在 NIS Server 的設(shè)定當(dāng)中,最重要的一個(gè)步驟就是將賬號(hào)、密碼、網(wǎng)絡(luò)參數(shù)等 ASCII 格式檔案轉(zhuǎn)成數(shù)據(jù)庫檔案 (database file),以提供 NIS client 的查尋!而啟動(dòng) ASCII 轉(zhuǎn)成 database 的程序可以使用 /usr/lib64/yp/ypinit -m 或者到 /var/yp 底下執(zhí)行 make 均可。
- 由于 NIS 通常使用于內(nèi)部網(wǎng)域當(dāng)中,因此 /etc/hosts 這個(gè)檔案的設(shè)定相當(dāng)重要!
- 若想讓使用者在任一部 NIS 管轄的主機(jī)登入都可以使用同一份家目錄,則需開啟 NFS 提供 /home 給所有的主機(jī)掛載使用;
14.6 本章習(xí)題
- 請簡單說明 NIS server 的功能與工作流程 當(dāng)你有多部具有相同賬號(hào)的 Linux 主機(jī)時(shí),即可利用 NIS 所提供的服務(wù),來利用一部 NIS 主機(jī)掌控所有的 linux 主機(jī)的登入時(shí)所需查閱的賬號(hào)與密碼驗(yàn)證。流程如下:
- NIS Server 將自己系統(tǒng)內(nèi)的 /etc/passwd, /etc/group, /etc/hosts 等制作成為 DBM 的數(shù)據(jù)庫格式檔案;
- NIS Client 若有用戶登入的要求時(shí),會(huì)前往 NIS Server 搜尋數(shù)據(jù)庫里面的數(shù)據(jù)做為驗(yàn)證之用。
- 每次更動(dòng) NIS Server 上面的用戶數(shù)據(jù)時(shí),則 NIS Server 需要重新制作 DBM 數(shù)據(jù)庫檔案才行!
- 請簡單說明 NIS Server/client 的架構(gòu) NIS master/client 的特色為:
- NIS Server 的 master 先將自己的賬號(hào)、密碼相關(guān)檔案制作成為數(shù)據(jù)庫檔案(database file);
- NIS Server 的 master 將自己的數(shù)據(jù)庫檔案傳送到 slave 上面;
- NIS Server 的 slave 接收來自『信任的 NIS Server master 主機(jī)』的數(shù)據(jù)后,更新自己的數(shù)據(jù)庫,使自己的數(shù)據(jù)庫與 master 主機(jī)的數(shù)據(jù)同步;
- 網(wǎng)域當(dāng)中的所有 NIS Client 查尋 NIS Server 時(shí),會(huì)找尋『最先響應(yīng)的那一部 NIS 主機(jī)的數(shù)據(jù)庫內(nèi)容』。 也就是說,架設(shè) slave NIS server 可以分擔(dān)區(qū)域內(nèi) NIS 的工作!
- NIS 啟動(dòng)之前需要先啟動(dòng)那個(gè)服務(wù),否則就無法啟動(dòng)成功 (提示:RPC Server) 因?yàn)?NIS 是 RPC Server 的一種,所以必須要啟動(dòng) rpcbind 這個(gè) daemon 才行!
- 我的 NIS 域名為 bird ,另外,我主機(jī)的 IP 與主機(jī)名為 192.168.5.1/bird.nis.org ,請問要這些信息需要設(shè)定在 NIS Server 的哪些檔案之內(nèi)? 域名可以直接手動(dòng)下達(dá)『 nisdomainname bird 』也可以寫入 /etc/sysconfig/network 里面『NISDOMAIN=bird』; IP 與 主機(jī)名 需要寫入在 /etc/hosts 里面。
- /etc/nsswitch.conf 的功能為何?如果我想要讓密碼查尋先本地的密碼文件,再查尋 NIS ,需要如何設(shè)定? 該檔案的功能很多,在 DNS 方面,可以用來決定正、反解的順序,至于密碼則可以用來判斷何者為先!如果需要先查本機(jī)再查 NIS 的密碼時(shí),需要的參數(shù):
passwd: files nis
shadow: files nis - 如果我想要增加網(wǎng)域當(dāng)中一個(gè)新的賬號(hào):newaccount,并且這個(gè) newaccount 可以讓 NIS Client 查尋到他的賬號(hào)與密碼,需要進(jìn)行哪些步驟?
- 先登入 NIS Server 以 useradd newaccount 以及 passwd newaccount 來新增賬號(hào);
- 制作密碼數(shù)據(jù)庫:『/usr/lib64/yp/ypinit -m』
- 重新啟動(dòng):『/etc/rc.d/init.d/ypserv restart ; /etc/rc.d/init.d/yppasswdd restart』。
- 實(shí)作范例題:底下是我的網(wǎng)域參數(shù)特征:
network/netmask:192.168.1.0/255.255.255.0
NIS server : 192.168.1.100 (hostname: server.nis.test)
NIS cient: 192.168.1.200 (hostname: client1.nis.test)
NIS domain name: nis.test
利用上面的參數(shù)來設(shè)定 NIS 架構(gòu),請一步一步的寫下你的設(shè)定。 請自行參考本章節(jié)的內(nèi)容設(shè)定
14.7 參考數(shù)據(jù)與延伸閱讀
- Study Area 之 NIS 服務(wù)器架設(shè):http://www.study-area.org/linux/servers/linux_nfs.htm
- NIS 官方網(wǎng)站:http://www.linux-nis.org/
- NIS HOW-TO:http://www.linux-nis.org/nis-howto/HOWTO/index.html
總結(jié)
以上是生活随笔為你收集整理的鸟哥的Linux私房菜(服务器)- 第十四章、账号控管: NIS 服务器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸟哥的Linux私房菜(服务器)- 第十
- 下一篇: 鸟哥的Linux私房菜(服务器)- 第二