伺服器架設篇 - CentOS 5.x

第十四章、帳號控管:NIS 伺服器

Network Information Service, NIS 伺服器

最近更新時間: 2011/03/16

本文資料主要針對 CentOS 5.x 的系統進行說明,而 CentOS 5.x 已經在 2017 年 3 月份正式不再進行維護,事實上,在 2012 年底幾乎就不再維護了。 因此,建議您前往本站查詢最新版本的 Linux distribution 文章來閱讀,比較不會浪費時間。那為何還需要編輯 CentOS 5 的資料呢? 鳥哥只想要做個自己曾經撰寫過的文件內容保存而已囉! ^_^!最新文章請前往鳥站首頁查閱囉!
有沒有想過,如果我有十部 Linux 主機,這十部主機僅負責不同的功能,事實上,所有的主機帳號與對應的密碼都相同! 那麼我是將帳號與密碼分別設定置在十部電腦上面,還是可以透過一部主機做為帳號管理的功能,然後其他的主機只要當用戶用登入時, 就必須要到管理帳號的主機上面確認其帳號與密碼呢?哪一個比較方便而且靈活?當然是找一個帳號管理的主機比較方便的多啦! 如果有使用者要修改密碼,不必要去到十部主機修改密碼啦!只要到主要管理主機去修改,其他的主機根本就不需要更動! 哈哈!輕鬆又愉快呢!這個功能的達成有很多的方式,在這裡,我們介紹一個很簡單的方式,那就是 Network Information Service 這個 NIS 伺服器的架設啦!

14.1 NIS 的由來與功能

在一個大型的網域當中,如果有多部 Linux 主機,萬一要每部主機都需要設定相同的帳號與密碼時,你該怎麼辦?複製 /etc/passwd ?應該沒有這麼呆吧?如果能夠有一部帳號主控伺服器來管理網域中所有主機的帳號, 當其他的主機有使用者登入的需求時,才到這部主控伺服器上面要求相關的帳號、密碼等使用者資訊, 如此一來,如果想要增加、修改、刪除使用者資料,只要到這部主控伺服器上面處理即可, 這樣就能夠降低重複設定使用者帳號的步驟了。

這樣的功能有很多的伺服器軟體可以達成,這裡我們要介紹的則是 Network Information Services (NIS server) 這個伺服器軟體喔!底下就先來談一談這個 NIS 的相關功能吧!

Tips 鳥哥 NIS 主要提供的是使用者的帳號、密碼、家目錄檔名、UID等資訊,但 NIS 並沒有提供檔案系統。同時, NIS 同樣使用前一章談到的 RPC 伺服器,因此在本章開始前,你還是得要認識一下第十三章談到的 NFS 與 RPC, 同時你還得要知道基礎學習篇第三版裡面的第十四章帳號管理, 同時也得瞭解一下基礎學習篇第二十二章 make/Makefile 的資訊才好。

14.1.1 NIS 的主要功能:管理帳號資訊

通常我們都會建議,一部 Linux 主機的功能越單純越好,也就是說,一部 Linux 就專門進行一項服務。這樣有許多的好處,這包含功能單純所以系統資源得以完整運用, 並且在發生入侵或者是系統產生狀況的時候,也比較容易追查問題所在。因此,一個公司內部常常會有好幾部 Linux 主機,有的專門負責 WWW 、有的專門負責 Mail 、有的專門負責 SAMBA 等等的服務。

不過,這樣雖然有分散風險、容易追蹤問題的好處,但是,由於是同一個公司內的多部主機,所以事實上所有的 Linux 主機的帳號與密碼都是一樣的!哇!那如果公司裡面有 100 的人的話, 我們就需要針對這麼多部的主機去設定帳號密碼了!而且,如果未來還有新進員工的話, 那麼光是設定密碼就會使系統管理員抓狂了!

這個時候,讓我們換一個角度來思考:如果我設計了一部專門管理帳號與密碼的伺服器,而其他的 Linux 主機當有用戶端要登入的時候,就必須要到這部管理密碼的伺服器來查尋使用者的帳號與密碼, 如此一來,我要管理所有的 Linux 主機的帳號與密碼,只要到那部主要伺服器上面去進行設定即可! 包括新進人員的設定,反正其他的 Linux 主機都是向它查尋的嘛!沒錯!真是好~這個就是 Network Information Service, NIS 伺服器的主要功能啦!

事實上,Network Information Service 最早應該是稱為 Sun Yellow Pages (簡稱 yp),也就是 Sun 這家公司出的一個名為 Yellow Pages 的伺服器軟體,請注意, NIS 與 YP 是一模一樣的咚咚喔!這個 Yellow Pages 名字取的真是好!怎麼說呢?知道黃頁 (Yellow Pages) 是什麼嗎?就是我們家裡的電話簿啦! 今天如果你要查尋一家廠商的電話號碼,通常就是直接去查黃頁上面的紀錄來取得電話號碼啊!而這個 NIS 也一樣,當使用者要登入時, Linux 系統就會到 NIS 伺服器上面去找尋這個使用的帳號與密碼資訊來加以比對, 以提供使用者登入之用的檢驗啊!很棒吧! ^_^

那麼 NIS 伺服器提供了哪些資訊呢?還記得帳號與密碼放置在哪裡吧?NIS 就是提供那些資料啦! 主要有底下這些基本的資料提供給有登入需求的主機喔:

伺服器端檔案名稱檔案內容
/etc/passwd提供使用者帳號、UID、GID、家目錄所在、Shell 等等
/etc/group提供群組資料以及 GID 的對應,還有該群組的加入人員
/etc/hosts主機名稱與 IP 的對應,常用於 private IP 的主機名稱對應
/etc/services每一種服務 (daemons) 所對應的埠口 (port number)
/etc/protocols基礎的 TCP/IP 封包協定,如 TCP, UDP, ICMP 等
/etc/rpc每種 RPC 伺服器所對應的程式號碼
/var/yp/ypserversNIS 伺服器所提供的資料庫

至少可以提供上述這些功能,當然啦,你也可以自行定義哪些資料庫需要,哪些資料庫不需要!

14.1.2 NIS 的運作流程:透過 RPC 服務

由於 NIS 伺服器主要是提供使用者登入的資訊給用戶端主機來查詢之用,所以, NIS 伺服器所提供的資料當然就需要用到傳輸與讀寫比較快速的 "資料庫" 檔案系統, 而不是傳統的純文字資料。為了要達到這個目的,所以 NIS 伺服器就必須要將前一小節提到的那些檔案製作成為資料庫檔案, 然後使用網路通訊協定讓用戶端主機來查詢囉。至於所使用的通訊協定與前一章的 NFS 相同,都使用遠端程序呼叫 (RPC) 這個玩意兒喔!

此外,如果在一個很大型的網域裡面,萬一所有的 Linux 主機都向同一部 NIS 伺服器要求使用者資料時, 這部 NIS 伺服器的負載 (loading) 可能會過大。甚至如果考慮到資料使用的風險, 要是這單一的一部 NIS 伺服器掛點時,那其他的 Linux 主機還要不要讓 users 登入啊? 所以囉,在較為大型的企業環境當中, NIS 伺服器可以使用 master/slave (主控/次要伺服器) 架構的

Master NIS 伺服器提供系統管理者製作的資料庫, slave 則取得來自 master 的資料,並藉以提供其他用戶端的查詢。 用戶端可以向整個網域要求使用者資料的回應,master 與 slave 皆可回答, 由於 slave 的資料來自於 master ,所以使用者帳號資料本身是同步的! 如此一方面可以分散 NIS 伺服器的負載,而且也可以避免因 NIS 伺服器掛點而導致的無法登入的風險。

NIS 伺服器與用戶端的運作與查詢方式示意圖
圖 14.1-1、NIS 伺服器與用戶端的運作與查詢方式示意圖

整個 NIS 的運作就如同上圖,首先必須要有 NIS server 的存在,之後才會有 NIS Client 的存在。 那麼當使用者有登入的需求時,整個 NIS 的運作程序是:

  • 關於 NIS Server (master/slave) 的運作程序:
    1. NIS Master 先將本身的帳號密碼相關檔案製作成為資料庫檔案;
    2. NIS Master 可以主動的告知 NIS slave server 來更新;
    3. NIS slave 亦可主動的前往 NIS master server 取得更新後的資料庫檔案;
    4. 若有帳號密碼的異動時,需要重新製作 database 與重新同步化 master/slave。

  • 關於當 NIS Client 有任何登入查詢的需求時:
    1. NIS client 若有登入需求時,會先查詢其本機的 /etc/passwd, /etc/shadow 等檔案;
    2. 若在 NIS Client 本機找不到相關的帳號資料,才開始向整個 NIS 網域的主機廣播查詢;
    3. 每部 NIS server (不論 master/slave) 都可以回應,基本上是『先回應者優先』。

從上面的流程當中,你會發現 NIS client 還是會先針對本機的帳號資料進行查詢,若本機查不到時才到 NIS server 上頭尋找。因此,如果你的 NIS client 本身就有很多一般使用者的帳號時,那跟 NIS server 所提供的帳號就可能產生一定程度的差異囉!所以,一般來說,在這樣的環境下,NIS client 或 NIS slave server 會主動拿掉自己本機的一般使用者帳號,僅會保留系統所需要的 root 及系統帳號而已。 如此一來,一般使用者才都會經由 NIS master server 所控管啊! ^_^

根據上面圖 14.1-1 的說明,我們的 NIS 環境大致上需要設定的基本元件就有:

  • NIS Master server :將檔案建置成資料庫,並提供 slave server 來更新;
  • NIS Slave server :以 Master server 的資料庫作為本身的資料庫來源;
  • NIS client :向 master/server 要求登入者的驗證資料。

就如同上面提到的,在大型環境中才會使用到這麼複雜的 NIS master/slave 架構。因此,本章僅會介紹 NIS Master 的建置, 以及 NIS client 的設定而已。其實,NIS 服務使用的環境大概越來越僅局限在學術數值模式模擬的叢集電腦架構中 (PC cluster), 在那樣的架構中,老實說,鳥哥認為僅要學會 NIS master 即可。如果還有其他帳號方面的要求,例如跨平台的帳號資訊提供, 那可能就得要參考 Samba 或更進階的 LDAP 才好呦!這裡我們不談啦~現在,就讓我們開始來玩一玩這個 NIS 的設定吧!

14.2 NIS Server 端的設定

NIS 伺服器端主要在於提供資料庫給用戶端作為驗證之用,雖然 NIS 伺服器類型有 Master 與 Slave , 不過鳥哥這裡介紹的並不是大型企業環境,因此僅介紹 NIS master 的設定而已啦~那就來設定看看囉!

14.2.1 所需要的軟體

由於 NIS 伺服器需要使用 RPC 協定,且 NIS 伺服器同時也可以當成用戶端,因此它需要的軟體就有底下這幾個:

  • yp-tools :提供 NIS 相關的查尋指令功能
  • ypbind   :提供 NIS Client 端的設定軟體
  • ypserv   :提供 NIS Server 端的設定軟體
  • portmap  :就是 RPC 一定需要的資料啊!

如果你是使用 Red Hat 的系統,例如我們的 CentOS 5.x 的話,那你可以利用『 rpm -qa | grep '^yp' 』 來檢查是否有安裝上述的軟體。一般來說 yp-tools, ypbind 都會主動的安裝,不過 ypserv 可能就不會安裝了。 此時建議你直接使用『 yum install ypserv 』來安裝吧!立刻就裝好了。底下立刻來設定囉!

14.2.2 NIS 伺服器相關的設定檔

在 NIS 伺服器上最重要的就是 ypserv 這個軟體了,但是,由於 NIS 設定時還會使用到其他網路參數設定資料, 因此在設定檔方面需要有底下這些資料喔:

  • /etc/ypserv.conf:這是最主要的 ypserv 軟體所提供的設定檔,可以規範 NIS 用戶端是否可登入的權限。
  • /etc/hosts:由於 NIS server/client 會用到網路主機名稱與 IP 的對應,因此這個主機名稱對應檔就顯的相當重要!每一部主機名稱與 IP 都需要記錄才行!
  • /etc/sysconfig/network:可以在這個檔案內指定 NIS 的網域 (nisdomainname)。
  • /var/yp/Makefile:前面不是說帳號資料要轉成資料庫檔嗎? 這就是與建立資料庫有關的動作設定檔;

至於 NIS 伺服器提供的主要服務方面有底下兩個:

  • /usr/sbin/ypserv:就是 NIS 伺服器的主要提供服務;
  • /usr/sbin/rpc.yppasswdd:提供額外的 NIS 用戶端之使用者密碼修改服務, 透過這個服務, NIS 用戶端可以直接修改在 NIS 伺服器上的密碼。相關的使用程式則是 yppasswd 指令;

與帳號密碼的資料庫有關的指令方面有底下幾個:

  • /usr/lib/yp/ypinit:建立資料庫的指令,非常常用;
  • /usr/bin/yppasswd:與 NIS 用戶端有關,主要在讓用戶修改伺服器上的密碼。

14.2.3 一個實作案例

如果你有觀察過圖 14.1-1 的話,你會發現到我們的 NIS 需要設定 Master/Slave 及 client 等, 不過我們這裡僅介紹 NIS master server 與 NIS client 兩個元件而已,如果你有需要額外的 slave 的話, 再請查閱 NIS 官網的介紹囉。底下鳥哥先擬一個簡單的案例,做完案例我們再來談談實際可能會使用於叢集電腦的案例吧!

  • NIS 的網域名稱為 vbirdnis
  • 整個內部的信任網域為 192.168.100.0/24
  • NIS master server 的 IP 為 192.168.100.254 ,主機名稱為 www.centos.vbird
  • NIS client 的 IP 為 192.168.100.100,主機名稱為 client.centos.vbird

底下我們就一個一個來設定吧!

14.2.4 NIS server 的設定與啟動

NIS 伺服器的設定真是很簡單,首先,你必須要在 NIS 伺服器上面搞定你的帳號與密碼相關資料, 這包括 /etc/passwd, /etc/shadow, /etc/hosts, /etc/group .... 等等,都得要先搞定才行! 詳細的帳號相關資料請參考基礎篇的第十四章帳號管理。 等到搞定之後你就可以繼續 NIS 伺服器的設定了:


  • 1. 先設定 NIS 的網域名稱 (NIS domain name)

NIS 是會分領域名稱 (domain name) 來分辨不同的帳號密碼資料的,因此你必須要在伺服器與用戶端都指定相同的 NIS 領域名稱才行。設定這個 NIS 領域名稱的動作很簡單,就直接編輯 /etc/sysconfig/network 即可!如下所示:

[root@www ~]# vim /etc/sysconfig/network
# 不要更改其他既有資料,只要加入底下這一行即可:
NISDOMAIN=vbirdnis      <==設定 NIS 領域名稱
YPSERV_ARGS="-p 1011"   <==設定 NIS 每次都啟動在固定的埠口

當然,你也可以使用手動的方式暫時設定好你的 NIS 領域名稱,透過的方法就是 nisdomainname 這個指令。 (其實 nisdomainname 與 ypdomainname 及 domainname 都是一模一樣的指令啦!你只要記住一個指令名稱即可。請自行 man domainname 吧!)不過,這個指令現在大概只用來檢查設定是否正確,因為啟動 NIS 伺服器時,伺服器去捉取的資料就是從 network 這個檔案裡面捉取的!所以只要改這個設定檔即可啊!

另外,由於未來想使用 iptables 直接管理 NIS 的使用,因此我們想要控制 NIS 啟動在固定的埠口上。此時, 就使用『YPSERV_ARGS="-p 1011"』這個設定值來固定埠口在 1011 吧!


  • 2. 主要設定檔 /etc/ypserv.conf

這個設定檔就是 NIS 伺服器最主要的設定檔啦!內容其實很簡單,你可以保留預設值即可。不過,也可以作一些更動啦!

[root@www ~]# vim /etc/ypserv.conf
dns: no
# NIS 伺服器大多使用於內部區域網路,只要有 /etc/hosts 即可,不用 DNS 啦

files: 30
# 預設會有 30 個資料庫被讀入記憶體當中,其實我們的帳號檔案並不多,30 個夠用了。

slp: no
slp_timeout: 3600
# 這兩個與 SLP 服務有關,因為我們僅使用單純的 NIS ,所以不需要啟動。

xfr_check_port: yes
# 與 master/slave 有關,將同步更新的資料庫比對所使用的埠口,放置於 <1024 內。

# 底下則是設定限制用戶端或 slave server 查詢的權限,利用冒號隔成四部分:
# [主機名稱/IP] : [NIS網域名稱] : [可用資料庫名稱] : [安全限制]
# [主機名稱/IP]   :可以使用 network/netmask 如 192.168.100.0/255.255.255.0 
# [NIS網域名稱]   :例如本案例中的 vbirdnis
# [可用資料庫名稱]:就是由 NIS 製作出來的資料庫名稱;
# [安全限制]      :包括沒有限制 (none)、僅能使用 <1024 (port) 及拒絕 (deny)
# 一般來說,你可以依照我們的網域來設定成為底下的模樣:
127.0.0.0/255.255.255.0     : * : * : none
192.168.100.0/255.255.255.0 : * : * : none
*                           : * : * : deny
# 星號 (*) 代表任何資料都接受的意思。上面三行的意思是,開放 lo 內部介面、
# 開放內部 LAN 網域,且杜絕所有其他來源的 NIS 要求的意思。

# 還有一個簡單作法,你可以先將上面三行註解,然後加入底下這一行即可:
*                         : * : * : none

由於鳥哥習慣在內部網域並不設定比較嚴格的限制,因此通常鳥哥都是選擇使用『 * : * : * : none 』那個設定值! 然後透過 iptables 來管控可使用的來源就是了。當然,你可以依據你的需求來設定啦!


  • 3. 設定主機名稱與 IP 的對應 (/etc/hosts)

在 /etc/ypserv.conf 的設定當中我們談到 NIS 大部分是給區域網路內的主機使用的,所以當然就不需要 DNS 的設定了。不過,由於 NIS 使用到很多的主機名稱,但是網路連線透過的是 IP 啊!所以你一定要設定好 /etc/hosts 裡面的主機名稱與 IP 的對應,否則會無法成功連線 NIS !這個很重要,絕大部分的朋友無法達成 NIS server/client 的連線都是這裡出問題而已。 依據本案例的設定值,你應該這樣做:

[root@www ~]# vim /etc/hosts
# 原本就有的 localhost 與 127.0.0.1 之類的設定都不要更動,只要新增資料:
192.168.100.254   www.centos.vbird
192.168.100.100   client.centos.vbird

[root@www ~]# hostname
www.centos.vbird
# 再做個確認,確定輸出的主機名稱與本機 IP 確實有寫入 /etc/hosts 喔!

注意!如果你的主機名稱 (hostname) 與 NIS 的主機名稱不一樣,那麼在這個檔案當中還是需要將你的主機名稱給他設定進來! 否則在後面資料庫的設定時,肯定會發生問題。當然啦,你也可以直接在 /etc/sysconfig/network 當中直接重新設定主機名稱,然後重新開機,或者是利用 hostname 這個指令重新設定你的主機名稱也可以。


  • 4. 啟動與觀察所有相關的服務

接下來當然是先啟動所有相關的服務囉,這包括 RPC, ypserv 以及 yppasswdd 囉!不過,如果你的 RPC 本來就已經啟動的話,那就不要重新啟動 portmap 了!此外,為了也讓 yppasswdd 啟動在固定的埠口,方便防火牆的管理, 因此,我們也建議你可以設定一下 /etc/sysconfig/yppasswdd 喔!

[root@www ~]# vim /etc/sysconfig/yppasswdd
YPPASSWDD_ARGS="--port  1012"    <==找到這個設定值,修改一下內容成這樣!

[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 服務是 ypserv ,不過,如果要提供 NIS 用戶端的密碼修改功能的話, 最好還是得要啟動 yppasswdd 這個服務才好。在啟動完畢後,我們可以利用 rpcinfo 來檢查看看:

[root@www ~]# rpcinfo -p localhost
   程式採用的協定連接阜
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100004    2   udp   1011  ypserv
    100004    1   udp   1011  ypserv
    100004    2   tcp   1011  ypserv
    100004    1   tcp   1011  ypserv
    100009    1   udp   1012  yppasswdd
# 其他不相干的 RPC 鳥哥將它拿掉了,與 NIS 有關的至少要有上面這幾個!要仔細看,
# 看看埠口是否為我們規定的 1011, 1012 ,若不是的話,得要修改一下設定檔。

[root@www ~]# rpcinfo -u localhost ypserv
程式 100004 的第 1 版已經就緒並等待服務中
程式 100004 的第 2 版已經就緒並等待服務中

很多時候,很多朋友在設定完 NIS 後又回去設定 NFS 了,結果看了前一章的介紹,竟然又重新啟動 portmap , 這將導致 ypserv 的註冊資料被註銷掉。因此,使用上述的動作來檢查看看服務有沒有在等待中, 要看到如上的『就緒並等待服務』才會是正常的呦!


  • 5. 處理帳號並建立資料庫

在完成了上面的所有步驟後,接下來我們得要開始將主機上面的帳號檔案轉成資料庫檔案啦! 不過,因為擔心與 NIS 用戶端的帳號有衝突,加上之前我們已經建立過一些帳號了。所以,這裡我們建立三個新帳號, 分別是 nisuser1, nisuser2, nisuser3 。不過帳號主要是依據 UID 來判斷的啊!因此,我們使用大於 1000 的 UID 來建立這三個帳號喔!

[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

接下來,將建立的帳密資料轉成資料庫吧!轉換的動作直接透過 /usr/lib/yp/ypinit 這個指令來處理即可!整個步驟是這樣做的:

[root@www ~]# /usr/lib/yp/ypinit -m

At 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  <==系統根據主機名稱自動捉取
        next host to add:                    <==這個地方按下 [crtl]-d
The current list of NIS servers looks like this:

www.centos.vbird

Is 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.

要注意出現的資訊當中,在告知你可以直接輸入 [ctrl]-d 以結束的那個地方, 你的主機名稱會主動的被捉出來,注意!這個主機名稱務必需要在 /etc/hosts 可以被找到 IP 的對應, 否則會出現問題。另外,萬一在執行 ypinit -m 時,出現如下的錯誤,那肯定就是有些資料沒有被建立了!

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/lib/yp/ypinit -m
# 然後再重新執行一次即可!

如果是如下的錯誤,那可能是因為:

  • 你的 ypserv 服務沒有順利啟動,請利用 rpcinfo 檢查看看;
  • 你的主機名稱與 IP 沒有對應好,請檢查 /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...
....(底下省略)....

要注意啊,如果你的使用者密碼有變動過,那麼你就得要重新製作資料庫,重新啟動 ypserv 及 yppasswdd 喔! 注意注意啊!整個 NIS 伺服器這樣就給搞定了,有沒有很簡單啊!

14.2.5 防火牆設置

又來到了防火牆的規劃了!要注意的是,我們的 NIS 與 NFS 都是使用 RPC Server 的,所以囉,除了上述談到的固定埠口之外, 你還得要開放 port 111 才行。假設你已經看過前一章,而且是使用鳥哥的 iptables.rule 腳本來處理你的防火牆, 那麼你可以修改該檔案的內容,新增幾條規則去:

[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
# 千萬記得要重新建置防火牆規則啊!

14.3 NIS Client 端的設定

我們知道網路連線是雙向的,所以 NIS server 提供資料庫檔案,NIS client 當然也需要提供一些連線的軟體囉!這個連線的軟體就是 ypbind 啦!此外,如同圖 14.1-1 的介紹,在 NIS client 端有登入需求時,NIS client 基本上還是先搜尋自己的 /etc/passwd, /etc/group 等資料後才再去找 NIS server 的資料庫啊!所以 NIS client 最好能夠將本身的帳號密碼刪除到僅剩下系統帳號,亦即 UID, GID 均小於 500 以下的帳號即可, 如此一來既可讓系統執行無誤,也能夠讓登入者的資訊完全來自 NIS server ,比較單純啦!

Tips 鳥哥 事實上,你想要讓 NIS 伺服器寫入的各項帳號資料都在 NIS server 的 /var/yp/Makefile 那個檔案設定的! 你可以進入該檔案搜尋一下 UID 就知道了! ^_^

14.3.1 NIS client 所需軟體與軟體結構

NIS client 端所需要的軟體僅有:

  • ypbind
  • yp-tools

yp-tools 是提供查詢的軟體,至於 ypbind 則是與 ypserv 互相溝通的用戶端連線軟體啦! 另外,在 CentOS 當中我們還有很多設定檔是與認證有關的,包含 ypbind 的設定檔時, 在設定 NIS client 你可能需要動到底下的檔案:

  • /etc/sysconfig/network:就是 NIS 的領域名稱嘛!
  • /etc/hosts:至少需要有各個 NIS 伺服器的 IP 與主機名對應;
  • /etc/yp.conf:這個則是 ypbind 的主要設定檔,裡面主要設定 NIS 伺服器所在
  • /etc/sysconfig/authconfig:規範帳號登入時的允許認證機制;
  • /etc/pam.d/system-auth :這個最容易忘記!因為帳號通常由 PAM 模組所管理, 所以你必須要在 PAM 模組內加入 NIS 的支援才行!
  • /etc/nsswitch.conf :這個檔案可以規範帳號密碼與相關資訊的查詢順序,預設是先找 /etc/passwd 再找 NIS 資料庫;

另外, NIS 還提供了幾個有趣的程式給 NIS 用戶端來進行帳號相關參數的修改,例如密碼、shell 等等, 主要有底下這幾個指令:

  • /usr/bin/yppasswd :更改你在 NIS database (NIS Server 所製作的資料庫) 的密碼
  • /usr/bin/ypchsh   :同上,但是是更改 shell
  • /usr/bin/ypchfn   :同上,但是是更改一些使用者的訊息!

OK!那麼底下就讓我們開始來設定 NIS 用戶端吧!^_^

14.3.2 NIS client 的設定與啟動

啟動 NIS client 的設定就簡單多了!最主要是加入 NIS domain 當中,然後再啟動 ypbind 即可。 雖然你可以手動去修改所有的設定檔,然而近期以來的 Linux distributions 帳號處理機制越來越複雜, 所以如果你想要手動修改所有設定檔,恐怕會瘋掉的~因此,這裡建議你使用系統提供的工具來設定, 至於一些重要設定檔,最後有機會再去參考一下即可。

那麼 CentOS 5.x 提供了什麼好用的管理工具呢?很簡單,就利用 setup 這個指令即可!輸入 setup 就會出現如下的圖示, 然後依序這麼處理就好了呦!

利用 setup 進入 authconfig 認證項目
圖 14.3-1、利用 setup 進入 authconfig 認證項目

記得在出現上圖 14.3-1 後,選擇認證設定,如果是出現英文的話,那麼你就得要選擇『Authentication configuration』的項目,之後就會進入下面的畫面:

進入 authconfig 之後,選擇 NIS 項目
圖 14.3-2、進入 authconfig 之後,選擇 NIS 項目

因為我們要用 NIS 作為登入者身份驗證的機制,因此就得要選擇 NIS 項目,如果是英文的話,得要選擇『Use NIS』項目即可。

填寫 NIS 領域以及 NIS 伺服器的 IP 即可
圖 14.3-3、填寫 NIS 領域以及 NIS 伺服器的 IP 即可

最後再填寫 NIS 網域 (Domain) 以及 NIS 伺服器的 IP (Server),按下確定即可。如果系統很快的就跳回圖 14.3-1 的畫面, 代表你的設定理論上是沒有問題的。如果一直卡在如下的畫面中:

正在停止 portmap:                                          [  確定  ]
正在啟動 portmap:                                          [  確定  ]
開啟 allow_ypbind SELinux 布林值
正在繫結到 NIS 網域:                                       [  確定  ]
正在傾聽 NIS 網域伺服器的回應。....<==這裡一直卡住,沒辦法結束

上述的資料就是出問題啦!那代表你的 NIS client 沒有辦法連接上 NIS server ,最常發生的,就是伺服器的防火牆忘記放行, 或者是你用戶端輸入伺服器 IP 時,打錯數字了~那也是很常發生的錯誤啦!這時請自行去修改一番吧! 那麼這個 setup 到底做了什麼修改呢?我們也來看看幾個被改掉的重要設定檔吧:

[root@client ~]# cat /etc/sysconfig/network
NETWORKING_IPV6=no
HOSTNAME=client.centos.vbird
NETWORKING=yes
NISDOMAIN=vbirdnis    <==這個玩意兒會主動的被建立起來

[root@client ~]# cat /etc/yp.conf
....(前面省略)....
domain vbirdnis server 192.168.100.254  <==主動建立這玩意兒~

[root@client ~]# vim /etc/nsswitch.conf
passwd:     files nis
shadow:     files nis
group:      files nis
hosts:      files nis dns
# 上面幾個項目是比較重要的,包括身份參數、密碼、群組名、主機名與 IP 對應資料等。
# 你會看到,每個項目後面都會接著 nis ,所以 nis 有被支援囉!

因為更動到的檔案實在太多了,所以鳥哥還是建議使用 setup 來調整即可。但是,如果你真的想要手動處理的話, 那麼你必須要手動的修改底下這些檔案:

  • /etc/sysconfig/network (加入 NISDOMAIN 項目)
  • /etc/nsswitch.conf (修改許多主機驗證功能的順序)
  • /etc/sysconfig/authconfig (CentOS 的認證機制)
  • /etc/pam.d/system-auth (許多登入所需要的 PAM 認證過程)
  • /etc/yp.conf (亦即是 ypbind 的設定檔)

14.3.3 NIS client 端的檢驗: yptest, ypwhich, ypcat

如何確定 NIS client 已經連上 NIS server 呢?基本上,只要剛剛使用 setup 去設定時,最後的步驟並沒有被卡住, 那應該就是順利成功啦!該步驟會自動啟動 portmap 與 ypbind 兩個服務呦!那如何確認資料傳送是正確的? 簡單的要命啊!你可以利用 id 這個指令直接檢查 NIS server 有的,但是 NIS client 沒有的帳號,如果有出現該帳號的相關 UID/GID 資訊時,那表示資料傳輸也是正確的。 除此之外,我們還可以透過 NIS 提供的相關檢驗功能來檢查喔!底下分別來瞧一瞧:


  • 利用 yptest 檢驗資料庫之測試:

直接在 NIS client 輸入 yptest 即可檢查相關的測試資料,如下所示:

[root@client ~]# yptest
Test 1: domainname
Configured domainname is "vbirdnis"

Test 2: ypbind
Used NIS server: www

Test 3: yp_match
WARNING: 在對映表中沒有此一鍵值 (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

從這個測試當中我們可以發現一些錯誤,就是在 Test 3 出現的那個警告資訊啦。還好,那只是說沒有該資料庫而已~ 該錯誤是可以忽略的。重點在第 9 個步驟 yp_all 必須要有列出你 NIS server 上頭的所有帳號資訊,如果有出現帳號相關資料的話,那麼應該就算驗證成功了

Tips 鳥哥 比較有問題的是第三步驟,他會出現在 passwd.byname 當中找不到 nobody 的字樣。這是因為早期的 nobody 之 UID 都設定在 65534 ,但 CentOS 則將 nobody 設定為系統帳號的 99 ,所以當然不會被記錄,也就出現這一個警告。不過,這個錯誤是可忽略的啦!

  • 利用 ypwhich 檢驗資料庫數量

單純使用 ypwhich 的時候顯示的是『NIS Client 的 domain』名稱,而當加入 -x 這個參數時, 則是顯示『NIS Client 與 Server 之間溝通的資料庫有哪些?』你可以這樣測試哩!

[root@client ~]# ypwhich -x
Use "hosts"     for map "hosts.byname"
Use "group"     for map "group.byname"
Use "passwd"    for map "passwd.byname"
....(以下省略)....

由上面我們可以很清楚的就看到相關的檔案啦!這些資料庫檔案則是放置在我的 NIS Server 的 /var/yp/vbirdnis/* 裡面囉!


  • 利用 ypcat 讀取資料庫內容

除了 yptest 之外,你還可以直接利用 ypcat 讀取資料庫的內容喔!一般作法是這樣:

[root@client ~]# ypcat [-h nisserver] [資料庫名稱]
選項與參數:
-h nisserver :如果有設定的話,指向某一部特定的 NIS 伺服器,
               如果沒有指定的話,就以 ypbind 之設定為主;
資料庫名稱:亦即在 /var/yp/vbirdnis/ 內的檔名啊!例如 passwd.byname

# 讀出 passwd.byname 的資料庫內容
[root@client ~]# ypcat passwd.byname

這三個指令在進行 NIS Client 端的檢驗時,是相當有用的喔!不要忽略了他的存在啊!尤其是剛架設好 NIS Client 時,一定要使用 yptest 去檢查看看有沒有設定錯誤喔!根據螢幕顯示的訊息去一個一個校正錯誤才行啊!

14.3.4 使用者參數修改: yppasswd, ypchfn, ypchsh

好了,完成了上述的設定後,你的 NIS server/client 的帳號已經同步了!真是高興不是嗎? 不過,還有個挺大的問題,那就是...使用者如何在 NIS client 修改他自己的登入參數,例如密碼、shell 等等? 因為 NIS client 是藉由資料庫來取得使用者的帳號密碼,那如何在 NIS 用戶端處理帳號密碼的訂正?

問的好!這也是為何我們需要在 NIS server 啟動 yppasswdd 這支服務的主要用意! 因為 yppasswdd 可以接收 NIS client 端傳來的密碼修改,藉此而處理 NIS server 的 /etc/passwd, /etc/shadow , 然後 yppasswdd 還能夠重建密碼資料庫,讓 NIS server 同步更新資料庫!真是很不錯啊! ^_^

那該如何下達指令呢?很簡單啊!透過 yppasswd, ypchsh, ypchfn 來處理即可。這三個指令的對應是:

  • yppasswd :與 passwd 指令相同功能;
  • ypchfn :與 chfn 相同功能;
  • ypchsh :與 chsh 相同功能。

因為功能相當,所以鳥哥這裡僅說明一下 yppasswd 而已。假設你已經登入 NIS client 那部主機, 並且是以 nisuser1 這個使用者登入的,記住,這個使用者相關資料僅在 NIS server 上。 接下來,這個使用者可以下達 yppasswd ,如下所示:

[root@client ~]# grep nisuser /etc/passwd  <==不會出現任何訊息,因為無此帳號
[root@client ~]# su - nisuser1             <==直接切換身份看看!
su: warning: cannot change directory to /home/nisuser1: 沒有此一檔案或目錄
-bash-3.2$ id
uid=1001(nisuser1) gid=1001(nisuser1) groups=1001(nisuser1) 
# 因為我們 client.centos.vbird 僅有帳號資訊,並沒有使用者家目錄,
# 所以就會出現如上的警告,因此才需要用 id 驗證,並且需要加掛 NFS 嘛!
# 仔細看,現在的身份確實是 nisuser1 喔!確實有連上 NIS server 啦!

-bash-3.2$ 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-3.2$ exit

嘿嘿!如何,這樣就更新了 NIS server 上頭的 /etc/shadow 以及 /var/yp/vbirdnis/passwd.by* 的資料庫, 簡單吧!一下子就同步化了。不過,如果要教育使用者使用 yppasswd 的話,他可能不太能適應, 不要緊,你可以透過修改 alias 或者是置換掉 /usr/bin/passwd 這支程式即可!那現在讓我們回到 NIS 伺服器端看看真的有更動到資料庫嗎?

[root@www ~]# ll /var/yp/vbirdnis/
-rw------- 1 root root   12675  3月 16 14:34 group.bygid
-rw------- 1 root root   12735  3月 16 14:34 group.byname
....(中間省略)....
-rw------- 1 root root   13258  3月 16 17:09 passwd.byname
-rw------- 1 root root   13205  3月 16 17:09 passwd.byuid
# 仔細看,就是那個密碼檔案被更動過~時間已經不一樣了!再看看登錄檔吧!

[root@www ~]# tail /var/log/messages
Mar 16 17:09:59 www rpc.yppasswdd[17129]: update nisuser1 (uid=1001) from host 
192.168.100.100 successful.

最終從登錄檔裡面,我們也能夠得到相關的記錄!這樣就非常完美啦! ^_^

14.4 NIS 搭配 NFS 的設定在叢集電腦上的應用

剛剛在 NIS 用戶端的 nisuser1 登入測試中,你應該已經發現了一件事,那就是怎麼 nisuser1 沒有家目錄啊?這很正常啊!因為 nisuser1 的家目錄是在伺服器端的 /home 上頭,而你在用戶端登入時, 在用戶端的 /home 底下根本不可能有 nisuser1 的家目錄嘛!那怎辦?很簡單,將伺服器端的 /home 掛載到用戶端上面即可啊! 那這個觀念跟叢集電腦有啥關係啊?就讓我們來談談吧!


  • 什麼是叢集電腦?

因為個人電腦的 CPU 速度越來越快,核心數目越來越多,因此個人電腦的效能已經不比伺服器等級的大型電腦差了! 不過,如果要用來作為計算大型數值模式的應用,即使是最快的個人電腦,還是沒有辦法有效的負荷的。此時你可能就得要考慮一下, 是要買超級電腦 (Top 500) 還是要自己組一部 PC 叢集電腦 (PC cluster)。

超級電腦的結構中,主要是透過內部電路將好多顆 CPU 與記憶體連接在一塊,因為是特殊設計,因此價格非常昂貴。 如果我們可以將較便宜的個人電腦串接在一塊,然後將數值運算的任務分別丟給每一部串接在一塊的個人電腦, 那不就很像超級電腦了嗎?沒錯!這就是 PC cluster 最早的想法。

但是這個作法當中有幾個限制喔,因為每部電腦都需要運算相同的程式,而我們知道運算的資料都在記憶體當中, 而程序啟動時需要給予一個身份,而程序讀取的程式在每部電腦上面都需要是相同的!同時,每部電腦都需要支援平行化運算! 所以,在 PC cluster 上面的所有電腦就得要有:

  • 相同的使用者帳號資訊,包括帳號、密碼、家目錄等等一大堆資訊;
  • 相同的檔案系統,例如 /home, /var/spool/mail 以及數值程式放置的位置
  • 可以搭配的平行化函式庫,常見的有 MPICH, PVM...

上面的三個項目中,第一個項目我們可以透過 NIS 來處理,第二個項目則可以使用 NFS 來搞定~所以囉,你說, NIS 與 NFS 有沒有可使用的空間啊? ^_^

Tips 鳥哥 由於『預測』這個玩意兒越來越重要,比如說氣象預報、空氣品質預報等等,而預測需要一個很龐大的模式來進行模擬的工作, 這麼龐大的模擬工作需要大量的運算,在學校單位要買一部很貴的大型主機實在很不容易!不過,如果能夠串接十部四核心的個人電腦的話, 那麼可能只需要不到 20 萬便能夠組成相當於具有 40 顆 CPU 的大型主機的運算能力了!所以說,在未來 PC cluster 是一個可以發展的課題喔!

  • 另一個不成材的實例

那我們有沒有辦法來實作一下平行化的叢集架構呢?老實說,很麻煩~不過,至少我們可以先完成前面談到的兩個元件! 分別是 NIS 與 NFS 嘛!但是,在我們目前這個網路環境中,使用者帳號實在是太紊亂了~所以,如果想要將伺服器的 /home 掛載到用戶端的 /home,那麼那個測試用的用戶端可能很多本地用戶都無法登入了~因此,在這個測試練習中, 我們打算這樣做:

  • 帳號:建立大於 2000 以上的帳號,帳號名稱為 cluser1, cluser2, cluser3 (將 cluster user 縮寫為 cluser,不是少寫一個 t 喔!),且這些帳號的家目錄預計放置於 /rhome 目錄內,以與 NIS client 本地的用戶分開;
  • NIS 伺服器:領域名稱為 vbirdcluster,伺服器是 www.centos.vbird (192.168.100.254),用戶端是 client.centos.vbird (192.168.100.100);
  • NFS 伺服器:伺服器分享了 /rhome 給 192.168.100.0/24 這個網域,且預計將所有程式放置於 /cluster 目錄中。 此外,假設所有用戶端都是很乾淨的系統,因此不需要壓縮用戶端 root 的身份。
  • NFS 用戶端:將來自 server 的檔案系統都掛載到相同目錄名稱底下!

那就分別來實作一下囉!


  • NIS 實作階段
# 1. 建立此次任務所需要的帳號資料:
[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  <==重點在改這個項目喔!

這個案例中,你只要做完上述的動作就即將完成了,其他的設定檔請參考前面 14.2 節所談到的各個必要項目。 接下來當然就是重新啟動 ypserv 以及製作資料庫囉!

# 3. 製作資料庫以及重新啟動所需要的服務:
[root@www ~]# nisdomainname vbirdcluster
[root@www ~]# /etc/init.d/ypserv restart
[root@www ~]# /etc/init.d/yppasswdd restart
[root@www ~]# /usr/lib/yp/ypinit -m

依序一個一個指令下達!上述的這四個指令稍微有相依性關係的!所以不要錯亂了順序喔!接下來,請換到用戶端進行:

  1. 以 setup 進行 NIS 的設定,在領域的部分請轉為 vbirdcluster 才對!
  2. 做完後再以 id cluser1 確認看看。

作法太簡單了,鳥哥這裡就不示範囉。


  • NFS 伺服器的設定
# 1. 設定 NFS 伺服器開放的資源:
[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. 重新啟動 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

伺服器的設定是很單純的~用戶端的設定得要注意囉!

# 1. 設定 NIS Client 的 mount 資料!
[root@client ~]# mkdir /rhome /cluster
[root@client ~]# mount -t nfs 192.168.100.254:/rhome   /rhome
[root@client ~]# mount -t nfs 192.168.100.254:/cluster /cluster
# 如果上述兩個指令沒有問題,可以將他加入 /etc/rc.d/rc.local 當中啊!

[root@client ~]# su - cluser1
[cluser1@client ~]$ 

最後你應該就能夠在用戶端以 cluser1 登入系統!就這麼簡單的將帳號與檔案系統同步做完啦!如果你真的想要玩一下 PC Cluster 的話,鳥哥也有寫過一篇不是很成熟的 PC cluster 簡易架設,有興趣的話請自行參考:

14.5 重點回顧

  • Network Information Service (NIS) 也可以稱為 Sun Yellow Pages (yp),主要是負責在網域當中幫忙 NIS Client 端查尋帳號與密碼以及其他相關網路參數的服務;
  • NIS server 其實就是提供本身的 /etc/passwd, /etc/shadow, /etc/group, /etc/hosts 等帳號密碼資料,以及相關的網路參數等,以提供網域當中 NIS Client 的搜尋之用;
  • NIS 為 server/client 架構,當 NIS client 有帳號登入需求時,該主機會 (1)先找自己的 /etc/passwd, (2)再前往 NIS server 搜尋相關帳號資料。
  • NIS 使用的軟體就是 yp 這個軟體,主要分為兩部份, ypserv 用在 NIS Server,至於 ypbind 與 yp-tools 則用在 NIS Client 上面。
  • 為加快 NIS 查詢的速度,因此 NIS server 會將本機的帳號資料製成傳輸較快的資料庫檔案, 並放置於 /var/yp/(nisdomainname)/ 目錄當中;
  • 不論是 NIS 或者是 NFS 都是藉由 RPC Server 所啟用的,因此都可以使用 rpcinfo 來查尋 NIS 是否已經啟動,以及該 daemon 是否已經向 portmapper (RPC server) 註冊了!
  • 在 NIS Server 的設定當中,最重要的一個步驟就是將帳號、密碼、網路參數等 ASCII 格式檔案轉成資料庫檔案 (database file),以提供 NIS client 的查尋!而啟動 ASCII 轉成 database 的程式可以使用 /usr/lib/yp/ypinit -m 或者到 /var/yp 底下執行 make 均可。
  • 由於 NIS 通常使用於內部網域當中,因此 /etc/hosts 這個檔案的設定相當重要!
  • 若想讓使用者在任一部 NIS 管轄的主機登入都可以使用同一份家目錄,則需開啟 NFS 提供 /home 給所有的主機掛載使用;

14.6 本章習題

  • 請簡單說明 NIS server 的功能與工作流程
    當你有多部具有相同帳號的 Linux 主機時,即可利用 NIS 所提供的服務,來利用一部 NIS 主機掌控所有的 linux 主機的登入時所需查閱的帳號與密碼驗證。流程如下:
    1. NIS Server 將自己系統內的 /etc/passwd, /etc/group, /etc/hosts 等製作成為 DBM 的資料庫格式檔案;
    2. NIS Client 若有用戶登入的要求時,會前往 NIS Server 搜尋資料庫裡面的資料做為驗證之用。
    3. 每次更動 NIS Server 上面的用戶資料時,則 NIS Server 需要重新製作 DBM 資料庫檔案才行!
  • 請簡單說明 NIS Server/client 的架構
    NIS master/client 的特色為:
    1. NIS Server 的 master 先將自己的帳號、密碼相關檔案製作成為資料庫檔案(database file);
    2. NIS Server 的 master 將自己的資料庫檔案傳送到 slave 上面;
    3. NIS Server 的 slave 接收來自『信任的 NIS Server master 主機』的資料後,更新自己的資料庫,使自己的資料庫與 master 主機的資料同步;
    4. 網域當中的所有 NIS Client 查尋 NIS Server 時,會找尋『最先回應的那一部 NIS 主機的資料庫內容』。
    也就是說,架設 slave NIS server 可以分擔區域內 NIS 的工作!
  • NIS 啟動之前需要先啟動那個服務,否則就無法啟動成功 (提示:RPC Server)
    因為 NIS 是 RPC Server 的一種,所以必須要啟動 portmap 這個 daemon 才行!
  • 我的 NIS 網域名稱為 bird ,另外,我主機的 IP 與主機名稱為 192.168.5.1/bird.nis.org ,請問要這些資訊需要設定在 NIS Server 的哪些檔案之內?
    網域名稱可以直接手動下達『 nisdomainname bird 』也可以寫入 /etc/sysconfig/network 裡面『NISDOMAIN=bird』; IP 與 主機名稱 需要寫入在 /etc/hosts 裡面。
  • /etc/nsswitch.conf 的功能為何?如果我想要讓密碼查尋先本地的密碼檔,再查尋 NIS ,需要如何設定?
    該檔案的功能很多,在 DNS 方面,可以用來決定正、反解的順序,至於密碼則可以用來判斷何者為先!如果需要先查本機再查 NIS 的密碼時,需要的參數:
    passwd: files nis
    shadow: files nis
  • NIS Server 將密碼等檔案做成資料庫以提供 NIS client 來查尋,那麼請問使用什麼動作後,可以將密碼檔案轉成 NIS 的資料庫格式檔案?
    /usr/lib/yp/ypinit -m
  • 如果我想要增加網域當中一個新的帳號:newaccount,並且這個 newaccount 可以讓 NIS Client 查尋到他的帳號與密碼,需要進行哪些步驟?
    1. 先登入 NIS Server 以 useradd newaccount 以及 passwd newaccount 來新增帳號;
    2. 製作密碼資料庫:『/usr/lib/yp/ypinit -m』
    3. 重新啟動:『/etc/rc.d/init.d/ypserv restart ; /etc/rc.d/init.d/yppasswdd restart』。
  • 實作範例題:底下是我的網域參數特徵:
    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
    利用上面的參數來設定 NIS 架構,請一步一步的寫下你的設定。
    請自行參考本章節的內容設定

14.7 參考資料與延伸閱讀

修改歷史:
2003/05/06:第一次完成日期!
2003/09/16:稍微加入一些資訊與微幅修改版面!
2006/09/22:將舊的文章移動到 此處
2006/10/11:啊!過了好久了!修改過程當中歷經搬家,所以文章產生較慢啊!這次多加入 NIS slave server 說!
2011/03/13:將舊的基於 CentOS 4.x 的版本移動到 此處
2011/03/16:因為 NIS 快要被 LDAP 取代,所以將比較複雜的 slave 部分刪去了~
其他連結
環境工程模式篇
鳥園討論區
鳥哥舊站

今日 人數統計
昨日 人數統計
本月 人數統計
上月 人數統計