NIS詳解(轉)

post0發表於2007-08-11
NIS詳解(轉)[@more@]

網路資訊服務(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包含了建立資料庫的命令。

example:

#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

#cd /var/yp

#/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 配置從伺服器。

example:

#/usr/lib/yp/ypinit -s salve

salve的IP地址也必須儲存在hosts中。

----------

安全性

使用者可以在/var/yp/securenets檔案中定義伺服器的安全效能。

example:

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”覆蓋掉的欄位(不明白)

example:

# 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第三講中有介紹。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945236/,如需轉載,請註明出處,否則將追究法律責任。