Nis服務器主從安裝配置

一、Nis服務器作用:

NIS服務的應用結構分爲NIS服務器和NIS客戶機兩種角色,NIS服務器集中維護用戶的帳號信息(數據庫)供NIS客戶機進行查詢,用戶登錄任何一臺NIS客戶機都會從NIS服務器進行登錄認證,可實現用戶帳號的集中管理。


二、整個Nis的運作流程:

Nis Server(Master/Slave)

1.Nis Master先將帳號密碼相關文件製作成數據庫文件;

2.Nis Master可以主動告訴Nis Slave來更新;

3.Nis Slave亦可以主動前往Nis Master取得更新;

4.若有帳號密碼變動時,需要重新制作數據庫文件並重新同步Master/Slave。


Nis Client

1.NIS client 若有登入需求時,會先查詢其本機的 /etc/passwd, /etc/shadow 等檔案; 

2.若在 NIS Client 本機找不到相關的賬號數據,纔開始向整個 NIS 網域的主機廣播查詢; 

3.每部 NIS server (不論 master/slave) 都可以響應,基本上是『先響應者優先』。 


三、Nis環境大體組件:

1.Nis Master Server:將文件建成數據庫,並提供給Slave Server來更新;

2.Nis Slave Server:以Master Server的數據庫作爲本身的數據庫來源;

3.Nis Client:向Master/Slave 請求登陸者的驗證數據。


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 服務器所提供的數據庫


架設環境:

一臺Master Server :Centos 5.9

一臺Slave Server :Centos 5.9

一臺Client :Centos 5.9 (所有客戶端配置一樣,所以這裏用一臺)

配置步驟:

1.1:所需軟件

  1. yp-tools :提供 NIS 相關的查尋指令功能 

  2. ypbind :提供 NIS Client 端的設定軟件 

  3. ypserv :提供 NIS Server 端的設定軟件 

  4. portmap :這是 RPC必須的軟件!

可以用rpm -qa | grep "^yp"來檢查是否有安裝ypserv;一般來說 yp-tools, ypbind 都會主動的安裝,此時建議用{yum install ypserv}來安裝。

1.2:Nis 服務器相關配置文件

配置文件
/etc/ypserv.conf這是最主要的 ypserv 軟件所提供的配置文件,可以規範 NIS 客戶端是否可登入的權限。 
/etc/hosts由於 NIS server/client 會用到網絡主機名與 IP 的對應,因此這個主機名對應檔就顯的相當重要!每一部主機名與 IP 都需要記錄才行! 
/etc/netgroup提供組數據及GID的對應。
/etc/sysconfig/network可以在這個檔案內指定 NIS 的網域 (nisdomainname)。 
/var/yp/Makefile這就是與建立數據庫有關的動作配置文件;
主要服務方面
/usr/sbin/ypserv就是 NIS 服務器的主要提供服務
/ust/sbin/rpc.ypxfrd

用於Master/Slave主機之間的傳輸數據庫的服務。

/usr/sbin/rpc.yppasswdd提供額外的 NIS 客戶端之用戶密碼修改服務, 透過這個服務, NIS 客戶端可以直接修改在 NIS 服務器上的密碼。相關的使用程序則是 yppasswd 指令; 
數據庫相關指令
/usr/lib64/yp/ypinit建立數據庫的指令,非常常用 (在 32 位的系統下,文件名則是 /usr/lib/yp/ypinit ); 
/usr/bin/yppasswd與 NIS 客戶端有關,主要在讓用戶修改服務器上的密碼。
/usr/sbin/yppushmaster 主機將數據庫直接送至 slave 的指令;
/usr/lib/yp/ypxfr傳送數據庫的指令,在該目錄下尚有 ypxfr_1perday, ypxfr_1perhour, ypxfr_2perday 等等。 


實做案例:

NIS 的域名爲:abc

整個內部的信任網域爲: 192.168.100.0/24 

NIS master server 的 IP爲:192.168.100.254 ,主機名爲:master.abcnis

NIS slave server的IP爲:192.168.100.253,主機名爲:slave.abcnis

NIS client 的 IP 爲 192.168.100.10,主機名爲:client01.abcnis 


Master Nis Server的設定與啓動

# yum -y install yp-tools*   #安裝提供NIS相關的查詢命令組件

# yum -y install ypbind*    #安裝提供NISClient端的設置組件

# yum -y install ypserv*    #安裝提供NISServer端的設置組件

# yum -y install portmap*   #安裝RPC必須的組件

1.先設定Nis的域名(Nis Domain Name)

# nisdomainname abc  #使用nisdomainname命令設置NIS域名

# nisdomainname    #不添加參數的時候直接輸出當前域名

abc


# vim /etc/rc.d/rc.local

添加:
/bin/nisdomainname abc   #設定開機啓動abc域名
# vim/etc/sysconfig/network
添加:
NISDOMAIN=abc              #開機或者啓動NIS相關服務時NIS域名就自己設定了
YPSERV_ARGS="-P 1011" #設定NIS每次都啓動在固定的端口

Tips:其實 nisdomainname 與 ypdomainname 及 domainname 都是一模一樣的指令!你只要記住一個指令名稱即可。
不過,這個指令現在大概只用來檢查設定是否正確,因爲啓動 NIS 服務器時,服務器去捉取的數據就是從 network 這個檔案裏面捉取的!所以只要改這個配置文件即可啊!
另外,由於未來想使用 iptables 直接管理 NIS 的使用,因此我們想要控制 NIS 啓動在固定的端口上。此時, 就使用『YPSERV_ARGS="-p 1011"』這個設定值來固定端口在 1011 上!

2.主要配置文件 /etc/ypserv.conf
#vim /etc/ypserv.conf 

Dns:no   #DNS服務器是否開啓;NIS 服務器大多使用於內部局域網絡,只要有 /etc/hosts 即可,所以不用 DNS !
Files:30  #默認會有30個數據庫被讀入內存中
Slp:no
Slp_timeout:3600   #與SLP服務有關
Xfr_check_port:yes  #與Master/Slave有關,用於同步更新的數據庫比對所使用的端口,放置於 <1024內。

# 底下則是設定限制客戶端或 slave server 查詢的權限,利用冒號隔成四部分:
# [主機名/IP] : [NIS域名] : [可用數據庫名稱] : [安全限制] 
127.0.0.0/255.255.255.0  : *     :*           : none
192.168.100.0/255.255.255.0  : *     : *        : none
*                     :*       : *         : deny

# 還有一個簡單作法,你可以先將上面三行批註,然後加入底下這一行即可:(當然也可以依據自己的需求設定)
*                     : *       : *       : none 

3.設定主機名與IP的對應(/etc/hosts)
#vim  /etc/hosts
# 原本就有的 localhost 與 127.0.0.1 之類的設定都不要更動,只要新增數據: 
192.168.100.254       master.abcnis
192.168.100.253       slave.abcnis
192.168.100.10         client01.abcnis
Tips:注意!如果你的主機名 (hostname) 與 NIS 的域名不一樣,那麼在這個檔案當中還是需要將你的主機名給他設定進來! 否則在後面數據庫的設定時,肯定會發生問題。


4.建立信任羣組(/etc/netgroup)
touch  /etc/netgroup
格式:
主機,用戶賬戶,域名稱        #每一行都有三個字段,分別以逗號『,』隔開;如果是空的話默認接受所有。
Tips:現在比較新的Distributions都可以略過這個檔案的檢查了,不過建議瞭解一下,只需建立即可。(本來是不存在的!

5.啓動觀察所有相關服務

爲了讓 yppasswdd 啓動在固定的端口,方便防火牆的管理, 因此,建議你可以設定一下 /etc/sysconfig/yppasswdd 
# vim /etc/sysconfig/yppasswdd 
YPPASSWDD_ARGS="--port 1012" <==找到這個設定值,修改一下內容成這樣!
 

# /etc/init.d/portmapstart       #啓動RPC必須服務

# /etc/init.d/ypservstart         #啓動NIS服務器提供的主要服務

# /etc/init.d/yppasswddstart  #啓動client修改密碼服務

# rpcinfo -p localhost             #啓動後rpcinfo查看
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp    952  status
    100024    1   tcp    955  status
    100009    1   udp    828  yppasswdd
    100004    2   udp   1012  ypserv
    100004    1   udp   1012  ypserv
    100004    2   tcp   1015  ypserv
    100004    1   tcp   1015  ypserv

 # rpcinfo -u localhost ypserv
    program 100004 version 1 ready and waiting
    program 100004 version 2 ready and waiting

6.處理帳號並建立數據庫
在完成了上面的所有步驟後,接下來我們得要開始將主機上面的賬號檔案轉成數據庫檔案啦! 
不過,因爲擔心與 NIS 客戶端的賬號有衝突,加上之前我們已經建立過一些賬號了。所以,這裏我們的新賬號使用大於1000的UID來建立。
#useradd -u 1001 nisuser1
#useradd -u 1002 nisuser2
#echo password | passwd --stdin nisuser1           #給nisuser1設定密碼
#echo password | passwd --stdin nisuser2           #給nisuser2設定密碼

接下來,將建立的帳密數據轉成數據庫吧!
#/usr/lib/yp/ypinit –m  #建立數據庫

  1. At this point, we have to construct a list of the hosts which will run NIS

  2. servers. master.abcnis is in the list of NIS server hosts. Please continue to add

  3. the names for the other hosts, one per line. When you are done with the

  4. list, type a <control D>.

  5.     next host to add: master.abcnis  <==系統根據主機名自動捉取

  6.     next host to add:   <==這個地方按下 [crtl]-d

  7. he current list of NIS servers looks like this:

  8. master.abcnis

  9. Is this correct?  [y/n: y]  y

  10. We need a few minutes to build the databases...

  11. Building /var/yp/abc/ypservers...

  12. Running /var/yp/Makefile...

  13. gmake[1]: Entering directory `/var/yp/abc'

  14. Updating passwd.byname...

  15. ……………………………………………………

  16. Updating protocols.byname...

  17. Updating mail.aliases...

  18. gmake[1]: Leaving directory `/var/yp/abc'


  19. master.abcnis has been set up as a NIS master server.


  20. Now you can run ypinit -s master.abcnis on all slave server.

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

  1. gmake[1]: *** No rule to make target `/etc/aliases\', needed by `mail.aliases\'. Stop.

  2. gmake[1]: Leaving directory `/var/yp/abcnis\

  3. make: *** [target] Error 2

  4. Error running Makefile.

  5. Please try it by hand. 

  6. [root@www ~]# touch /etc/aliases # 解決方法很簡單吶!缺少什麼檔案,就 touch 他就是了! 


  7. [root@www ~]# /usr/lib64/yp/ypinit -m # 然後再重新執行一次即可!


7.重啓服務,以告知數據庫已經被更改了。
# /etc/init.d/ypservrestart
# /etc/init.d/yppasswddrestart


Tips:如果你的用戶密碼有變動過,那麼你就得要重新制作數據庫,重新啓動 ypserv 及 yppasswdd  !!!



8.與Slave Nis Server有關的一些設定

當我們執行了 ypinit -m 之後,所有的主機上面的賬號相關檔案會被轉成數據庫檔案, 這些數據庫會被放置到 /var/yp/"nisdomainname" 當中,
我們的 nisdomainname 是 abcnis , 所以被建立的數據庫通通被放置到 /var/yp/abcnis/ 目錄中!您可以自行去檢查看看。

若變更了使用者帳號密碼參數,針對這個檔案進行數據庫更新:
# cd /var/yp/
# make passwd

開啓Slave服務推送
#vim/var/yp/Makefile 
更改NOPUSH=false

指定Slave服務主機
#vim /var/yp/ypservers
master.abcnis
slave.abcnis     #告訴master要把數據給誰

啓動 ypxfrd服務
# /etc/init.d/ypxfrd start   #可以讓 slave 服務器主動鏈接上 ypxfrd 來更新數據庫, 可以免除系統管理原自己手動更新

此外,如果 master 機器想要直接將某些特定的數據庫直接傳給 slave 主機的話, 那麼可以使用 yppush 這個指令。
例如:#yppush -h slave.abcnis  passwd.*

Slave Nis Server的設定與啓動

# yum -y install yp-tools*   #安裝提供NIS相關的查詢命令組件

# yum -y install ypbind*    #安裝提供NISClient端的設置組件

# yum -y install ypserv*    #安裝提供NISServer端的設置組件

# yum -y install portmap* #安裝RPC必須的組件


1.設定NIS域名
#nisdomainname abc   #使用nisdomainname命令設置NIS域名

# vim /etc/rc.d/rc.local

添加:/bin/nisdomainname abc   #設定開機啓動sunnorth域名
# vim/etc/sysconfig/network

添加:NISDOMAIN=abc      #開機或者啓動NIS相關服務時NIS域名就自己設定了


2.配置主要配置文件 /etc/ypserv.conf

#vim /etc/ypserv.conf

添加:

127.0.0.0/255.255.255.0    : *     : *          : none

172.20.48.0/255.255.252.0  : *      : *         : none

*                     : *      : *            : deny


3.設定 /etc/hosts 和 /etc/netgroup
#touch /etc/netgroup
#vim  /etc/hosts
192.168.100.254       master.abcnis
192.168.100.253       slave.abcnis
192.168.100.10         client01.abcnis

啓動所有服務及建立數據庫

# /etc/init.d/portmap start

# /etc/init.d/ypserv start

# /usr/lib/yp/ypinit -s  master.abcnis     #取得來源於數據庫的文件

雖然使用上頭的指令事實上會出現有錯誤的信息,就是那個『Trying ypxfrd ... not running』的信息, 但事實上數據庫的轉移還是成功的!不相信的話,你可以使用底下這個指令來測試一下數據庫是否正確:
# ypcat -h localhost passwd.byname 
如果有正確的輸出賬號/密碼數據輸出的話,就OK了。

4.設置數據同步時間(master端要啓動ypxfrd)
# vim /etc/crontab
# 在最後加入以 ypxfr 傳輸數據的 script 喔! 
*/5 * * * * /usr/lib64/yp/ypxfr –h  master.abcnis  passwd.byname
*/5 * * * * /usr/lib64/yp/ypxfr –h  master.abcnis  passwd.byuid
 
更改配置:
# vim /usr/lib/yp/ypxfr_1perday 
# vim /usr/lib/yp/ypxfr_1perhour 
# vim /usr/lib/yp/ypxfr_2perday
  $YPBINDIR/ypxfr $map -h master.abcnis    

Client端的設定

Client端所需軟件:

# yum -y install ypbind*        # ypbind 是與 ypserv 互相溝通的客戶端聯機軟件

# yum -y install yp-tools*      #yp-tools 是提供查詢的軟件


客戶端相關文檔:
/etc/sysconfig/networkNIS 的領域名
/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 數據庫
客戶端相關指令:
/usr/bin/yppasswd 更改你在 NIS database (NIS Server 所製作的數據庫) 的密碼 
/usr/bin/ypchsh   同上,但是是更改 shell 
/usr/bin/ypchfn   同上,但是是更改一些用戶的訊息! 


Nis Client 的設定與啓動

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


設定好NIS Domain 以及 /etc/hosts主機名對應

# nisdomainname abc

# vim /etc/rc.d/rc.local

添加:/bin/nisdomainname abc   #設定開機啓動sunnorth域名

# vim/etc/sysconfig/network

添加:NISDOMAIN=abc      #開機或者啓動NIS相關服務時NIS域名就自己設定了

#vim/etc/hosts     #設置主機名稱

添加:

192.168.100.254  master.abcnis
  192.168.100.253     slave.abcnis

192.168.100.10       client01.abcnis


啓動ypbind來連接至Nis Server
#setup     #執行setup後以下圖方式處理;

選擇《Authentication Configuration》後,出現下圖:

因爲我們要用NIS作爲登入者身份驗證的機制,因此選擇Use NIS;

最後再填寫 NIS 網域 (Domain) 以及 NIS 服務器的 IP (Server),按下確定即可。

            
如果你真的想要手動處理的話, 那麼你必須要手動的修改底下這些檔案:

  • /etc/sysconfig/network (加入 NISDOMAIN 項目)

  • /etc/nsswitch.conf (修改許多主機驗證功能的順序)

  • /etc/sysconfig/authconfig (CentOS 的認證機制)

  • /etc/pam.d/system-auth (許多登入所需要的 PAM 認證過程)

  • /etc/yp.conf (亦即是 ypbind 的配置文件) 


NIS Client端的檢驗:yptest , ypwhich , ypcat 

如何確定 NIS client 已經連上 NIS server 呢?基本上,只要剛剛使用 setup 去設定時,最後的步驟並沒有被卡住, 那應該就是順利成功啦!該步驟會自動啓動portmap 與 ypbind 兩個服務。

1.利用yptest檢驗數據庫測試:
直接在NIS Client輸入yptest 即可檢查相關的測試數據;

  1. [root@clientlinux ~]# yptest

  2. Test 1: domainname

  3. Configured domainname is \"abc\"


  4. Test 2: ypbind

  5. Used NIS server: master.abcnis


  6. Test 3: yp_match

  7. WARNING: No such key in map (Map passwd.byname, key nobody)

  8. ....(中間省略)....


  9. Test 6: yp_master

  10. master.abcnis


  11. ....(中間省略)....


  12. Test 8: yp_maplist

  13. passwd.byname

  14. protocols.byname

  15. hosts.byaddr

  16. hosts.byname

  17. ....(中間省略)....


  18. Test 9: yp_all

  19. nisuser1 nisuser1:$1$U9Gccb60$K5lDQ.mGBw9x4oNEkM0Lz/:1001:1001::/home/nisuser1:/bin/bash

  20. ....(中間省略)....

  21. 1 tests failed

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


2.利用ypwhich檢驗數據庫數量:
單純使用 ypwhich 的時候顯示的是『NIS Client 的 domain』名稱,而當加入 -x 這個參數時, 則是顯示『NIS Client 與 Server 之間溝通的數據庫有哪些?』

3.利用ypcat讀取數據庫內容:
#ypcat [-h nisserver] [數據庫名稱] 選項與參數:
-h nisserver :如果有設定的話,指向某一部特定的 NIS 服務器,如果沒有指定的話,就以 ypbind 之設定爲主;
數據庫名稱:亦即在 /var/yp/vbirdnis/ 內的檔名啊!例如 passwd.byname 
# 讀出 passwd.byname 的數據庫內容
[root@clientlinux ~]# ypcat passwd.byname 

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

  • yppasswd :與 passwd 指令相同功能;

  • ypchfn :與 chfn 相同功能;

  • ypchsh :與 chsh 相同功能。 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章