# 14.3 NIS Client 端的設定
## 14.3 NIS Client 端的設定
我們知道網絡聯機是雙向的,所以 NIS server 提供數據庫檔案,NIS client 當然也需要提供一些聯機的軟件啰!這個聯機的軟件就是 ypbind 啦!此外,如同[圖 14.1-1](#fig14.1-1) 的介紹,在 NIS client 端有登入需求時,NIS client 基本上還是先搜尋自己的 /etc/passwd, /etc/group 等數據后才再去找 NIS server 的數據庫啊!所以 NIS client 最好能夠將本身的賬號密碼刪除到僅剩下系統賬號,亦即 UID, GID 均小于 500 以下的賬號即可, 如此一來既可讓系統執行無誤,也能夠讓登入者的信息完全來自 NIS server ,比較單純啦!
**Tips:** 事實上,你想要讓 NIS 服務器寫入的各項賬號數據都在 NIS server 的 /var/yp/Makefile 那個檔案設定的! 你可以進入該檔案搜尋一下 UID 就知道了! ^\_^

- - - - - -
### 14.3.1 NIS client 所需軟件與軟件結構
NIS client 端所需要的軟件僅有:
- ypbind
- yp-tools
yp-tools 是提供查詢的軟件,至于 ypbind 則是與 ypserv 互相溝通的客戶端聯機軟件啦! 另外,在 CentOS 當中我們還有很多配置文件是與認證有關的,包含 ypbind 的配置文件時, 在設定 NIS client 你可能需要動到底下的檔案:
- /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 數據庫;
另外, NIS 還提供了幾個有趣的程序給 NIS 客戶端來進行賬號相關參數的修改,例如密碼、shell 等等, 主要有底下這幾個指令:
- /usr/bin/yppasswd :更改你在 NIS database (NIS Server 所制作的數據庫) 的密碼
- /usr/bin/ypchsh :同上,但是是更改 shell
- /usr/bin/ypchfn :同上,但是是更改一些用戶的訊息!
OK!那么底下就讓我們開始來設定 NIS 客戶端吧!^\_^
- - - - - -
### 14.3.2 NIS client 的設定與啟動
啟動 NIS client 的設定就簡單多了!最主要是加入 NIS domain 當中,然后再啟動 ypbind 即可。 雖然你可以手動去修改所有的配置文件,然而近期以來的 Linux distributions 賬號處理機制越來越復雜, 所以如果你想要手動修改所有配置文件,恐怕會瘋掉的~因此,這里建議你使用系統提供的工具來設定, 至于一些重要配置文件,最后有機會再去參考一下即可。
那么 CentOS 6.x 提供了什么好用的管理工具呢?很簡單,就利用 setup 這個指令即可!輸入 setup 就會出現如下的圖示, 然后依序這么處理就好了呦!

圖 14.3-1、利用 setup 進入 authconfig 認證項目
記得在出現上圖 14.3-1 后,選擇認證設定,如果是出現英文的話,那么你就得要選擇『Authentication configuration』的項目,之后就會進入下面的畫面:

圖 14.3-2、進入 authconfig 之后,選擇 NIS 項目
因為我們要用 NIS 作為登入者身份驗證的機制,因此就得要選擇 NIS 項目,如果是英文的話,得要選擇『Use NIS』項目即可。

圖 14.3-3、填寫 NIS 領域以及 NIS 服務器的 IP 即可
最后再填寫 NIS 網域 (Domain) 以及 NIS 服務器的 IP (Server),按下確定即可。如果系統很快的就跳回圖 14.3-1 的畫面, 代表你的設定理論上是沒有問題的。如果一直卡在如下的畫面中:
```
正在激活 rpcbind: [ 確定 ]
正在關閉 NIS 服務: [ 確定 ]
正在啟動 NIS 服務: [ 確定 ]
正在綁定 NIS 服務:....... <==這里一直卡住,沒辦法結束
```
上述的數據就是出問題啦!那代表你的 NIS client 沒有辦法連接上 NIS server,最常發生的就是服務器的防火墻忘記放行,或者是你客戶端輸入服務器 IP 時,打錯數字了~ 那也是很常發生的錯誤啦!這時請自行去修改一番吧!那么這個 setup 到底做了什么修改呢?我們也來看看幾個被改掉的重要配置文件吧:
```
[root@clientlinux ~]# cat /etc/sysconfig/network
HOSTNAME=clientlinux.centos.vbird
NETWORKING=yes
GATEWAY=192.168.100.254
NISDOMAIN=vbirdnis <==這個玩意兒會主動的被建立起來
[root@clientlinux ~]# cat /etc/yp.conf
....(前面省略)....
domain vbirdnis server 192.168.100.254 <==主動建立這玩意兒~
[root@clientlinux ~]# vim /etc/nsswitch.conf
passwd: files nis
shadow: files nis
group: files nis
hosts: files nis dns
# 上面幾個項目是比較重要的,包括身份參數、密碼、群組名、主機名與 IP 對應數據等。
# 你會看到,每個項目后面都會接著 nis ,所以 nis 有被支持啰!
```
因為更動到的檔案實在太多了,所以鳥哥還是建議使用 setup 來調整即可。但是,如果你真的想要手動處理的話, 那么你必須要手動的修改底下這些檔案:
- /etc/sysconfig/network (加入 NISDOMAIN 項目)
- /etc/nsswitch.conf (修改許多主機驗證功能的順序)
- /etc/sysconfig/authconfig (CentOS 的認證機制)
- /etc/pam.d/system-auth (許多登入所需要的 PAM 認證過程)
- /etc/yp.conf (亦即是 ypbind 的配置文件)
- - \*
### 14.3.3 NIS client 端的檢驗: yptest, ypwhich, ypcat
如何確定 NIS client 已經連上 NIS server 呢?基本上,只要剛剛使用 setup 去設定時,最后的步驟并沒有被卡住, 那應該就是順利成功啦!該步驟會自動啟動 rpcbind 與 ypbind 兩個服務呦!那如何確認數據傳送是正確的? 簡單的要命啊!你可以利用 id 這個指令直接檢查 NIS server 有的,但是 NIS client 沒有的賬號,如果有出現該賬號的相關 UID/GID 信息時,那表示數據傳輸也是正確的。 除此之外,我們還可以透過 NIS 提供的相關檢驗功能來檢查喔!底下分別來瞧一瞧:
- 利用 yptest 檢驗數據庫之測試:
直接在 NIS client 輸入 yptest 即可檢查相關的測試數據,如下所示:
```
[root@clientlinux ~]# yptest
Test 1: domainname
Configured domainname is "vbirdnis"
Test 2: ypbind
Used NIS server: www.centos.vbird
Test 3: yp_match
WARNING: No such key in map (Map passwd.byname, key nobody)
....(中間省略)....
Test 6: yp_master
www.centos.vbird
....(中間省略)....
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 上頭的所有帳戶信息,如果有出現賬號相關數據的話,那么應該就算驗證成功了!
**Tips:** 比較有問題的是第三步驟,他會出現在 passwd.byname 當中找不到 nobody 的字樣。這是因為早期的 nobody 之 UID 都設定在 65534 ,但 CentOS 則將 nobody 設定為系統賬號的 99 ,所以當然不會被記錄,也就出現這一個警告。不過,這個錯誤是可忽略的啦!

- 利用 ypwhich 檢驗數據庫數量
單純使用 ypwhich 的時候顯示的是『NIS Client 的 domain』名稱,而當加入 -x 這個參數時, 則是顯示『NIS Client 與 Server 之間溝通的數據庫有哪些?』你可以這樣測試哩!
```
[root@clientlinux ~]# ypwhich -x
Use "hosts" for map "hosts.byname"
Use "group" for map "group.byname"
Use "passwd" for map "passwd.byname"
....(以下省略)....
```
由上面我們可以很清楚的就看到相關的檔案啦!這些數據庫檔案則是放置在我的 NIS Server 的 /var/yp/vbirdnis/\* 里面啰!
- 利用 ypcat 讀取數據庫內容
除了 yptest 之外,你還可以直接利用 ypcat 讀取數據庫的內容喔!一般作法是這樣:
```
[root@clientlinux ~]# ypcat [-h nisserver] [數據庫名稱]
選項與參數:
-h nisserver :如果有設定的話,指向某一部特定的 NIS 服務器,
如果沒有指定的話,就以 ypbind 之設定為主;
數據庫名稱:亦即在 /var/yp/vbirdnis/ 內的檔名啊!例如 passwd.byname
# 讀出 passwd.byname 的數據庫內容
[root@clientlinux ~]# ypcat passwd.byname
```
這三個指令在進行 NIS Client 端的檢驗時,是相當有用的喔!不要忽略了他的存在啊!尤其是剛架設好 NIS Client 時,一定要使用 yptest 去檢查看看有沒有設定錯誤喔!根據屏幕顯示的訊息去一個一個校正錯誤才行啊!
- - - - - -
### 14.3.4 使用者參數修改: yppasswd, ypchfn, ypchsh
好了,完成了上述的設定后,你的 NIS server/client 的賬號已經同步了!真是高興不是嗎? 不過,還有個挺大的問題,那就是...使用者如何在 NIS client 修改他自己的登入參數,例如密碼、shell 等等? 因為 NIS client 是藉由數據庫來取得用戶的賬號密碼,那如何在 NIS 客戶端處理賬號密碼的訂正?
問的好!這也是為何我們需要在 NIS server 啟動 yppasswdd 這支服務的主要用意! 因為 yppasswdd 可以接收 NIS client 端傳來的密碼修改,藉此而處理 NIS server 的 /etc/passwd, /etc/shadow , 然后 yppasswdd 還能夠重建密碼數據庫,讓 NIS server 同步更新數據庫!真是很不錯啊! ^\_^
那該如何下達指令呢?很簡單啊!透過 yppasswd, ypchsh, ypchfn 來處理即可。這三個指令的對應是:
- yppasswd :與 passwd 指令相同功能;
- ypchfn :與 chfn 相同功能;
- ypchsh :與 chsh 相同功能。
因為功能相當,所以鳥哥這里僅說明一下 yppasswd 而已。假設你已經登入 NIS client 那部主機, 并且是以 nisuser1 這個使用者登入的,記住,這個用戶相關數據僅在 NIS server 上。 接下來,這個使用者可以下達 yppasswd ,如下所示:
```
[root@clientlinux ~]# grep nisuser /etc/passwd <==不會出現任何訊息,因為無此賬號
[root@clientlinux ~]# su - nisuser1 <==直接切換身份看看!
su: warning: cannot change directory to /home/nisuser1: No such file or directory
-bash-4.1$ id
uid=1001(nisuser1) gid=1001(nisuser1) groups=1001(nisuser1)
# 因為我們 client.centos.vbird 僅有帳戶信息,并沒有用戶家目錄,
# 所以就會出現如上的警告,因此才需要用 id 驗證,并且需要加掛 NFS 嘛!
# 仔細看,現在的身份確實是 nisuser1 喔!確實有連上 NIS server 啦!
-bash-4.1$ yppasswd
Changing NIS account information for nisuser1 on www.centos.vbird.
Please enter old password: <==這里輸入舊密碼
Changing NIS password for nisuser1 on www.centos.vbird.
Please enter new password: <==這里輸入新密碼
Please retype new password: <==再輸入一遍
The NIS password has been changed on www.centos.vbird.
-bash-4.1$ exit
```
嘿嘿!如何,這樣就更新了 NIS server 上頭的 /etc/shadow 以及 /var/yp/vbirdnis/passwd.by\* 的數據庫, 簡單吧!一下子就同步化了。不過,如果要教育使用者使用 yppasswd 的話,他可能不太能適應, 不要緊,你可以透過修改 alias 或者是置換掉 /usr/bin/passwd 這支程序即可!那現在讓我們回到 NIS 服務器端看看真的有更動到數據庫嗎?
```
[root@www ~]# ll /var/yp/vbirdnis/
-rw-------. 1 root root 13836 Jul 28 13:10 netid.byname
-rw-------. 1 root root 14562 Jul 28 13:29 passwd.byname
-rw-------. 1 root root 14490 Jul 28 13:29 passwd.byuid
-rw-------. 1 root root 28950 Jul 28 13:10 protocols.byname
# 仔細看,就是那個密碼檔案被更動過~時間已經不一樣了!再看看登錄檔吧!
[root@www ~]# tail /var/log/messages
Jul 28 13:29:14 www rpc.yppasswdd[1707]: update nisuser1 (uid=1001) from host
192.168.100.10 successful.
```
最終從登錄檔里面,我們也能夠得到相關的記錄!這樣就非常完美啦! ^\_^
- - - - - -
- 鳥哥的Linux私房菜:服務器架設篇 第三版
- 第一部份:架站前的進修專區
- 作者序
- 第一章、架設服務器前的準備工作
- 1.1 前言: Linux 有啥功能
- 1.2 基本架設服務器流程
- 1.3 自我評估是否已經具有架站的能力
- 1.4 本章習題
- 第二章、基礎網絡概念
- 2.1 網絡是個什么玩意兒
- 2.2 TCP/IP 的鏈結層相關協議
- 2.3 TCP/IP 的網絡層相關封包與數據
- 2.4 TCP/IP 的傳輸層相關封包與數據
- 2.5 連上 Internet 前的準備事項
- 2.6 重點回顧:
- 2.7 本章習題
- 2.8 參考數據與延伸閱讀
- 第三章、局域網絡架構簡介
- 3.1 局域網絡的聯機
- 3.2 本書使用的內部聯機網絡參數與通訊協議
- 第四章、連上 Internet
- 4.1 Linux 連上 Internet 前的注意事項
- 4.2 連上 Internet 的設定方法
- 4.3 無線網絡--以筆記本電腦為例
- 4.4 常見問題說明
- 4.5 重點回顧
- 4.6 本章習題
- 4.7 參考數據與延伸閱讀
- 第五章、 Linux 常用網絡指令
- 5.1 網絡參數設定使用的指令
- 5.2 網絡偵錯與觀察指令
- 5.3 遠程聯機指令與實時通訊軟件
- 5.4 文字接口網頁瀏覽
- 5.5 封包擷取功能
- 5.6 重點回顧
- 5.7 本章習題
- 5.8 參考數據與延伸閱讀
- 第六章、 Linux 網絡偵錯
- 6.1 無法聯機原因分析
- 6.2 處理流程
- 6.3 本章習題
- 6.4 參考數據與延伸閱讀
- 第二部分:主機的簡易資安防護措施
- 第七章、網絡安全與主機基本防護:限制端口, 網絡升級與 SELinux
- 7.1 網絡封包聯機進入主機的流程
- 7.2 網絡自動升級軟件
- 7.3 限制聯機埠口 (port)
- 7.4 SELinux 管理原則
- 7.5 被攻擊后的主機修復工作
- 7.6 重點回顧
- 7.7 課后練習
- 7.8 參考數據與延伸閱讀
- 第八章、路由觀念與路由器設定
- 8.1 路由
- 8.2 路由器架設
- 8.3 動態路由器架設:quagga (zebra + ripd)
- 8.4 特殊狀況:路由器兩邊界面是同一個 IP 網段: ARP Proxy
- 8.5 重點回顧
- 8.6 本章習題
- 8.7 參考數據與延伸閱讀
- 第九章、防火墻與 NAT 服務器
- 9.1 認識防火墻
- 9.2 TCP Wrappers
- 9.3 Linux 的封包過濾軟件:iptables
- 9.4 單機防火墻的一個實例
- 9.5 NAT 服務器的設定
- 9.6 重點回顧
- 9.7 本章習題
- 9.8 參考數據與延伸閱讀
- 第十章、申請合法的主機名
- 10.1 為何需要主機名
- 10.2 注冊一個合法的主機名
- 10.3 重點回顧
- 10.4 本章習題
- 10.5 參考數據與延伸閱讀
- 第三部分:局域網絡內常見的服務器架設
- 第十一章、遠程聯機服務器SSH / XDMCP / VNC / RDP
- 11.1 遠程聯機服務器
- 11.2 文字接口聯機服務器: SSH 服務器
- 11.3 最原始圖形接口: Xdmcp 服務的啟用
- 11.4 華麗的圖形接口: VNC 服務器
- 11.5 仿真的遠程桌面系統: XRDP 服務器
- 11.6 SSH 服務器的進階應用
- 11.7 重點回顧
- 11.8 本章習題
- 11.9 參考數據與延伸閱讀
- 第十二章、網絡參數控管者: DHCP 服務器
- 12.1 DHCP 運作的原理
- 12.2 DHCP 服務器端的設定
- 12.3 DHCP 客戶端的設定
- 12.4 DHCP 服務器端進階觀察與使用
- 12.5 重點回顧
- 12.6 本章習題
- 12.7 參考數據與延伸閱讀
- 第十三章、文件服務器之一:NFS 服務器
- 13.1 NFS 的由來與其功能
- 13.2 NFS Server 端的設定
- 13.3 NFS 客戶端的設定
- 13.4 案例演練
- 13.5 重點回顧
- 13.6 本章習題
- 13.7 參考數據與延伸閱讀
- 第十四章、賬號控管: NIS 服務器
- 14.1 NIS 的由來與功能
- 14.2 NIS Server 端的設定
- 14.3 NIS Client 端的設定
- 14.4 NIS 搭配 NFS 的設定在叢集計算機上的應用
- 14.5 重點回顧
- 14.6 本章習題
- 14.7 參考數據與延伸閱讀
- 第十五章、時間服務器: NTP 服務器
- 15.1 關于時區與網絡校時的通訊協議
- 15.2 NTP 服務器的安裝與設定
- 15.3 客戶端的時間更新方式
- 15.4 重點回顧
- 15.5 本章習題
- 15.6 參考數據與延伸閱讀
- 第十六章、文件服務器之二: SAMBA 服務器
- 16.1 什么是 SAMBA
- 16.2 SAMBA 服務器的基礎設定
- 16.3 Samba 客戶端軟件功能
- 16.4 以 PDC 服務器提供賬號管理
- 16.5 服務器簡單維護與管理
- 16.6 重點回顧
- 16.7 本章習題
- 16.8 參考數據與延伸閱讀
- 第十七章、區網控制者: Proxy 服務器
- 17.1 什么是代理服務器 (Proxy)
- 17.2 Proxy 服務器的基礎設定
- 17.3 客戶端的使用與測試
- 17.4 服務器的其他應用設定
- 17.5 重點回顧
- 17.6 本章習題
- 17.7 參考數據與延伸閱讀
- 第十八章、網絡驅動器裝置: iSCSI 服務器
- 18.1 網絡文件系統還是網絡驅動器
- 18.2 iSCSI target 的設定
- 18.3 iSCSI initiator 的設定
- 18.4 重點回顧
- 18.5 本章習題
- 18.6 參考數據與延伸閱讀
- 第四部分:常見因特網服務器架設
- 第十九章、主機名控制者: DNS 服務器
- 19.1 什么是 DNS
- 19.2 Client 端的設定
- 19.3 DNS 服務器的軟件、種類與 cache only DNS 服務器設定
- 19.4 DNS 服務器的詳細設定
- 19.5 協同工作的 DNS: Slave DNS 及子域授權設定
- 19.6 DNS 服務器的進階設定
- 19.7 重點回顧
- 19.8 本章習題
- 19.9 參考數據與延伸閱讀
- 第二十章、WWW 伺服器
- 20.1 WWW 的簡史、資源以及伺服器軟體
- 20.2 WWW (LAMP) 伺服器基本設定
- 20.3 Apache 伺服器的進階設定
- 20.4 登錄檔分析以及 PHP 強化模組
- 20.5 建立連線加密網站 (https) 及防砍站腳本
- 20.6 重點回顧
- 20.7 本章習題
- 20.8 參考資料與延伸閱讀
- 第二十一章、文件服務器之三: FTP 服務器
- 21.1 FTP 的數據鏈路原理
- 21.2 vsftpd 服務器基礎設定
- 21.3 客戶端的圖形接口 FTP 聯機軟件
- 21.4 讓 vsftpd 增加 SSL 的加密功能
- 21.5 重點回顧
- 21.6 本章習題
- 21.7 參考數據與延伸閱讀
- 第二十二章、郵件服務器: Postfix
- 22.1 郵件服務器的功能與運作原理
- 22.2 MTA 服務器: Postfix 基礎設定
- 22.3 MRA 服務器: dovecot 設定
- 22.4 MUA 軟件:客戶端的收發信軟件
- 22.5 郵件服務器的進階設定
- 22.6 重點回顧
- 22.7 本章習題
- 22.8 參考數據與延伸閱讀