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/ypservers | NIS?服務器所提供的數據庫 |
架設環境:
一臺Master?Server?:Centos?5.9
一臺Slave?Server?:Centos?5.9
一臺Client?:Centos?5.9?(所有客戶端配置一樣,所以這里用一臺)
配置步驟:
1.1:所需軟件
yp-tools :提供 NIS 相關的查尋指令功能?
ypbind :提供 NIS Client 端的設定軟件?
ypserv :提供 NIS Server 端的設定軟件?
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/yppush | master 主機將數據庫直接送至 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 ?#建立數據庫
At this point,?we have to construct?a?list of the hosts which will run NIS
servers.?master.abcnis 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: master.abcnis ?<==系統根據主機名自動捉取
????next host to add: ??<==這個地方按下 [crtl]-d
he current list of NIS servers looks like this:
master.abcnis
Is this correct? ?[y/n: y]??y
We need a few minutes to build the databases...
Building /var/yp/abc/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/abc'
Updating passwd.byname...
……………………………………………………
Updating protocols.byname...
Updating mail.aliases...
gmake[1]: Leaving directory `/var/yp/abc'
master.abcnis has been set up as a NIS master server.
Now you can run ypinit -s master.abcnis 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/abcnis\
make: *** [target] Error 2
Error running Makefile.
Please try it by hand.?
[root@www ~]# touch /etc/aliases # 解決方法很簡單吶!缺少什么檔案,就 touch 他就是了!?
[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/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 數據庫 |
| 客戶端相關指令: | |
| /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 即可檢查相關的測試數據;
[root@clientlinux?~]#?yptest
Test 1: domainname
Configured domainname is \"abc\"
Test 2: ypbind
Used NIS?server:?master.abcnis
Test 3: yp_match
WARNING: No such key in?map?(Map?passwd.byname,?key nobody)
....(中間省略)....
Test 6: yp_master
master.abcnis
....(中間省略)....
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 上頭的所有帳戶信息,如果有出現賬號相關數據的話,那么應該就算驗證成功了!
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 相同功能。?
總結
以上是生活随笔為你收集整理的Nis服务器主从安装配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 11(maven+SSH)网上商城项目实
- 下一篇: 在Centos上编译安装nginx