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