LPI Linux 認證/NIS 配置
權重:1
描述
考生應能夠配置 NIS 伺服器。此目標包括將系統配置為 NIS 客戶端。
- 關鍵知識領域
- NIS 配置檔案、術語和實用程式
- 為主要配置檔案建立 NIS 地圖
- 操作 nsswitch.conf 以配置搜尋本地檔案、DNS、NIS 等的能力。
- 以下是使用的檔案、術語和實用程式的部分列表
- ypbind
- ypcat
- ypmatch
- ypserv
- yppasswd
- yppoll
- yppush
- ypwhich
- rpcinfo
- nsswitch.conf
- ypserv.conf
- /var/yp/* 的內容
- netgroup
- nicknames
- securenets
- Makefile
描述:考生應能夠配置 NIS 伺服器併為主要配置檔案建立 NIS 地圖。此目標包括將系統配置為 NIS 客戶端,設定 NIS 從伺服器,以及配置在 nsswitch.conf 中搜索本地檔案、DNS、NIS 等的能力。
關鍵檔案、術語和實用程式包括
nisupdate, ypbind, ypcat, ypmatch, ypserv, ypswitch, yppasswd, yppoll, yppush, ypwhich, rpcinfo nis.conf, nsswitch.conf, ypserv.conf /etc/nis/netgroup /etc/nis/nicknames /etc/nis/securenets
NIS 代表網路資訊服務。它的目的是向網路上的所有機器提供必須在整個網路中已知的資訊。NIS 可能分發的資訊是登入名/密碼/主目錄 (/etc/passwd) 和組資訊 (/etc/group)
例如,如果您的密碼條目記錄在 NIS passwd 資料庫中,您將能夠登入到網路上執行 NIS 客戶端程式的所有機器上。
在網路內,必須至少有一臺機器充當 NIS 伺服器。您可以有多個 NIS 伺服器,每個伺服器服務不同的 NIS“域”——或者您可以擁有合作的 NIS 伺服器,其中一個伺服器是主 NIS 伺服器,而所有其他伺服器是所謂的從 NIS 伺服器(對於某個 NIS“域”來說!),或者您可以將它們混合起來...
從伺服器僅擁有 NIS 資料庫的副本,並在主 NIS 伺服器的資料庫發生更改時從主 NIS 伺服器接收這些副本。根據網路中機器的數量和網路的可靠性,您可能決定安裝一個或多個從伺服器。每當 NIS 伺服器關閉或響應請求過慢時,連線到該伺服器的 NIS 客戶端將嘗試找到一個處於活動狀態或速度更快的伺服器。
NIS 資料庫採用所謂的 DBM 格式,源自 ASCII 資料庫。例如,檔案 /etc/passwd 和 /etc/group 可以使用 ASCII 到 DBM 轉換軟體(“makedbm”,包含在伺服器軟體中)直接轉換為 DBM 格式。主 NIS 伺服器應同時具有 ASCII 資料庫和 DBM 資料庫。
從伺服器將收到對 NIS 地圖的任何更改的通知(透過“yppush”程式),並自動檢索必要的更改以同步其資料庫。NIS 客戶端不需要執行此操作,因為它們始終與 NIS 伺服器通訊以讀取其 DBM 資料庫中儲存的資訊。
要執行下面提到的任何軟體,您需要執行程式 /usr/sbin/portmap。RPC 埠對映器 (portmap(8)) 是一個將 RPC 程式號轉換為 TCP/IP(或 UDP/IP)協議埠號的伺服器。它必須執行才能對該機器上的 RPC 伺服器(如 NIS 或 NIS+ 伺服器)進行 RPC 呼叫(這是 NIS/NIS+ 客戶端軟體所做的)。當 RPC 伺服器啟動時,它會告訴 portmap 它正在監聽哪個埠號以及它準備提供哪些 RPC 程式號。當客戶端希望對給定程式號進行 RPC 呼叫時,它將首先與伺服器機器上的 portmap 聯絡以確定應將 RPC 資料包傳送到的埠號。
由於 RPC 伺服器可能由 inetd(8) 啟動,因此 portmap 應該在 inetd 啟動之前執行。對於安全 RPC,埠對映器需要時間服務。請確保在所有主機上的 /etc/inetd.conf 中啟用時間服務
# Time service is used for clock synchronization. # time stream tcp nowait root internal time dgram udp wait root internal
重要:不要忘記在對其配置檔案進行更改後重新啟動 inetd!
設定 NIS 需要什麼?
確定您是伺服器、從伺服器還是客戶端:您的機器將成為具有現有 NIS 伺服器的網路的一部分,您的網路中還沒有任何 NIS 伺服器
在第一種情況下,您只需要客戶端程式(ypbind、ypwhich、ypcat、yppoll、ypmatch)。最重要的程式是 ypbind。此程式必須始終執行,這意味著它應該始終出現在程序列表中。它是一個守護程序,需要從系統的啟動檔案(例如 /etc/init.d/nis、/sbin/init.d/ypclient、/etc/rc.d/init.d/ypbind、/etc/rc.local)啟動。一旦 ypbind 執行,您的系統就成為了 NIS 客戶端。
在第二種情況下,如果您沒有 NIS 伺服器,那麼您還需要一個 NIS 伺服器程式(通常稱為 ypserv)。第 9 節描述瞭如何在您的 Linux 機器上使用“ypserv”守護程序設定 NIS 伺服器。
ypbind 守護程序
較新的 ypbind 版本有一個名為 /etc/yp.conf 的配置檔案。您可以在其中硬編碼 NIS 伺服器——有關更多資訊,請參閱 ypbind(8) 的手冊頁。您還需要此檔案才能使用 NYS。一個示例
ypserver 10.10.0.1 ypserver 10.0.100.8 ypserver 10.3.1.1
如果系統可以在沒有 NIS 的情況下解析主機名,您可以使用名稱,否則您必須使用 IP 地址。ypbind 3.3 存在一個錯誤,只會使用最後一個條目(示例中的 ypserver 10.3.1.1)。所有其他條目將被忽略。ypbind-mt 正確地處理這個問題,並使用第一個響應的條目。
在將 ypbind 整合到啟動檔案中之前,最好先對其進行測試。要測試 ypbind,請執行以下操作
確保您已設定 YP 域名。如果未設定,則發出以下命令:/bin/domainname nis.domain
其中 nis.domain 應是與機器的 DNS 域名無關的字串!這樣做的原因是,它可以使外部破解者更難從您的 NIS 伺服器檢索密碼資料庫。如果您不知道網路上的 NIS 域名是什麼,請詢問您的系統/網路管理員。
啟動“/usr/sbin/portmap”(如果尚未執行)。如果目錄“/var/yp”不存在,請建立它。啟動“/usr/sbin/ypbind”
使用命令“rpcinfo -p localhost”檢查 ypbind 是否能夠向埠對映器註冊其服務。輸出應類似於
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100007 2 udp 637 ypbind
100007 2 tcp 639 ypbind
或者像這樣(取決於您使用的 ypbind 版本)
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100007 2 udp 758 ypbind
100007 1 udp 758 ypbind
100007 2 tcp 761 ypbind
100007 1 tcp 761 ypbind
您也可以執行“rpcinfo -u localhost ypbind”。此命令應產生類似於以下內容的結果
program 100007 version 1 ready and waiting
program 100007 version 2 ready and waiting
輸出取決於您安裝的 ypbind 版本。重要的是隻有“版本 2”訊息。此時,您應該能夠使用 NIS 客戶端程式(如 ypcat 等)... 例如,“ypcat passwd.byname”將為您提供整個 NIS 密碼資料庫。
重要:如果您跳過了測試過程,請確保您已設定域名並建立了目錄 /var/yp。此目錄必須存在才能使 ypbind 成功啟動。要檢查域名是否設定正確,請使用 yp-tools 2.2 中的 /bin/ypdomainname。它使用 yp_get_default_domain() 函式,該函式限制性更強。例如,它不允許使用“(none)”域名,這是 Linux 下的預設值,並且會產生很多問題。
如果測試成功,您現在可能想要更改您的 startupd 檔案,以便在引導時啟動 ypbind,並且您的系統將充當 NIS 客戶端。確保在啟動 ypbind 之前設定域名。好了,就是這樣。重新啟動機器並觀察引導訊息,以檢視 ypbind 是否實際啟動。對於主機查詢,您必須在 /etc/host.conf 檔案中將“nis”設定(或新增)到查詢順序行。有關更多詳細資訊,請閱讀手冊頁“resolv+.8”。在 NIS 客戶端上的 /etc/passwd 中新增以下行
+::::::
您還可以使用 + 和 - 字元來包含/排除或更改使用者。如果您要排除使用者 guest,只需在您的 /etc/passwd 檔案中新增 -guest。您要為使用者“linux”使用不同的 shell(例如 ksh)?沒問題,只需將“+linux::::::/bin/ksh”(不帶引號)新增到您的 /etc/passwd 中。您不想更改的欄位必須留空。您也可以使用 Netgroups 進行使用者控制。
例如,要只允許 miquels、dth 和 ed 以及 sysadmin netgroup 的所有成員登入訪問,但使所有其他使用者的帳戶資料可用,請使用
+miquels:::::::
+ed:::::::
+dth:::::::
+@sysadmins:::::::
-ftp
+:*::::::/etc/NoShell
請注意,在 Linux 中,您也可以覆蓋密碼欄位,就像我們在本例中所做的那樣。我們還刪除了登入“ftp”,因此它不再已知,匿名 ftp 將不起作用。netgroup 將如下所示
sysadmins (-,software,) (-,kukuk,)
網路服務切換檔案 /etc/nsswitch.conf 決定了當請求特定資訊時執行查詢的順序,就像 /etc/host.conf 檔案決定執行主機查詢的方式一樣。
hosts: files nis dns
例如,這行
指定主機查詢函式應首先查詢本地 /etc/hosts 檔案,然後進行 NIS 查詢,最後透過域名服務 (/etc/resolv.conf 和 named),如果未找到匹配項,則返回錯誤。此檔案必須對每個使用者可讀!您可以在手冊頁 nsswitch.5 或 nsswitch.conf.5 中找到更多資訊。
# /etc/nsswitch.conf passwd: compat group: compat
# For libc5, you must use shadow: files nis shadow: compat passwd_compat: nis group_compat: nis shadow_compat: nis hosts: nis files dns services: nis [NOTFOUND=return] files networks: nis [NOTFOUND=return] files protocols: nis [NOTFOUND=return] files rpc: nis [NOTFOUND=return] files ethers: nis [NOTFOUND=return] files netmasks: nis [NOTFOUND=return] files netgroup: nis bootparams: nis [NOTFOUND=return] files publickey: nis [NOTFOUND=return] files automount: files aliases: nis [NOTFOUND=return] files
適用於 NIS 的良好 /etc/nsswitch.conf 檔案是
設定 NIS 伺服器伺服器程式 ypserv
如果您將伺服器作為主伺服器執行,請確定需要透過 NIS 提供哪些檔案,然後將相應的條目新增到 /var/yp/Makefile 中的 "all" 規則中。您應該始終檢視 Makefile 並編輯檔案開頭的 Options。
ypserv 1.1 和 ypserv 1.2 之間有一個重大變化。從 1.2 版本開始,檔案控制代碼被快取。這意味著,如果建立新對映,則必須始終使用 -c 選項呼叫 makedbm。確保使用 ypserv 1.2 或更高版本中的新 /var/yp/Makefile,或在 Makefile 中將 -c 標誌新增到 makedbm。如果您不這樣做,ypserv 將繼續使用舊對映,而不是更新後的對映。
現在編輯 /var/yp/securenets 和 /etc/ypserv.conf。有關更多資訊,請閱讀 ypserv(8) 和 ypserv.conf(5) 手冊頁。
program 100004 version 1 ready and waiting program 100004 version 2 ready and waiting
確保埠對映器 (portmap(8)) 正在執行,並啟動伺服器 ypserv。命令 « rpcinfo -u localhost ypserv » 應輸出類似於
的輸出。根據您使用的 ypserv 版本和配置,"version 1" 行可能缺失。只有在您有舊的 SunOS 4.x 客戶端時,它才是必需的。
% /usr/lib/yp/ypinit -m
現在生成 NIS (YP) 資料庫。在主伺服器上,執行
在從伺服器上,確保 ypwhich -m 可用。這意味著,您必須在執行 « /usr/lib/yp/ypinit -s masterhost » 以將主機安裝為 NIS 從伺服器之前,將您的從伺服器配置為 NIS 客戶端。就這樣,您的伺服器已經啟動並執行。
如果您遇到更大的問題,您可以在不同的 xterm 中以除錯模式啟動 ypserv 和 ypbind。除錯輸出應顯示問題所在。
20 * * * * /usr/lib/yp/ypxfr_1perhour
40 6 * * * /usr/lib/yp/ypxfr_1perday
55 6,18 * * * /usr/lib/yp/ypxfr_2perday
如果需要更新對映,請在 NIS 主伺服器上的 /var/yp 目錄中執行 make。如果原始檔更新,這將更新對映,並將檔案推送到從伺服器。請不要使用 ypinit 來更新對映。您可能希望編輯從伺服器上的 root 的 crontab *,並新增以下行
這將確保大多數 NIS 對映保持最新,即使由於從伺服器在主伺服器上進行更新時處於關閉狀態而錯過了更新。您可以在以後的任何時間新增從伺服器。首先,確保新的從伺服器有權聯絡 NIS 主伺服器。然後在新的從伺服器上執行
% /usr/lib/yp/ypinit -s masterhost
在主伺服器上,將新的從伺服器名稱新增到 /var/yp/ypservers,並在 /var/yp 中執行 make 以更新對映。
rpc.ypxfrd 用於加速將非常大的 NIS 對映從 NIS 主伺服器傳輸到 NIS 從伺服器。如果 NIS 從伺服器收到有關存在新對映的訊息,它將啟動 ypxfr 以傳輸新對映。ypxfr 將使用 yp_all() 函式從主伺服器讀取對映的內容。當必須透過資料庫庫儲存非常大的對映時,此過程可能需要幾分鐘。
rpc.ypxfrd 伺服器透過允許 NIS 從伺服器簡單地複製主伺服器的對映檔案,而不是從頭開始構建自己的對映檔案,從而加快了傳輸過程。rpc.ypxfrd 使用基於 RPC 的檔案傳輸協議,因此無需構建新對映。
rpc.ypxfrd 可以由 inetd 啟動。但由於它啟動速度很慢,因此應與 ypserv 一起啟動。您只需要在 NIS 主伺服器上啟動 rpc.ypxfrd。
每當使用者更改密碼時,NIS 密碼資料庫以及可能依賴於 NIS 密碼資料庫的其他 NIS 資料庫都應該更新。程式 "rpc.yppasswdd" 是一個處理密碼更改並確保相應更新 NIS 資訊的伺服器。rpc.yppasswdd 現在已整合到 ypserv 中。您不需要舊的、單獨的 yppasswd-0.9.tar.gz 或 yppasswd-0.10.tar.gz,也不應該再使用它們。ypserv 1.3.2 中的 rpc.yppasswdd 具有完整的 shadow 支援。yppasswd 現在是 yp-tools-2.2.tar.gz 的一部分。
您只需要在 NIS 主伺服器上啟動 rpc.yppasswdd。預設情況下,不允許使用者更改他們的全名或登入 shell。可以使用 -e chfn 或 -e chsh 選項允許這樣做。如果您的 passwd 和 shadow 檔案不在 /etc 以外的目錄中,則需要新增 -D 選項。例如,如果您將所有原始檔放在 /etc/yp 中,並且希望允許使用者更改其 shell,則需要使用以下引數啟動 rpc.yppasswdd
rpc.yppasswdd -D /etc/yp -e chsh
或
rpc.yppasswdd -s /etc/yp/shadow -p /etc/yp/passwd -e chsh
無需再執行任何操作。您只需要確保 rpc.yppasswdd 使用與 /var/yp/Makefile 相同的檔案。錯誤將使用 syslog 記錄。
如果一切正常(應該如此),您可以使用一些簡單的命令驗證安裝。例如,假設您的 passwd 檔案由 NIS 提供,則命令
% ypcat passwd
應為您提供 NIS passwd 檔案的內容。命令
% ypmatch userid passwd
(其中 userid 是任意使用者的登入名)應為您提供使用者在 NIS passwd 檔案中的條目。 "ypcat" 和 "ypmatch" 程式應該包含在您傳統的 NIS 或 NYS 分發版中。在伺服器和客戶端上正確配置 NIS 後,您需要確保配置能夠在重新引導後繼續生效。在 RedHat 上,建立或修改檔案 /etc/sysconfig/network 中的 NISDOMAIN 變數。