有沒有想過,如果我有十部 Linux 主機,這十部主機僅負責不同的功能,事實上,所有的主機帳號與對應的密碼都相同!那麼我是將帳號與密碼分別設定置在十部電腦上面,還是可以透過一部主機做為帳號管理的功能,然後其他的主機只要當用戶用登入時,就必須要到管理帳號的主機上面確認其帳號與密碼呢?哪一個比較方便而且靈活?當然是找一個帳號管理的主機比較方便的多啦!如果有使用者要修改密碼,不必要去到十部主機修改密碼啦!只要到主要管理主機去修改,其他的主機根本就不需要更動!哈哈!輕鬆又愉快呢!這個功能的達成有很多的方式,在這裡,我們介紹一個很簡單的方式,那就是 Network Information Service 這個 NIS 伺服器的架設啦! |
[root@test
root]# /etc/rc.d/init.d/portmap start
[root@test root]# netstat -tl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:sunrpc *:* LISTEN # 如果看到 sunrpc 的話,就表示啟動成功了! [root@test root]# chkconfig --level 35 portmap on # 上面這一行在設定 portmap 在 run-level 為 3, 5 的時候就開機時啟動! |
[root@test
root]# vi /etc/xinetd.d/time
# 找到底下這一行: disable = yes # 將他改成 disable = no # 儲存後離開 [root@test root]# vi /etc/xinetd.d/time-udp # 同樣的將 disable = yes 改成 disable = no 即可! [root@test root]# /etc/rc.d/init.d/xinetd restart [root@test root]# netstat -utl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:time *:* LISTEN tcp 0 0 *:sunrpc *:* LISTEN udp 0 0 *:time *:* udp 0 0 *:sunrpc *:* |
1. 建立 NIS
的領域名稱 (我這裡是設定為 cluster ):
[root@test root]# nisdomainname cluster [root@test root]# vi /etc/rc.d/rc.local # 將底下這一行加入這個檔案的最後一行內: /bin/nisdomainname cluster 2. 設定好網路參數: [root@test root]# vi /etc/sysconfig/network # 加入底下這一行: NISDOMAIN=cluster |
<設定項目>:<設定項目的值> |
[root@test
root]# vi /etc/ypserv.conf
files: 30 # 這說的是『有多少資料庫檔案(database file)會被先讀進快取記憶體當中』 # 的意思,一般來說, 30 是已經很足夠的數值了,不需要更動他; trusted_master: your.master.servers.name xfr_check_port: yes # 上面這兩個都僅與 Master + Slave 架構有關的設定值,一般來說, # 只有一部主要 NIS Server 的系統中是用不到這兩個設定值的! # 如果你的 NIS 是 slave 的架構,那麼需要指定一部 master 做為資料庫內容的 # 同步時候的主機,那就是 trusted_master 的設定內容囉! # 如果沒有 master/slave 架構時,那就不需要 trusted_master 這個設定了! # 至於 xfr_check_port 則是指定 master 與 slave 是否都要以 < 1024 # 以下的 port 來進行溝通的訊息!通常預設就是 yes ,不需要更動他! # <主機名稱/IP>:<網域名稱>:<資料庫類別>:<安全性> # 這個是這個檔案裡面最重要的部分了!主要在設定安全性的方面, # 可以設定多行,而是否能夠通過的規則是『一行一行檢查』的方式! # 所以這裡的設定應該是:先開放要開放的網域,然後全部都關閉! # 先談一談各個相關的項目: # 1. 主機名稱/IP:這裡可以這樣設定:192.168.1.0/255.255.255.0 # 2. 網域名稱:通常都設定成為 * 即可! # 3. 資料庫類別:可以使用 * 來表示所有的資料庫! # 4. 安全性:主要有三種參數: # none :無論如何就是可以無條件進入本機; # port :僅允許 < 1024 以下的 port 進入; # deny :無論如何就是關閉不讓人家登入主機! # 由於我是允許 127.0.0.0/255.0.0.0 以及 192.168.10.0/255.255.255.0 進入, # 其他的都關閉!所以我可以這樣設定: 127.0.0.0/255.255.255.0 : * : * : none 192.168.10.0/255.255.255.0: * : * : none * : * : * : deny # 但是因為 /etc/shadow 裡面的檔案總不好讓人看到吧!而又由於 Linux # 系統當中,只有 root 可以啟用 < 1024 以下的 port ,因此,更安全的設定, 可以這樣做: 127.0.0.0/255.255.255.0 : * : * : port 192.168.10.0/255.255.255.0: * : * : port * : * : * : deny # 三行也就夠了! # 無論如何,如果您想要讓您的 NIS Server 運作的較為快速,並且安全性上面 # 沒有太多的考量(內部網域時!),那麼使用 none 是一個不錯的主意! |
<host>,<user>,<domain>
主機,使用者帳號,領域名稱 |
[root@test root]# touch /etc/netgroup |
1. 啟動囉!
[root@test root]# /etc/rc.d/init.d/ypserv start [root@test root]# /etc/rc.d/init.d/yppasswdd start 2. 觀察一下是否真的有動作? [root@test root]# rpcinfo -u localhost ypserv program 100004 version 1 ready and waiting program 100004 version 2 ready and waiting [root @test root]# rpcinfo -u localhost yppasswdd program 100009 version 1 ready and waiting # 這個 rpcinfo 就是在觀察與 RPC Server 有關的 program 目前的狀況! # 因此可以用他來觀察你的 ypserv 喔! 3. 設定開機時啟動: # 你可以使用 ntsysv ,這裡我們使用 chkconfig 囉! [root@test root]# chkconfig --level 35 ypserv on [root@test root]# chkconfig --level 35 yppasswdd on |
1. 製作資料庫:
[root@test root]# /usr/lib/yp/ypinit -m At this point, we have to construct a list of the hosts which will run NIS servers. server.cluster is in the list of NIS server hosts. Please continue to add the names for the other hosts, one per line. When you are done with the list, type a <control D>. next host to add: server.cluster next host to add: <==在這裡按下[ctrl + d]跳出 The current list of NIS servers looks like this: server.cluster Is this correct?
[y/n: y] y
# 這個動作是每次修改使用者資料後一定要做的動作!,就是重新製作資料庫,
|
[root@client
root]# /etc/rc.d/init.d/portmap start
[root@client root]# netstat -tl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:sunrpc *:* LISTEN 如果看到 sunrpc 的話,就表示啟動成功了! [root@test root]# chkconfig --level 35 portmap on 上面這一行在設定 portmap 在 run-level 為 3, 5 的時候就開機時啟動! |
[root@client
root]# vi /etc/hosts
# 要有底下這一行喔! 192.168.10.30 server.cluster |
1. 建立 NIS
domain name:
[root@client root]# nisdomainname cluster [root@client root]# vi /etc/rc.d/rc.local # 加入底下這一行: /bin/nisdomainname cluster [root@client root]# vi /etc/sysconfig/network # 加入底下這一行: NISDOMAIN=cluster 2. 建立 NIS 查尋的主機名稱 [root@client root]# vi /etc/yp.conf # 加入這兩行: domain cluster ypserver server.cluster # 還是要記得,那個 cluster 是你的 NIS 的 domain ,至於 server.cluster # 則是 NIS Server 的主機名稱,我這裡是使用內部私有 IP ,所以名稱可以隨便 # 我喜歡來選擇的喔! |
1. 密碼檔的修改:
[root@client root]# vi /etc/passwd # 還記得這個檔案嗎?這個檔案總共有七個欄位,而每個欄位都以分號『:』隔開, # 相關的資訊請參考基礎學習篇裡面的帳號管理章節。由於我們要將資料 # 設定以 NIS Server 的資料庫來驗證,因此, # 在這個檔案的最後面加入這一行: +:::::: # 注意喔!在 + 之後連續加六個『 : 』,並且中間沒有空白字元! 2. 查尋密碼的程序: # 因為我們有很多方式來查尋密碼,需要修改 /etc/nsswitch.conf 這個檔案才行 [root@client root]# vi /etc/nsswitch.conf # 找到相關的參數,並改成底下這樣: passwd: files nis nisplus shadow: files nis nisplus group: files nis nisplus hosts: files nis dns # 這個檔案在設定一些資訊的查尋程序!那個 files 指的是本機的相關檔案, # 至於 nis 則是透過 NIS 來進行查尋,至於 nisplus 則是 NIS+ 這是比較新 # 版的 NIS 啦!不過,官方網站上面說,目前這個發展的計畫已經暫停了! # 1. passwd: 就是使用者相關資訊查尋,分別為 /etc/passwd, nis 與 nisplus # 2. shadow: 就是使用者密碼的查尋, /etc/shadow, nis 及 nisplus # 3. group: 就是使用者的群組資訊查尋, /etc/group, nis 及 nisplus # 4. hosts: 就是主機名稱與IP對應的查尋,/etc/hosts, nis 及 /etc/resolv.conf |
1. 直接手動啟動
ypbind 吧:
[root@client root]# /etc/rc.d/init.d/ypbind start [root@client root]# rpcinfo -p localhost program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100007 2 udp 735 ypbind 100007 1 udp 735 ypbind 100007 2 tcp 738 ypbind 100007 1 tcp 738 ypbind # 至少要有上面幾個資訊才是對的喔!不過,需要記得的是,那個 port number # 是系統隨機啟動的,所以 port number 每次都會不太一樣啊! # 記得要經常用 rpcinfo 去檢查一下 RPC Server 相關的服務才行! 2. 設定開機時啟動: [root@client root]# chkconfig --level 35 ypbind on |
[root@client
root]# yptest
Test 1: domainname Configured domainname is "cluster" Test 2: ypbind
Test 9: yp_all
|
[root@client
root]# ypwhich
server.cluster [root@clent root]# ypwhich -x Use "ethers" for map "ethers.byname" Use "aliases" for map "mail.aliases" Use "services" for map "services.byname" Use "protocols" for map "protocols.bynumber" Use "hosts" for map "hosts.byname" Use "networks" for map "networks.byaddr" Use "group" for map "group.byname" Use "passwd" for map "passwd.byname" |
[root@client
root]# ypcat -x
Use "ethers" for map "ethers.byname" Use "aliases" for map "mail.aliases" Use "services" for map "services.byname" Use "protocols" for map "protocols.bynumber" Use "hosts" for map "hosts.byname" Use "networks" for map "networks.byaddr" Use "group" for map "group.byname" Use "passwd" for map "passwd.byname" # 主要的功能就是『列出資料庫』囉!與 ypwhich -x 相同功能! # 所以我們有 ethers, aliases......passwd 等資料庫名稱與檔名! [root@client root]# ypcat [資料庫名稱或功能] # 這個指令可以用來取得 NIS Server 上面各個資料庫的內容! # 舉例來說,我們想要知道 passwd ( 密碼資料 ) 的所有使用者內容,就需要: [root@client root]# ypcat passwd (或 ypcat passwd.byname ) test:dkoUW2XHV30sEV5gLM4NapyuhBcpVs.:500:500::/home/test:/bin/bash # 如果是想要知道 hosts 的內容 (NIS Server 主機上面 /etc/hosts 的內容): [root@client root]# ypcat hosts 127.0.0.1 localhost localhost.localdomain 192.168.10.30 server.cluster # 反正就是加上資料庫,你就可以取得 NIS server 主機上面的資料庫內容啦! |
1. 設定 NIS
Server 主機的 NFS 開放目錄:
[root@test root]# vi /etc/exports /home 192.168.10.0/24(rw,async,no_root_squash) [root@test root]# exportfs -rv exporting 192.168.10.0/24:/home [root@test root]# /etc/rc.d/init.d/nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS daemon: [ OK ] Starting NFS mountd: [ OK ] [root@test root]# chkconfig --level 35 nfs on 2. 設定 NIS Client 的 mount 資料! # 先以 root 的身份登入到 NIS Client 主機上面: [root@client root]# mount -t nfs 192.168.10.30:/home /home # 如果沒有問題了,就將上面這一行加入 /etc/rc.d/rc.local 當中吧! |
/sbin/iptables
-A -s 192.168.10.0/24 --dport 111 -j ACCEPT
/sbin/iptables -A --dport 111 -j DROP |
[root @test
root]# vi /etc/hosts.allow
portmap: 192.168.10.0/255.255.255.0 [root @test
root]# vi /etc/hosts.deny
|