1,除黃頁(yè)外怎樣全面詳細(xì)快速的查找中國(guó)一個(gè)行業(yè)的所有酒廠
到行業(yè)大黃頁(yè)網(wǎng)站www.3653h.com上去找 全國(guó)各行業(yè)都有
2,茅臺(tái)鎮(zhèn)國(guó)珍宴酒廠電話
咨詢記錄 · 回答于2021-10-07
茅臺(tái)鎮(zhèn)國(guó)珍宴酒廠電話
貴州國(guó)珍宴酒廠辦公室地址位于 貴州省遵義市仁懷市茅臺(tái)鎮(zhèn)巖灘村仁溪溝組,于1998年09月25日在工商局注冊(cè)成立,注冊(cè)資本為50 萬(wàn)人民幣元(萬(wàn)元),在工廠發(fā)展壯大的23年里,我們始終為客戶提供好的產(chǎn)品、良好的技術(shù)支持、健全的售后服務(wù),我工廠主要經(jīng)營(yíng)法律、法規(guī)、國(guó)務(wù)院決定規(guī)定禁止的不得經(jīng)營(yíng);法律、法規(guī)、國(guó)務(wù)院決定規(guī)定應(yīng)當(dāng)許可(審批)的,經(jīng)審批機(jī)關(guān)批準(zhǔn)后憑許可(審批)文件經(jīng)營(yíng);法律、法規(guī)、國(guó)務(wù)院決定規(guī)定無(wú)需許可(審批)的,市場(chǎng)主體自主選擇經(jīng)營(yíng)。(生產(chǎn)加工:白酒(原酒)。,我們始終為客戶提供好的產(chǎn)品和服務(wù),我工廠所屬行業(yè)為酒廠黃頁(yè),如果您對(duì)我工廠的產(chǎn)品服務(wù)有興趣,期待您在線留言或者來(lái)電咨詢聯(lián)系電話:0852-22222444廠長(zhǎng):王德利
3,酒廠管理信息系統(tǒng)
NIS是基于RPC的,是由一個(gè)服務(wù)器、一個(gè)客戶端庫(kù)以及幾個(gè)管理工具組成。起初,NIS被稱作黃頁(yè)(Yellow Pages),或YP,現(xiàn)在仍然使用這個(gè)名稱來(lái)非正式地指這項(xiàng)服務(wù)。另一方面,Yellow Pages是英國(guó)電信的商標(biāo),英國(guó)電信一直要求Sun更換這個(gè)名字。隨著事態(tài)的發(fā)展,某些名稱已與人們分不開(kāi)了,所以YP一直以與NIS相關(guān)命令的前綴形式繼續(xù)存在著,比如象ypserv、ypbind等等。今天,幾乎所有的UN*X都包括NIS,而且甚至有它的免費(fèi)實(shí)現(xiàn)版本。一個(gè)是來(lái)自BSD的Net-2發(fā)行版,源自于Sun捐贈(zèng)的公眾域參考實(shí)現(xiàn)。該版的客戶庫(kù)代碼已經(jīng)存在于GNU的libc中很長(zhǎng)時(shí)間了,而管理程序只是在最近才由Swen Thümmler [1] 移植到Linux上。在這個(gè)參考實(shí)現(xiàn)中漏掉了一個(gè)NIS服務(wù)器程序。Tobias Reber已經(jīng)編制出了另外一個(gè)NIS軟件包,其中包括所有的工具和一個(gè)服務(wù)器;該軟件包稱作yps。[2]目前,一個(gè)完全重寫的稱為NYS的NIS代碼已由Peter Eriksson [3]編制出來(lái),它支持普通的NIS和Sun的經(jīng)過(guò)許多修正的NIS+。NYS不僅提供了一個(gè)NIS工具集和一個(gè)服務(wù)器,而且還增加了一個(gè)全新的庫(kù)函數(shù)集,這個(gè)庫(kù)函數(shù)集可能最終會(huì)被加入到標(biāo)準(zhǔn)libc中。這包括替換目前使用host.conf的主機(jī)名解析的一個(gè)新設(shè)置方案。這些函數(shù)的特性將在下面討論。這一章將集中討論NYS而非另外兩個(gè)軟件包,對(duì)于這兩個(gè)軟件包我將稱它們?yōu)椤皞鹘y(tǒng)的”NIS代碼。如果你確實(shí)要想運(yùn)行任何這些軟件包的話,本章中的說(shuō)明也許已經(jīng)足夠也許還不夠。要獲取另外的信息,請(qǐng)取得一本有關(guān)NIS的標(biāo)準(zhǔn)(權(quán)威)書(shū)本,比如象Hal Stern的NFS和NIS(見(jiàn)[Stern92])。目前,NYS仍處于開(kāi)發(fā)階段,因此標(biāo)準(zhǔn)的Linux工具如網(wǎng)絡(luò)程序或login程序還沒(méi)有注意到NYS的配置方案。只有到NYS合并進(jìn)主流libc中時(shí),如果你想使得所有這些執(zhí)行程序使用NYS時(shí),你才需要重新編譯它們。在任何這些應(yīng)用程序的Makefiles中,在libc之前,指定-lnsl作為 linker的最后一個(gè)選項(xiàng)。這將有關(guān)函數(shù)從libnsl—NYS庫(kù)中連接過(guò)來(lái),取代從標(biāo)準(zhǔn)C庫(kù)的連接。10.1 理解NISNIS在所謂的包含鍵-值對(duì)的maps中保存數(shù)據(jù)庫(kù)信息。Maps被存儲(chǔ)于運(yùn)行NIS服務(wù)器的中央主機(jī)中,從該主機(jī)中,客戶可以通過(guò)各種RPC調(diào)用檢索信息。最頻繁地,maps是存于DBM文件中的。[4]Maps本身是從主要文本文件(比如/etc/hosts或/etc/passwd)中生成的。對(duì)于某些文件,會(huì)生成幾個(gè)maps,每個(gè)搜尋鍵類型對(duì)應(yīng)一個(gè)。例如,你可以為主機(jī)名和IP地址搜查hosts文件。相應(yīng)地,從中會(huì)生成兩個(gè)NIS maps,分別稱為hosts.byname和hosts.byaddr。表10.1列出了通用maps和它們生成的文件。Master File Map(s)/etc/hosts/etc/networks/etc/passwd/etc/group/etc/services/etc/rpc/etc/protocols/usr/lib/aliases Hosts.byname hosts.byaddrNetworks.byname networks.byaddrPasswd.byname passwd.byuidGroup.byname group.bygidServices.byname services.bynumberRpc.byname rpc.bynumberProtocols.byname protocols.bynumberMail.aliases表10.1 一些標(biāo)準(zhǔn)的NIS maps以及相應(yīng)的文件。在某些NIS軟件包或其它軟件中,還有一些你可能會(huì)覺(jué)得有用的別的文件和maps。這些文件和maps可能含有沒(méi)在這本書(shū)中討論過(guò)的應(yīng)用程序的信息,比如可能用于某些BOOTP服務(wù)器中的bootparams maps,或者在Linux中目前不含有任何函數(shù)的文件(就象ethers.byname和ethers.byaddr maps)。對(duì)于某些maps,人們通常使用綽號(hào)(nicknames),它們很短因而易于鍵入。要想獲得一個(gè)你的NIS工具能夠理解的綽號(hào)的完整列表,運(yùn)行下面的命令:$ ypcat –xNIS map nickname translation table:“passwd” -> “passwd.byname”“group” -> “group.byname”“networks” -> “networks.byaddr”“hosts” -> “hosts.byname”“protocols” -> “protocols.bynumber”“services” -> “services.byname”“aliases” -> “mail.aliases”“ethers” -> “ethers.byname”“rpc” -> “rpc.bynumber”“netmasks” -> “netmasks.byaddr”“publickey” -> “publickey.byname”“netid” -> “netid.byname”“passwd.adjunct” -> “passwd.adjunct.byname”“group.adjunct” -> “group.adjunct.byname”“timezone” -> “timezone.byname”NIS服務(wù)器傳統(tǒng)地稱為ypserv。對(duì)于一個(gè)中等大小的網(wǎng)絡(luò)來(lái)說(shuō),單個(gè)服務(wù)器通常就足夠了;大型的網(wǎng)絡(luò)可能需要在不同的網(wǎng)段以及不同的機(jī)器上運(yùn)行幾個(gè)服務(wù)器,以減輕服務(wù)器機(jī)器和路由器的負(fù)荷。通過(guò)將這些服務(wù)器之一作為主服務(wù)器(master server),其它的服務(wù)器作為次服務(wù)器(slave servers),使得這些服務(wù)器同步。Maps將只在主服務(wù)器上建立。從主服務(wù)器上將它們分發(fā)到所有次服務(wù)器上。你可能已經(jīng)注意到,我們一直很含糊地論及“網(wǎng)絡(luò)”;當(dāng)然引用這樣一個(gè)網(wǎng)絡(luò)的NIS存在著與眾不同的概念,也即通過(guò)NIS共享它們部分系統(tǒng)配置數(shù)據(jù)的所有主機(jī)的一個(gè)集合:NIS域。不幸的是,NIS域與我們?cè)贒NS中遇到的域絕對(duì)沒(méi)有一點(diǎn)共同之處。為了在本章中避免含糊不清的情況,我將總是指出我說(shuō)的哪一類型的域。NIS域只具有純粹的管理功能。對(duì)于用戶來(lái)說(shuō)它們主要是不可見(jiàn)的,除了在域中所有機(jī)器之間口令的共享。因此,給NIS域取的名字僅與管理員有關(guān)。通常,可以使用任何名字,只要該名字與你的本地網(wǎng)絡(luò)上的其它NIS域名不同就行。例如,虛擬釀酒廠的管理員可以選擇建立兩個(gè)NIS域,一個(gè)是給釀酒廠本身用的,另一個(gè)是個(gè)葡萄酒廠的,她分別將其命名為brewery和winery。另一個(gè)很普遍的方案是簡(jiǎn)單地用DNS域名也作為NIS的域名。為了設(shè)置和顯示你的主機(jī)的NIS域名,你可以使用dommainname命令。當(dāng)不加任何參數(shù)調(diào)用時(shí),它打印出當(dāng)前NIS域名;如要設(shè)置這個(gè)域名的話,你必須成為超級(jí)用戶并鍵入:# domainname breweryNIS域決定了一個(gè)應(yīng)用程序?qū)⒉樵兡膫€(gè)NIS服務(wù)器。例如,在葡萄酒廠(Winery)的主機(jī)上的login程序(當(dāng)然)將只向葡萄酒廠的NIS服務(wù)器(或者是它們其中之一,如果存在多個(gè)服務(wù)器的話)查詢用戶的口令信息;而釀酒廠主機(jī)上的應(yīng)用程序?qū)⒅徊樵冡劸茝S的服務(wù)器?,F(xiàn)在還有一個(gè)疑點(diǎn)要解決,也即一個(gè)客戶如何知道要連接到哪一臺(tái)服務(wù)器上去。最簡(jiǎn)單的途徑是有一個(gè)配置文件,它給出了要在其上查找服務(wù)器的主機(jī)名。然而,這個(gè)辦法非常不靈活,因?yàn)樗辉试S客戶依據(jù)這些服務(wù)器存在與否使用不同的服務(wù)器(當(dāng)然是指從同一個(gè)域)。因此,傳統(tǒng)的NIS實(shí)現(xiàn)依賴于一個(gè)稱作ypbind 的特殊后臺(tái)程序在它們的NIS域中來(lái)偵測(cè)一個(gè)適當(dāng)?shù)腘IS服務(wù)器。在能夠執(zhí)行任何NIS查詢之前,任何應(yīng)用程序首先要從ypbind找出要使用哪個(gè)服務(wù)器。ypbind通過(guò)向本地IP網(wǎng)絡(luò)廣播來(lái)探測(cè)服務(wù)器;第一個(gè)響應(yīng)的服務(wù)器假設(shè)基本上是最快的一個(gè)并將用于隨后的NIS查詢。在某個(gè)間隔時(shí)間過(guò)去以后,或者如果服務(wù)器不工作了,ypbind將再次探測(cè)運(yùn)行著的服務(wù)器。現(xiàn)在,關(guān)于動(dòng)態(tài)綁定的爭(zhēng)論點(diǎn)是你很少需要它,并且它會(huì)帶來(lái)安全方面的問(wèn)題:ypbind盲目地相信任何應(yīng)答者,而這個(gè)應(yīng)答者可能會(huì)是一個(gè)謙遜的NIS服務(wù)器也可能是一個(gè)懷有惡意的入侵者。不用說(shuō)如果你在NIS上管理你的口令數(shù)據(jù)庫(kù)的話,這將變成特別麻煩的事。為了防范這個(gè)問(wèn)題,NYS缺省地不使用 ypbind,而是從一個(gè)配置文件中取得服務(wù)器的主機(jī)名。10.2 NIS與NIS+NIS和NIS+除了在名字上和有共同的目標(biāo)以外,很少有相同之處。NIS+是用一個(gè)完全不同的方法構(gòu)成的。它使用一個(gè)類似于DNS的分級(jí)名字空間,而不是一個(gè)平面的名字空間和松散脫節(jié)的NIS域。它使用一個(gè)由行和列組成的所謂的表(tables)而不是maps,在NIS+數(shù)據(jù)庫(kù)中表的每一行表示一個(gè)對(duì)象,而列表示NIS+所知所關(guān)心的對(duì)象的那些屬性。一個(gè)給定的NIS+域的每個(gè)表由那些它們的父域組成。另外,表中的一個(gè)條目可以包含到另一個(gè)表的鏈接。這些特性使得用許多方法構(gòu)造信息成為可能。傳統(tǒng)的NIS的RPC版本號(hào)是2,而NIS+的是版本3。NIS+至今似乎還沒(méi)有被廣泛地使用,而且我實(shí)際上對(duì)它也知道不多。(唔,幾乎一竅不通)。由于這個(gè)原因,這里我們將不涉及它了。如果你對(duì)它感興趣并想多學(xué)一點(diǎn)的話,請(qǐng)參閱Sun的NIS+管理手冊(cè)([NISPlus])。10.3 客戶邊的NIS如果你熟悉編制或移植網(wǎng)絡(luò)應(yīng)用程序的話,你將會(huì)注意到上面所列出的許多NIS maps與C庫(kù)中的庫(kù)函數(shù)相對(duì)應(yīng)。例如,要獲得passwd信息,你通常使用getpwnam(3)和getpwuid(3)函數(shù),它們分別返回與給定的用戶名或數(shù)值用戶id相對(duì)應(yīng)的帳號(hào)信息。在通常的環(huán)境下,這些函數(shù)將在標(biāo)準(zhǔn)文件(比如/etc/passwd)中執(zhí)行請(qǐng)求的查找。然而,這些函數(shù)的基于NIS(NIS-aware)的實(shí)現(xiàn)將更改這種行為,并且會(huì)啟用一個(gè)RPC調(diào)用讓NIS服務(wù)器查詢用戶名或id。對(duì)于應(yīng)用程序來(lái)說(shuō)這個(gè)操作是完全透明的。這個(gè)函數(shù)可以將NIS map“附加”或“替換”掉原始的文件。當(dāng)然,這并沒(méi)有對(duì)文件進(jìn)行實(shí)際的修改,它只是讓應(yīng)用程序看上去好象該文件已經(jīng)被替換或附加上去了。對(duì)于傳統(tǒng)的NIS實(shí)現(xiàn)來(lái)講,對(duì)于那些maps替換掉以及那些被添加到原始信息中,曾有某些慣例。有些maps(比如passwd maps)需要對(duì)passwd文件進(jìn)行雜湊地修改,當(dāng)做錯(cuò)時(shí),就會(huì)打開(kāi)安全方面的缺口。為了避免這個(gè)缺陷,NYS常規(guī)的配置方案,該方案確定了一個(gè)特定的客戶函數(shù)集是否使用原始文件、NIS、NIS+,并且以什么次序使用。這將在本章后續(xù)小節(jié)中加以討論。10.4 運(yùn)行一個(gè)NIS服務(wù)器在這么多理論方面的喋喋不休之后,現(xiàn)在開(kāi)始動(dòng)手做實(shí)際的配置工作。在本節(jié)中,我們將討論NIS服務(wù)器的配置。如果在你的網(wǎng)絡(luò)上已經(jīng)有一個(gè)NIS服務(wù)器在運(yùn)行,你就不必設(shè)置你自己的服務(wù)器了;在這種情況下,你可以安全地跳過(guò)本節(jié)。注意,如果你只是準(zhǔn)備對(duì)服務(wù)器做試驗(yàn),請(qǐng)確信你沒(méi)有設(shè)置一個(gè)已經(jīng)在你網(wǎng)絡(luò)上使用的NIS域名。因?yàn)檫@會(huì)使整個(gè)網(wǎng)絡(luò)服務(wù)癱瘓并使得許多人不高興和惱怒。對(duì)于Linux目前有兩個(gè)現(xiàn)存的免費(fèi)NIS服務(wù)器,一個(gè)包含在Tobias Reber的yps軟件包中,另一個(gè)在Peter Eriksson的ypserv軟件包中。至于你運(yùn)行哪一個(gè)是無(wú)關(guān)緊要的,也不管你使用NYS還是目前在libc中的標(biāo)準(zhǔn)NIS客戶代碼。在寫作本書(shū)時(shí),yps中的NIS次服務(wù)器處理的代碼似乎更完善一些。所以如果你要涉及到次要服務(wù)器的話,yps可能是一個(gè)更好的選擇。當(dāng)在/usr/sbin中安裝好服務(wù)器程序(ypserv)以后,你應(yīng)該建立一個(gè)目錄,用于存放你的服務(wù)器分發(fā)的map文件。當(dāng)為brewery域設(shè)置好一個(gè)NIS域時(shí),maps將存于/var/yp/brewery中。服務(wù)器通過(guò)檢測(cè)是否存在一個(gè)map目錄來(lái)確定它是否在為一個(gè)特定的NIS域服務(wù)。如果你對(duì)某些NIS域禁用了服務(wù),請(qǐng)確信同時(shí)也刪除那個(gè)目錄。Maps通常儲(chǔ)存于DBM文件中以加速查詢。它們是用一個(gè)稱為makedbm(對(duì)于Tobias的服務(wù)器)或dbmload(對(duì)于Peter的服務(wù)器)的程序從主文件中創(chuàng)建的。它們是不可互換的。將主文件轉(zhuǎn)換成dbmload可分析的形式通常需要一些awk或sed技巧,這對(duì)于錄入有些乏味并且難于記憶。因此,Perter Eriksson的ypserv軟件包含有一個(gè)Makefile(稱為ypMakefile),它將為你做所有這些工作。你應(yīng)該將它作為Makefile 安裝在你的map目錄中,并且編輯它,以反映你要分發(fā)的maps。在文件的頭部,你會(huì)發(fā)現(xiàn)all目標(biāo),它列出了ypserv將要提供的服務(wù)。缺省地,該行看上去象這樣:all: ethers hosts networks protocols rpc services passwd group netid例如,如果你不想生成ethers.byname和ethers.byaddr maps,只須簡(jiǎn)單地從這條規(guī)則中去掉ethers先決條件。為了測(cè)試你的設(shè)置,開(kāi)始只使用一二個(gè)maps,比如services.* maps,就已經(jīng)足夠了。在map的目錄里,在編輯好Makefile以后,鍵入“make”。這將自動(dòng)地生成并安裝maps。你必須確信每當(dāng)你改變了主文件之后,一定要更新maps,否則所做的改變對(duì)網(wǎng)絡(luò)仍然是不可見(jiàn)的。下一節(jié)解釋如何配置NIS客戶代碼。如果你的安裝設(shè)置不工作的話,你應(yīng)該查出有沒(méi)有任何請(qǐng)求到達(dá)你的服務(wù)器。如果你對(duì)NYS服務(wù)器指定-D命令行標(biāo)志,它將在控制臺(tái)上打印出有關(guān)所有進(jìn)入的NIS查詢的調(diào)試信息,并且返回結(jié)果。這些將給你一個(gè)提示來(lái)確定問(wèn)題到底出在哪里。Tobias的服務(wù)器沒(méi)有這個(gè)選項(xiàng)。10.5 使用NYS設(shè)置一個(gè)NIS客戶在本章的余下部分,我們將討論NIS客戶的配置。你的第一步應(yīng)該是告知NYS對(duì)于NIS服務(wù)使用哪個(gè)服務(wù)器,并在/etc/yp.conf配置文件中設(shè)置好。對(duì)于在葡萄酒廠(Winery)網(wǎng)絡(luò)上一臺(tái)主機(jī)上的簡(jiǎn)單樣本文件看上去象這樣:# yp.conf – YP configuration for NYS library.#domainname wineryserver vbardolino第一條語(yǔ)句告訴所有NIS客戶,他們屬于winery NIS域。如果你省略這一行,NYS將使用你通過(guò)domainname命令指派給你系統(tǒng)的域名。server語(yǔ)句指定所使用的NIS服務(wù)器。當(dāng)然,與vbardolino相應(yīng)的IP地址必須在hosts文件中設(shè)置;另外,你也可以在server語(yǔ)句中使用IP地址本身。在上面所示的表單中,server命令告訴NYS使用指定的服務(wù)器而不管目前的NIS域是什么。然而,如果你頻繁地在不同的NIS域中移動(dòng)你的機(jī)器的話,你可能想要在yp.conf文件中保存幾個(gè)域的信息。你可以通過(guò)在server語(yǔ)句中增加NIS域名獲得幾個(gè)NIS域的服務(wù)器的信息。例如,你可以為一個(gè)便攜機(jī)改變上面樣本文件成這樣:# yp.conf – YP configuration for NYS library#server vbardolino wineryserver vstout brewery這允許你在系統(tǒng)引導(dǎo)時(shí)通過(guò)domainname命令設(shè)置期望的NIS域來(lái)在兩個(gè)域的任何一個(gè)域中使用便攜機(jī)。在創(chuàng)建了這個(gè)基本的配置文件并確信它是可讀的以后,你應(yīng)該運(yùn)行的第一次測(cè)試來(lái)檢查你是否能連接到你的服務(wù)器上。確信選擇你的服務(wù)器分發(fā)的任何map,如 hosts.byname,并試著使用ypcat工具來(lái)檢索它。ypcat,就象所有其它的NIS管理工具一樣,應(yīng)該存在于/usr/sbin中。# ypcat hosts.byname191.72.2.2 vbeaujolais vbeaujolais.linus.lxnet.org191.72.2.3 vbardolino vbardolino.linus.lxnet.org191.72.1.1 vlager vlager.linus.lxnet.org191.72.2.1 vlager vlager.linus.lxnet.org191.72.1.2 vstout vstout.linus.lxnet.org191.72.1.3 vale vale.linus.lxnet.org191.72.2.4 vchianti vchianti.linus.lxnet.org你所得到的輸出應(yīng)該與上面顯示的相象。如果你得到了一條錯(cuò)誤信息指出“Can’t bind to server which serves domain”或者某些類似的信息,那么或者是你設(shè)置的NIS域名在yp.conf中沒(méi)有匹配的服務(wù)器,或者是由于某些原因服務(wù)器找不到。在后一種情況下,請(qǐng)確信ping到那個(gè)主機(jī)產(chǎn)生正確的結(jié)果,并且它確實(shí)正在運(yùn)行一個(gè)NIS服務(wù)器。你可以使用rpcinfo來(lái)驗(yàn)證后者,它將生成以下輸出:# rpcinfo –u serverhost ypservprogram 100004 version 2 ready and waiting10.6 選擇正確的maps在確信能夠與NIS服務(wù)器聯(lián)系之后,你必須決定要用NIS maps替換或添加哪個(gè)配置文件。一般地,你將會(huì)對(duì)主機(jī)和口令查找函數(shù)使用NIS maps。前者對(duì)于沒(méi)有使用BIND時(shí)特別有用。后者允許所有用戶在NIS域的任何系統(tǒng)上登錄進(jìn)他們的帳號(hào);這通常要求通過(guò)NFS在所有的主機(jī)之間共享一個(gè)中央/home目錄。這將在10.7節(jié)中詳細(xì)討論。其它的maps,如同services.byname,并沒(méi)有如此有戲劇性的效能,但能為你省去某些編輯工作如果你安裝了任何網(wǎng)絡(luò)應(yīng)用程序而該應(yīng)用程序使用了一個(gè)不在標(biāo)準(zhǔn)services文件中的服務(wù)名。通常,對(duì)于一個(gè)查找函數(shù)何時(shí)使用本地文件、何時(shí)詢問(wèn)NIS服務(wù)器,你會(huì)想有某些自由的選擇。NYS允許你配置函數(shù)訪問(wèn)這些服務(wù)的順序。這是通過(guò)/etc/nsswitch.conf文件來(lái)控制的,該文件名是指名稱服務(wù)交換(Name Service Switch),當(dāng)然其并不限制于名稱服務(wù)。對(duì)于NYS支持的任何數(shù)據(jù)查找函數(shù),它都包含指定所用服務(wù)的一行。服務(wù)的正確順序是與數(shù)據(jù)的類型有關(guān)的。并無(wú)必要讓services.byname的map一定要含有與本地services文件中不同的條目;它可以包含更多的條目。所以,一個(gè)好的選擇可以是首先查詢本地文件,并且只有當(dāng)服務(wù)名稱沒(méi)有找到時(shí)才查找NIS。另一方面,主機(jī)名信息可能會(huì)非常頻繁地改變,所以 DNS或NIS服務(wù)器應(yīng)該總是有非常正確的信息,而本地的hosts文件只作為在DNS和NIS不可用時(shí)的一個(gè)備份而已。在這種情況下,你可能想最后查詢本地文件。下面的例子顯示出了如何以上面描述的方式配置gethostbyname(2)、gethostbyaddr(2)和getservbyname(2)函數(shù)。它們將依次試用列出的服務(wù);如果一個(gè)查找成功,結(jié)果就返回,否則試用下一個(gè)服務(wù)。# small sample /etc/nsswitch.conf#hosts: nis dns filesservices: files nis可以在nsswitch.conf文件中有一個(gè)條目的完整服務(wù)的列表如下面所示。實(shí)際被查詢的maps、文件、服務(wù)器和對(duì)象依賴于條目名。nisplus或nis+對(duì)這個(gè)域使用NIS+服務(wù)器。服務(wù)器的位置從/etc/nis.conf文件中獲得。nis 使用這個(gè)域的當(dāng)前NIS服務(wù)器。被查詢的服務(wù)器的位置在yp.conf文件中設(shè)置,見(jiàn)前節(jié)所示。對(duì)于hosts條目,要查詢hosts.byname和hosts.byaddr maps。dns 使用DNS名字服務(wù)器。這個(gè)服務(wù)類型只對(duì)hosts條目有用。要被檢索的名字服務(wù)器仍然由標(biāo)準(zhǔn)resolv.conf文件確定。files 使用本地文件,比如對(duì)于hosts條目使用/etc/hosts文件。dbm 從位于/var/dbm內(nèi)的DBM文件中查找信息。文件所使用的名字與NIS map相對(duì)應(yīng)。目前,NYS支持下面這些nsswitch.conf條目:hosts、networks、passwd、group、shadow、gshadow、services、protocols、rpc和ethers。以后還會(huì)增加更多的條目。圖10.1顯示了一個(gè)更完整的例子,它引入了nsswitch.conf的另一個(gè)特性:hosts條目中的[NOTFOUND=return]關(guān)鍵字通知 NYS,如果在NIS或DNS數(shù)據(jù)庫(kù)中沒(méi)有找到所要的項(xiàng)就返回。也即,只有在向NIS和DNS服務(wù)器的呼叫由于某些其它原因失敗時(shí),NYS才將繼續(xù)搜尋本地文件。因此,本地文件只在啟動(dòng)引導(dǎo)期間使用并且當(dāng)NIS服務(wù)器關(guān)閉時(shí)起一個(gè)備份的作用。# /etc/nsswitch.conf#hosts: nis dns [NOTFOUND=return] filesnetworks: nis [NOTFOUND=return] filesservices: files nisprotocols: files nisrpc: files nis圖10.1 nsswitch.conf樣本文件。10.7 使用passwd和group MapsNIS的一個(gè)主要應(yīng)用是在一個(gè)NIS域中的所有主機(jī)上同步用戶以及帳目信息。關(guān)于這方面,你通常只保存了一個(gè)小的本地/etc/passwd文件,對(duì)于這個(gè)文件,從NIS maps獲得的站點(diǎn)范圍的信息被添加了進(jìn)去。然而,只是簡(jiǎn)單地在nsswitch.conf中為這個(gè)服務(wù)啟用NIS查找還不很夠。當(dāng)引用NIS描述的口令信息時(shí),你必須首先確信在你本地passwd文件中任何用戶的數(shù)值用戶id與NIS服務(wù)器的用戶id匹配。同樣對(duì)于其它目的你也會(huì)需要這樣的,比如從你的網(wǎng)絡(luò)中其它主機(jī)上加載NFS卷時(shí)。如果/etc/passwd或/etc/group中的任何數(shù)值id與maps中的相偏離,你必須為屬于那個(gè)用戶的所有文件調(diào)整文件的所有權(quán)。首先你必須將passwd和group中的uid和gid改成一個(gè)新值;然后找出屬于剛改變的用戶的所有文件,最后改變這些文件的所有權(quán)。假設(shè)news曾有一個(gè)id 為9,而okir有一個(gè)id為103,它們將被改成其它值;那么你可以發(fā)出以下的命令:# find / -uid 9 –print >/tmp/uid.9# find / -uid 103 –print >/tmp/uid.103# cat /tmp/uid.9 | xargs chown news# cat /tmp/uid.103 | xargs chown okir必須針對(duì)新安裝的passwd文件執(zhí)行這些命令,并且在改變?nèi)魏挝募乃袡?quán)之前收集所有文件的名字,這點(diǎn)很重要。為了更新文件的組所有權(quán),你將使用一個(gè)類似的命令。在做完這些工作之后,你系統(tǒng)上的數(shù)值uid和gid將與你的NIS域中所有其它主機(jī)上的相匹配。下一步將是在nsswitch.conf中增加配置行,它為用戶和組信息啟用NIS查找:# /etc/nsswitch.conf – passwd and group treatmentpasswd: nis filesgroup: nis files這使得在一個(gè)用戶試圖登錄時(shí),login命令和所有其它類似命令首先查詢NIS maps,如果這個(gè)查找失敗時(shí),再返回使用本地文件。一般來(lái)講,你將從你的本地文件中刪除所有的用戶,而只留下root和象mail一樣的通用帳目。這是因?yàn)槟承┲陵P(guān)重要的系統(tǒng)任務(wù)可能需要將uid映射到用戶名上或者反之。例如,管理用的cron作業(yè)可能會(huì)執(zhí)行su命令來(lái)臨時(shí)變成news,或者UUCP子系統(tǒng)可能要郵寄一個(gè)狀態(tài)報(bào)告。如果news和uucp在本地passwd文件中沒(méi)有條目了,那么在NIS不能使用期間這些作業(yè)將糟糕地失敗。這里有兩個(gè)大告戒:一方面,上面所描述的設(shè)置在這里只適應(yīng)于沒(méi)有使用影子(shadow)口令的登錄狀況,象那些包括在util-linux軟件包中的。與NIS一起使用影子口令的復(fù)雜問(wèn)題將在下面論及。另一方面,登錄命令并不是僅有的訪問(wèn)passwd文件的命令—請(qǐng)看許多人幾乎一直使用的ls命令。每當(dāng)進(jìn)行一次長(zhǎng)列表時(shí),ls將顯示一個(gè)文件的用戶和組的宿主的符號(hào)名;也即,對(duì)于它遇到的每個(gè)uid和gid,它就要查詢NIS服務(wù)器一次。如果你的本地網(wǎng)絡(luò)受到阻塞時(shí)將嚴(yán)重地拖延進(jìn)行的工作,或者更糟糕的是,當(dāng)NIS服務(wù)器不在同一個(gè)物理網(wǎng)絡(luò)上時(shí),數(shù)據(jù)報(bào)還必須通過(guò)路由器傳輸。事情還沒(méi)結(jié)束。想象以下如果一個(gè)用戶想要更改她的口令時(shí)會(huì)發(fā)生什么情況。通常,她會(huì)執(zhí)行passwd,它將讀入新的口令并更新本地passwd文件。對(duì)于 NIS來(lái)說(shuō),這是不可能的,因?yàn)檫@個(gè)文件已不再存在于本地了,但是每當(dāng)用戶想要改變他們的口令時(shí)就讓他們登錄進(jìn)NIS也不是個(gè)選擇。因此,NIS提供了一個(gè)對(duì)passwd的混入替換稱為yppasswd,它用來(lái)在目前的NIS中做類似的工作。為了改變服務(wù)器主機(jī)上的口令,它通過(guò)RPC聯(lián)系那個(gè)主機(jī)上的 yppasswdd后臺(tái)程序,并向它提供更新過(guò)的口令信息。通常,你通過(guò)象這樣做在常規(guī)程序上安裝yppasswd:# cd /bin# mv passwd passwd.old# ln yppasswd passwd與此同時(shí)你必須在服務(wù)器上安裝rpc.yppasswdd并從rc.inet2中啟動(dòng)它。這將對(duì)你的用戶有效地隱藏NIS所帶來(lái)的任何扭曲。10.8 使用支持影子(shadow)的NIS至今還沒(méi)有對(duì)使用影子登錄程序組的站點(diǎn)的NIS支持。John F. Haugh,影子程序組的作者,最近往comp.sources.misc發(fā)布了一個(gè)受GNU庫(kù)的GPL保護(hù)的影子庫(kù)函數(shù)的一個(gè)版本。它對(duì)NIS已經(jīng)有了一些支持,但還不完整,并且這些函數(shù)還沒(méi)有加入到標(biāo)準(zhǔn)C庫(kù)中。另一方面來(lái)講,通過(guò)NIS之類公布來(lái)自于/etc/shadow中的信息是與shadow組件的目的相違背的。盡管NYS口令查找函數(shù)不使用shadow.byname map或任何這類map,NYS還是支持透明地使用一個(gè)本地/etc/shadow文件的。當(dāng)getpwnam的NYS實(shí)現(xiàn)被調(diào)用來(lái)查找與給定的登錄名相關(guān)的信息時(shí),nsswitch.conf中的passwd條目所指定的設(shè)施被檢索。nis服務(wù)將簡(jiǎn)單地在NIS服務(wù)器的passwd.byname map中查找這個(gè)名字。而files服務(wù)將檢查/etc/shadow是否存在,并且如果存在的話,就試著打開(kāi)它。如果不存在的話,或者如果用戶沒(méi)有 root特權(quán)的話,它就返回到只在/etc/passwd中查找用戶信息的傳統(tǒng)的處理方法中。然而,如果shadow文件存在,并且能被打開(kāi)的話,NYS 將從shadow中抽取用戶的口令。getpwuid 函數(shù)也是這樣實(shí)現(xiàn)的。在這種方式下,用NYS編譯的執(zhí)行文件將透明地處理本地影子組件的安裝。10.9 使用傳統(tǒng)的NIS代碼如果你使用目前在標(biāo)準(zhǔn)C庫(kù)中的客戶代碼的話,那么配置一個(gè)NIS客戶就稍微有些不同。一方面,它使用一個(gè)ypbind后臺(tái)程序(daemon)來(lái)廣播查詢運(yùn)行著的服務(wù)器而不是從一個(gè)配置文件中取得(服務(wù)器)信息的。因此,你必須確信在啟動(dòng)期間開(kāi)始運(yùn)行ypbind。它必須在NIS域已被設(shè)置好并且RPC portmapper已啟動(dòng)后才被調(diào)用。此時(shí),上面所示的調(diào)用ypcat進(jìn)行對(duì)服務(wù)器測(cè)試才能工作。最近,有許多有關(guān)NIS出錯(cuò)報(bào)告(bug reports),出錯(cuò)信息說(shuō)“clntudp_create: RPC: portmapper failure – RPC: unable to receive”。這是由于對(duì)ypbind與庫(kù)函數(shù)有關(guān)綁定信息的通信(溝通)方式的不兼容的改動(dòng)。取得最新有關(guān)NIS工具的最新源程序并重新編譯之可以解決這個(gè)問(wèn)題。[5]同樣,傳統(tǒng)的NIS確定是否要和如何將NIS信息與本地文件中的信息合并的方法與NYS中所使用的方法是有偏差的。例如,為了使用NIS口令maps,你必須在/etc/passwd map中包含下列行:+:*:O:O:::這標(biāo)記出口令查找函數(shù)“插入”NIS maps的地方。往/etc/group中插入類似的一行(去掉最后兩個(gè)冒號(hào))會(huì)對(duì)group.* maps做出同樣的事。為了使用NIS分發(fā)的hosts.* maps,只要改動(dòng)host.conf文件中的order一行。例如,如果你要使用NIS、DNS以及/etc/hosts文件(以這個(gè)順序),你必須將這行改成order yp bind hosts目前,傳統(tǒng)的NIS實(shí)現(xiàn)不支持任何其它的maps。