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