E N D
14 • 帳號控管: NIS 伺服器 • 有沒有想過,如果我有十部 Linux 主機,這十部主機僅負責不同的功能,事實上,所有的主機帳號與對應的密碼都相同!那麼我是將帳號與密碼分別設定置在十部電腦上面,還是可以透過一部主機做為帳號管理的功能,然後其他的主機只要當用戶用登入時,就必須要到管理帳號的主機上面確認其帳號與密碼呢?哪一個比較方便而且靈活?當然是找一個帳號管理的主機比較方便的多啦!如果有使用者要修改密碼,不必要去到十部主機修改密碼啦!只要到主要管理主機去修改,其他的主機根本就不需要更動!哈哈!輕鬆又愉快呢!這個功能的達成有很多的方式,在這裡,我們介紹一個很簡單的方式,那就是 Network Information Service 這個 NIS 伺服器的架設啦! !
NIS 的由來與功能 • NIS 主要提供的是使用者的帳號、密碼、家目錄檔名、UID 等資訊,但 NIS 並沒有提供檔案系統。同時,NIS 同樣使用前一章談到的 RPC 伺服器,因此在本章開始前,你還是得要認識一下第十三章談到的 NFS 與 RPC,同時你還得要知道基礎學習篇第三版裡面的第十四章帳號管理,同時也得瞭解一下基礎學習篇第二十二章 make/Makefile的資訊才好。 • P.14-2 請參閱書籍
NIS 的主要功能:管理帳號資訊 • 事實上,Network Information Service 最早應該是稱為 Sun Yellow Pages (簡稱 yp),也就是 Sun 這家公司出的一個名為 Yellow Pages 的伺服器軟體,請注意,NIS 與 YP 是一模一樣的咚咚喔! • P.14-3 請參閱書籍
那麼 NIS 伺服器提供了哪些資訊呢?還記得帳號與密碼放置在哪裡吧?NIS 就是提供那些資料啦!主要有底下這些基本的資料提供給有登入需求的主機喔: • P.14-3 請參閱書籍
NIS 的運作流程:透過 RPC 服務 • 由於 NIS 伺服器主要是提供使用者登入的資訊給用戶端主機來查詢之用,所以,NIS 伺服器所提供的資料當然就需要用到傳輸與讀寫比較快速的 "資料庫" 檔案系統,而不是傳統的純文字資料。為了要達到這個目的,所以 NIS 伺服器就必須要將前一小節提到的那些檔案製作成為資料庫檔案,然後使用網路通訊協定讓用戶端主機來查詢囉。至於所使用的通訊協定與前一章的 NFS 相同,都使用遠端程序呼叫 (RPC) 這個玩意兒喔! • P.14-3 請參閱書籍
P.14-4 請參閱書籍
關於 NIS Server (master/slave) 的運作程序: 1. NIS Master 先將本身的帳號密碼相關檔案製作成為資料庫檔案; 2. NIS Master 可以主動的告知 NIS slave server 來更新; 3. NIS slave 亦可主動的前往 NIS master server 取得更新後的資料庫檔案; 4. 若有帳號密碼的異動時,需要重新製作 database 與重新同步化 master/slave。 • P.14-4 請參閱書籍
關於當 NIS Client 有任何登入查詢的需求時: 1. NIS client 若有登入需求時,會先查詢其本機的 /etc/passwd, /etc/shadow 等檔案; 2. 若在 NIS Client 本機找不到相關的帳號資料,才開始向整個 NIS 網域的主機廣播查詢; 3. 每部 NIS server (不論 master/slave) 都可以回應,基本上是『先回應者優先』。 • P.14-4 請參閱書籍
NIS Server 端的設定 • 所需要的軟體 • yp-tools :提供 NIS 相關的查尋指令功能 • ypbind:提供 NIS Client 端的設定軟體 • ypserv:提供 NIS Server 端的設定軟體 • rpcbind:就是 RPC 一定需要的資料啊! • P.14-5 請參閱書籍
NIS 伺服器相關的設定檔 • /etc/ypserv.conf:這是最主要的 ypserv軟體所提供的設定檔,可以規範 NIS 用戶端是否可登入的權限。 • /etc/hosts:由於 NIS server/client 會用到網路主機名稱與 IP 的對應,因此這個主機名稱對應檔就顯的相當重要!每一部主機名稱與 IP 都需要記錄才行! • /etc/sysconfig/network:可以在這個檔案內指定 NIS 的網域 (nisdomainname)。 • /var/yp/Makefile:前面不是說帳號資料要轉成資料庫檔嗎?這就是與建立資料庫有關的動作設定檔; • P.14-6 請參閱書籍
至於 NIS 伺服器提供的主要服務方面有底下兩個: • /usr/sbin/ypserv:就是 NIS 伺服器的主要提供服務; • /usr/sbin/rpc.yppasswdd:提供額外的 NIS 用戶端之使用者密碼修改服務,透過這個服務,NIS 用戶端可以直接修改在 NIS 伺服器上的密碼。相關的使用程式則是 yppasswd指令; • 與帳號密碼的資料庫有關的指令方面有底下幾個: • /usr/lib64/yp/ypinit:建立資料庫的指令,非常常用 (在 32 位元的系統下,檔名則是 /usr/lib/yp/ypinit喔!); • /usr/bin/yppasswd:與 NIS 用戶端有關,主要在讓用戶修改伺服器上的密碼。 • P.14-6 請參閱書籍
一個實作案例 • NIS 的網域名稱為 vbirdnis • 整個內部的信任網域為 192.168.100.0/24 • NIS master server 的 IP 為 192.168.100.254 ,主機名稱為 www.centos.vbird • NIS client 的 IP 為 192.168.100.10,主機名稱為 clientlinux.centos.vbir • P.14-7 請參閱書籍
1. 先設定 NIS 的網域名稱 (NIS domain name) • NIS 是會分領域名稱 (domain name) 來分辨不同的帳號密碼資料的,因此你必須要在伺服器與用戶端都指定相同的 NIS 領域名稱才行。設定這個 NIS 領域名稱的動作很簡單,就直接編輯 /etc/sysconfig/network 即可!如下所示: • P.14-7 請參閱書籍
2. 主要設定檔 /etc/ypserv.conf • P.14-7~8 請參閱書籍
3. 設定主機名稱與 IP 的對應 (/etc/hosts) • 在 /etc/ypserv.conf的設定當中我們談到 NIS 大部分是給區域網路內的主機使用的,所以當然就不需要 DNS 的設定了。不過,由於 NIS 使用到很多的主機名稱,但是網路連線透過的是 IP 啊!所以你一定要設定好 /etc/hosts 裡面的主機名稱與 IP 的對應,否則會無法成功連線 NIS!這個很重要,絕大部分的朋友無法達成 NIS server/client 的連線都是這裡出問題而已。 依據本案例的設定值,你應該這樣做: • P.14-8 請參閱書籍
4. 啟動與觀察所有相關的服務 • 為了也讓 yppasswdd啟動在固定的埠口,方便防火牆的管理,因此,我們也建議你可以設定一下 /etc/sysconfig/yppasswdd喔! • P.14-9 請參閱書籍
5. 處理帳號並建立資料庫 • P.14-10 請參閱書籍
如果是如下的錯誤,那可能是因為: • 你的 ypserv服務沒有順利啟動,請利用 rpcinfo檢查看看; • 你的主機名稱與 IP 沒有對應好,請檢查 /etc/hosts • P.14-11 請參閱書籍
防火牆設置 • 又來到了防火牆的規劃了!要注意的是,我們的 NIS 與 NFS 都是使用 RPC Server 的,所以囉,除了上述談到的固定埠口之外,你還得要開放 port 111 才行。假設你已經看過前一章,而且是使用鳥哥的 iptables.rule腳本來處理你的防火牆,那麼你可以修改該檔案的內容,新增幾條規則去: • P.14-12 請參閱書籍
NIS client 所需軟體與軟體結構 • NIS client 端所需要的軟體僅有: • ypbind • yp-tools • P.14-12 請參閱書籍
NIS client 的設定與啟動 • 很簡單,就利用 setup 這個指令即可! • P.14-13~14 請參閱書籍
NIS 搭配 NFS 的設定在叢集電腦上的應用 • 什麼是叢集電腦? • 因為個人電腦的 CPU 速度越來越快,核心數目越來越多,因此個人電腦的效能已經不比伺服器等級的大型電腦差了!不過,如果要用來作為計算大型數值模式的應用,即使是最快的個人電腦,還是沒有辦法有效的負荷的。此時你可能就得要考慮一下,是要買超級電腦 (Top 500) 還是要自己組一部 PC 叢集電腦 (PC cluster)。 • 超級電腦的結構中,主要是透過內部電路將好多顆 CPU 與記憶體連接在一塊,因為是特殊設計,因此價格非常昂貴。 如果我們可以將較便宜的個人電腦串接在一塊,然後將數值運算的任務分別丟給每一部串接在一塊的個人電腦,那不就很像超級電腦了嗎?沒錯!這就是 PC cluster 最早的想法。 • P.14-19 請參閱書籍
所以,在 PC cluster 上面的所有電腦就得要有: • 相同的使用者帳號資訊,包括帳號、密碼、家目錄等等一大堆資訊; • 相同的檔案系統,例如 /home, /var/spool/mail 以及數值程式放置的位置 • 可以搭配的平行化函式庫,常見的有 MPICH, PVM... • P.14-20 請參閱書籍
另一個不成材的實例 • 那我們有沒有辦法來實作一下平行化的叢集架構呢?老實說,很麻煩~不過,至少我們可以先完成前面談到的兩個元件!分別是 NIS 與 NFS 嘛!但是,在我們目前這個網路環境中,使用者帳號實在是太紊亂了~所以,如果想要將伺服器的 /home 掛載到用戶端的 /home,那麼那個測試用的用戶端可能很多本地用戶都無法登入了~因此,在這個測試練習中,我們打算這樣做: • • P.14-20 請參閱書籍
帳號:建立大於 2000 以上的帳號,帳號名稱為 cluser1, cluser2, cluser3 (將 cluster user 縮寫為 cluser,不是少寫一個 t 喔!),且這些帳號的家目錄預計放置於 /rhome目錄內,以與 NIS client 本地的用戶分開; • NIS 伺 服 器 : 領 域 名 稱 為 vbirdcluster, 伺 服 器 是 www.centos.vbird (192.168.100.254),用戶端是 clientlinux.centos.vbird (192.168.100.10); • NFS 伺服器:伺服器分享了 /rhome給 192.168.100.0/24 這個網域,且預計將所有程式放置於 /cluster 目錄中。 此外,假設所有用戶端都是很乾淨的系統,因此不需要壓縮用戶端 root 的身份。 • NFS 用戶端:將來自 server 的檔案系統都掛載到相同目錄名稱底下! • 那就分別來實作一下囉! • P.14-20 請參閱書籍