網絡資訊服務(NIS)是集中控制幾個系統管理資料庫的網絡用品。NIS簡化了UNIX和LINUX桌面客戶的管理工作,用戶端利用它可以使用中心伺服器的管理檔案。桌面系統的使用者無需建立他們自己的/etc/passwd,他們隻簡單的使用維護在NIS伺服器的檔案即可。
提到NIS不得不先說明一下WINDOWS2000的域控制器,在區域網路内有一台WIN2000域控制器,下面有一些機器加入到這個域中,在下的機器登入時,有一個選項是選擇登入到本機還時登入到域内(應該是這麼說的,有點記不清楚了,大概就是這個了),登入本地的密碼有本機控制,但是如果登入域内,密碼支有域控制器負責管理。
LINUX也是作業系統,跟WIN2000沒有本質的差別,是以仔細讀上段話,就能了解NIS是原理是什麼樣了,這時出現了一個重要的檔案/etc/nsswitch.conf
NIS是一個客戶機/伺服器系統,ypbind是定義NIS伺服器的用戶端程序。一旦确定了伺服器位置,客戶機綁定到了伺服器上,是以用戶端的住處查詢都發往伺服器。ypserv是回答用戶端查詢的伺服器程序。
安裝ypbind用戶端
rpm -ivh ypbind*
這沒有什麼好說的。
配置NIS用戶端
程序ypbind這客記機的NIS域定位伺服器,NIS域包括所有NIS伺服器和客戶機。它與DNS不同,盡管有些管理者将NIS域名等同于DNS的域名。NIS域名隻對那NIS伺服器和客戶機起作用。
有兩種方式配置NIS域名:
nisdomainname 定義顯示NIS域名
yp.conf檔案配置NIS域名。
#nisdomainname gogo
#nisdomainname
gogo
預設地,ypbind使用nisdomainname指令傳回NIS域名,向NIS伺服器送出請求時在網絡内廣播該位址。
yp.conf檔案
/etc/yp.conf定義了yp.conf配置。如果找不到yp.conf檔案,ypconf程序使用nisdomainname 指令傳回的NIS域名,廣播定位NIS伺服器。ypbind将綁定到第一個相應請求的伺服器上。
ypserver hostname
domain nisdomain broadcast | server hostname
========
hostname,nisdomain字元為變量。
使用ypserver配置選項為客戶機指定伺服器。yp.conf檔案包括ypserver選項時,客戶機使用指令nisdomainname傳回的NIS域名,向ypserver指令的hostname字段指定的伺服器送出請求。/etc/hosts檔案中必須包含該主機的IP位址,還記得我說過什麼了嗎,DNS是取代的HOSTS的,在DNS中設定也是可以的。ypserver選項強制客戶機連接配接到特定的伺服器上。
在yp.conf檔案中使用domain選項定義了NIS域名,指出客戶機是廣播定位還是直接向伺服器發送請求。
example:
#/etc/yp.conf
#
domain first server jh
=========
first作為域名,jh是這個域的伺服器 jh在hosts中必須有相對應的IP位址
或者jh IN A 192.168.1.1還記得這條指令是幹什麼的嗎?
------------------------
建立NIS伺服器
安裝ypserv
rpm -ivh ypserv*
-----------
NIS伺服器提供的資料庫,稱為NIS映射表.
建立獨立伺服器
如果使用者隻有一個NIS域伺服器,建立獨立伺服器,如果使用者NIS域中有多個伺服器,就需要選擇其中一個作為該域的主伺服器。其他作為從伺服器。
使用者可以使用make指令初始化獨立伺服器,建立NIS映射表,檔案/var/yp/Makefile包含了建立資料庫的指令。
#nsidomainname first
#cd /var/yp
#make
gamke[1]:Entering directory '/var/yp/terns'
Updateing passd.byname......
Updateing passwd.byuid.......
............
........
.....
...
---------
創新主從伺服器
使用ypinit指令初始化主伺服器,常見NIS映射表。預設地.ypinit同make指令給出的操作一樣。要建立相對于從伺服器的主伺服器,使用者需要編輯/var/yp/Makefile檔案。在Makefile檔案中找到NOPUSH設定為NOPUSH=false.
修改後,運作ypinit -m
exmpale:
#nisdomwiname first
#/usr/lib/yp/ypinit m
...........
next host to add:1111.first.myhome.com
next host to add:2222.first.myhome.com
..............
is this correct? [y/n:y]y
..........
.........
updateing passwd.byname.........
.............
累!!!!
從伺服器配置比主伺服器簡單。主伺服器儲存了所有的映射表。從伺服器隻需知道哪個是主伺服器即可。ypinit -s 配置從伺服器。
#/usr/lib/yp/ypinit -s salve
salve的IP位址也必須儲存在hosts中。
----------
安全性
使用者可以在/var/yp/securenets檔案中定義伺服器的安全性能。
255.255.255.0 192.168.1.0
授權192.168.1.0子網的使用者可以通路伺服器。
-----------------
ypserv.conf檔案
使用者必須使用securenets檔案,未必用ypserv.conf定義安全性。
文法如下:
host:map:security:[mangle[:field]]
字段如下
host 授權或禁止通路的計算機,它由位址/掩碼對确定.例如 192.168.1.0/255.255.255.0 . *表示所有主機
map 該字段表示通路的NIS映射表項名稱。例如:passwd.byuid。*表示映射表 中所有的字段都可用。
security 授權通路類型
none 允許通路,不加強安全性。
port 允許特權端口通路。隻接收源端口小于1024的連接配接。
deny 禁止通路。
des 通路時需要數字加密标準(DES)認證。
[mangle[:field]] 指定應該在發出響應之前用“X”覆寫掉的字段(不明白)
# Host : MAP : Security : mangle
192.168.1.0/255.255.255.0 : * :none :no
* :* :deny :no
啟動伺服器
/etc/init.d/ypserv restart
啟動NIS用戶端
/etc/init.d/ypbind restart
測試NIS
NIS用戶端應該綁定到伺服器。ypwhich指令可以檢測用戶端是否正确的連接配接到伺服器。
如果客戶機正确的綁定到伺服器,用ypcat檢測伺服器提供的資訊。
NIS與DNS是兩會事,大家一定要搞清楚。雖然都有可能涉及到域名。但确實是兩會事,他們之間會有一些連系。但絕不可以混在一起。切記,切記。
====================================
nsswitch.conf檔案
nsswitch.conf檔案不僅能處理主機表和DNS之間的優先次序,還能處理其它的問題。它為幾個不同的系統管理資料庫定義來源(多看幾篇這句話,“幾個不同的系統管理資料庫”,可以是DNS,NIS,大家想一想)
由nsswitch.conf控制的資料庫
alias EMAIL别名
ehters 用于RARP的以太網位址。
hosts 主機名和IP位址
password 使用者帳号資訊。
還有許多,沒有列出來。
使用不帶NIS的nsswitch.conf example:
password: files
shadow: files
hosts: dns files
#這句很重要,dns在先,files在後,這裡的files指的是/etc/hosts檔案,如果有用戶端查詢的時候,先找dns,再找files。順序很重要。
aliases: files
使用帶NIS的nsswitch.conf example:
hosts: files nis dns
protocols: nis files
控制選擇過程
nsswitch.conf檔案提供了幾個可用于查詢測試的狀态關鍵字:
success(成功) 查詢傳回所期望的結果。該狀态的預設的動作是傳回結果給送出查詢的應用程式(想一下,在我的DNS第二講,說到解析器,就可以是送出查詢的應用程式,不過他是DNS查詢是了),然後退出查詢過程。
nofound(沒有找到) 雖然查詢工作正常,但所期望值沒有找到。預設的動作是查詢下一行的源。
unavail(不可用) 送出查詢的源不可用。例,名稱伺服器沒有運作。
tryagain(重度) 源暫時不可用。預設的動作是繼續向下一個源送出查詢。
有兩個關鍵字可以識别預設的動作:return和continue。return告訴解析器傳回值給應用程式并結束查詢。continue告訴解析器繼續向下一個源送出查詢。
狀态和動作關鍵字可以結合起來,加到nsswitch.conf檔案的源單中,以控制查詢過程何時移到下一個源。
狀态檢查的文法是:
[ ( ! ? status=action ) + ]
問号(?)代表任何狀态值;歎号(!)對狀态值取反。!SUCCESS是不成功的意思。方括号"[]"用于包括整個條件語句。圓括号"()"是可選的,隻用來包含每個測試條件,可以有多個條件,每個條件用圓括号包含,之間用加号連接配接。
例如:
[ ( NOFOUND=RETURN ) + ( TRYAGAIN+TRETURN) ]
其實就是C語言中的“與”“或”“非”的關系。
下面是nsswitch.conf中的主機一行:
hosts: dns [ !UNAVAIL=return ] files
說明了UNAVAIL之外的所有狀态,解析器應該将傳回值給應用程式,然後退出。
隻有當DNS名稱伺服器沒有運作的時候,解析器才能向主機表查詢。如果有條件語句改變,預設的動作卞會起作用,UNAVAI的預設動作是continue。
nsswich.conf檔案已經取代了hosts.conf,因為它可以提供更多的資源控制方式。LINUX系統中通常這兩個檔案都有,但實際上起作用的是nsswitch.conf檔案。
hosts.conf檔案介紹在我的DNS第三講中有介紹。