CentOS 6下配置NIS服務

介紹:
Linux下的NIS伺服器類似於Windows下的域控制器,用於Linux下的使用者資訊集中管理。
軟體安裝:
伺服器端:

[root@localhost ~]# yum install -y ypserv

客戶端:

[root@localhost ~]# yum install -y ypbind

配置檔案介紹:
伺服器端:

/etc/ypserv.conf                  //伺服器端主配置檔案

客戶端:

/etc/yp.conf                      //客戶端主配置文

務器端配置:
NIS透過域名來分辨不同的賬號密碼資料,因此需先指定NIS域名。
方法很簡單,如下。

[root@localhost ~]# vim /etc/sysconfig/network

新增一行

NISDOMAIN=nis.ibadboy.net

最終效果如下。

這裡囉嗦一下:看到網上很多文章都說要設定主機名,還要給主機名新增到/etc/hosts檔案中,做主機名和IP的對應。
不過,我使用CentOS 6.5版本親測,不另外設定主機名,不編輯/etc/hosts檔案,NIS伺服器也一樣能正常工作。但前提是,在/etc/ypserv.conf這個檔案中是以IP地址來限制客戶機而不是使用主機名,如果使用主機名則必須新增DNS解析或編輯/etc/hosts檔案,關於ypserv.conf檔案的配置下面馬上會介紹到。
另外,為了方便配置防火牆規則,我們也可以指定讓NIS伺服器每次都啟動在固定埠,否則NIS會動態使用埠。

[root@localhost ~]# vim /etc/sysconfig/network

新增一行。

YPSERV_ARGS="-p 1011"              //使NIS伺服器每次啟動都使用1011埠

新增後檔案內容如下:

編輯NIS伺服器端主配置檔案。

[root@localhost ~]# vim /etc/ypserv.conf

先來簡單看下配置檔案的內容再來說通常情況下如何配置。
轉到14行和17行可以看到如下兩個被紅框框起來的選項(因軟體版本號差異,行號可能不一樣,可在VIM中搜尋關鍵字來查詢),其中“dns”選項是定義是否使用DNS,一般情況下保持預設即可(我搞不懂為啥會有這個選項,感覺很白痴)。“files”選項是定義載入到記憶體中的資料庫個數(我不清楚這裡的資料庫是指的什麼,這一段摘錄自《鳥哥的Linux私房菜》),如果賬號多,可以調大。

轉到第25行左右,這裡定義是否將Master/Slave的同步更新的資料庫對比放置於小於1024的埠中,通常情況下保持預設即可。

接下來到重點了:配置允許訪問NIS伺服器的主機及主機的許可權,這也是通常情況下伺服器端主配置檔案中唯一需要修改的部分。
參照如下格式配置:

[主機名/IP]:[NIS域名]:[可用資料庫名稱]:[安全策略]          //可使用萬用字元
[主機名/IP] :直接填入允許訪問的主機名或使用網路地址/掩碼的形式,如 192.168.1.0/255.255.255.0。 
[NIS域名] :例如本案例中的“nis.ibadboy.net”。
[可用資料庫名稱]:就是由 NIS 製作出來的資料庫名稱。
[安全限制] :有三種,沒有限制(none)、僅能使用小於1024的埠(port)及拒絕(deny)。

例如:

192.168.1.0/255.255.255.0     :     nis.ibadboy.net      :     *      :       none

通常情況下,NIS伺服器都是應用在區域網,限制可以不用這麼嚴格,使用如下格式也可以。當然,你也可以按照自己的需求來設定。

*      :     *     :     *     :    none

轉到第38行左右,可以看到預設已經配置好了兩條規則,我們可以在這個基礎上稍作修改。

本例改成如下形式:

儲存退出後,在保證防火牆和selinux均關閉的情況下啟動ypserv(NIS主服務)及yppasswdd(用於支援客戶端修改NIS伺服器上的使用者密碼)服務。

[root@localhost ~]# service ypserv start
[root@localhost ~]# service yppasswddd start

再在伺服器端新增幾個使用者資訊,一會好在客戶端測試。

[root@localhost ~]# useradd user1
[root@localhost ~]# useradd user2
[root@localhost ~]# passwd user1
[root@localhost ~]# passwd user2

最後,編譯生成各種資料庫檔案來供客戶機查詢。

[root@localhost ~]# /usr/lib64/yp/ypinit -m

到這一步,按下“Ctrl + D”


這一步輸入y或者直接回車。

看到列印出如下字樣即是成功。

客戶端配置:
設定NIS域名,這裡注意,一定要和伺服器端是同樣的NIS域名,否則客戶端將無法繫結伺服器端。

[root@localhost ~]# vim /etc/sysconfig/network

本例中,新增“NISDOMAIN=nis.ibadboy.net”

編輯客戶端主配置檔案。

[root@localhost ~]# vim /etc/yp.conf

在其中新增伺服器端資訊,格式如下。
domain [NIS域名] server [NIS伺服器IP地址]
例如,本例中為:

domain nis.ibadboy.net server 192.168.1.20

新增後,效果如下。

儲存並重啟NIS客戶端。

[root@localhost ~]# service ypbind restart

如下,是成功了。

如果是這種呢,一眼就能看出是失敗了,那就要仔細檢查下是不是哪一步做錯了。

通常情況下,錯誤一般都是NIS域名不一致導致的,雖然客戶端和伺服器端的/etc/sysconfig/network中設定的NIS域名是一致的,但要注意的是,這裡的NIS域名並非實時生效,因此還需要使用“nisdomainname”命令來分別檢查伺服器端和客戶端當前的NIS域名,若發現有不符合的則使用“nisdomainname 接新NIS域名”來實時修改。
例如:

到這裡,雖然客戶端繫結伺服器端成功了,但我們依然不能在客戶端使用NIS伺服器中的使用者資訊,原因是還沒修改系統查詢使用者資訊服務的方式。
編輯/etc/nsswitch.conf(服務搜尋順序配置檔案)
在幾個主要的配置檔案的搜尋順序中都加入“nis”。注意,這裡把“nis”加到“files”後,是先搜尋本地配置檔案而後才搜尋nis伺服器。這就導致,如果本地和nis伺服器上存在相同的使用者,客戶端並不會使用nis伺服器上的使用者資料。可以透過將“nis”寫在“files”前來解決這個問題。
注意最後一行,hosts檔案的搜尋順序中加入了nis,這就是為什麼我們不寫hosts檔案,不做dns一樣可以正常使用nis伺服器的原因。

這樣,NIS客戶端就算配置完了。
執行yptest命令看是否能列出NIS伺服器端的賬號資訊。
在“Test 9: yp_all”這個測試結果中能看到NIS伺服器端的使用者資訊即算成功。
例如:

客戶端的配置,看似貌似很完美,但其實還是有點問題的,那就是需要PAM等認證的服務依然不會查詢NIS伺服器上的資訊,這些配置檔案我們手動修改實在是太麻煩了,可以使用“setup”工具來快速設定。
當然,如果沒有特殊需求,僅僅需要系統使用者身份認證資訊使用NIS伺服器上的資料那麼按照之前那樣簡單配置以下就可以滿足需求了。
若需要vsftpd虛擬使用者這種使用PAM做身份認證的服務也使用NIS伺服器,則就要使用“setup”工具來設定了,系統中沒有安裝“setup”工具可以參考此篇文章安裝。

CentOS 6安裝setup工具包


按照如下步驟走一遍即可,十分簡單。之後setup會幫你把所有需要修改的配置檔案全部修改一遍,換而言之,如果你使用setup工具來設定客戶端,那除了安裝ypbind軟體包之外,不需再手工編輯任何檔案。
注意,這裡特殊說明一下,我的setup工具是中文語言的,其中圖一的“驗證配置”對應的英文版是“authentication configuration”,不要選錯了哦。

One thought on “CentOS 6下配置NIS服務”

Leave a Reply to 小虎 Cancel reply

Your email address will not be published. Required fields are marked *

Captcha Code