您的位置:首页 > 其它

主从NIS账号服务器配置管理

2014-03-29 13:49 441 查看
计划

NIS 的網域名稱為 davynis
整個內部的信任網域為 192.168.4.0/24
NIS master server 的 IP 為 192.168.4.106 ,主機名稱為 master.davynis
NIS slave server 的 IP 為 192.168.4.108,主機名稱為 slave.davynis
NIS client 的 IP 為 *,主機名稱為 *
________________________________________
在服务器上安装所需软件
yum -y install yp-tools ypbind ypserv portmap;
yp-tools:提供nis相关的查询命令功能
ypbind:提供nis client端的设置软件
ypserv;提供nis server端的设置软件
portmap:这是rpc必须的软件
________________________________________

NIS相关文档
/etc/ypserv.conf:NIS主配置文件,可以规范NIS客户端是否具有可以查询NIS服务器的权限
/etc/hosts:记录主机和IP地址对应关系,如果没有DNS系统,则NIS服务器的hosts文件需要每一台NIS客户端的主机记录。
/etc/netgroup:设置信任的主机或网段
/etc/yp/Makefile:与建立数据库有关的配置文件
/etc/sysconfig/network:可以在这个档案内指定 NIS 的网域 (nisdomainname)。 /var/yp/Makefile: 这就是与建立数据库有关的动作配置文件;
NIS 服务器提供的主要服务方面有底下两个:
/usr/sbin/ypserv:就是NIS 服务器的主要提供服务;
/usr/sbin/rpc.yppasswdd:提供额外的NIS 客户端之用户密码修改服务,
/usr/lib64/yp/ypinit:建立数据库的指令,(在 32 位的系统下,档名则是 /usr/lib/yp/ypinit 喔!);
/usr/bin/yppasswd:与 NIS 客户端有关,主要在让用户修改服务器上的密码。
________________________________________

設定 NIS 的網域名稱 (NIS domain name)
所有的 NIS server/client 都需要設定 NIS 領域名稱才行
[root@master ~]# nisdomainname davynis
[root@master ~]# nisdomainname
davynis <==瞧!已經設定了 NIS 領域名稱囉!
[root@master ~]# vi /etc/rc.d/rc.local
/bin/nisdomainname davynis
或是想要在啟動 NIS 時就自動設定好 NIS 領域的話
[root@master ~]# vi /etc/sysconfig/network
NISDOMAIN=davynis
________________________________________

主要設定檔 /etc/ypserv.conf
Host : Domain : Map : Security
Host:指定客户端,可以指定具体IP地址,也可以指定一个网段
Domain:设置NIS域名,这里的NIS域名和DNS中的域名并没有关系哈~两者是两套不同系统哈~在同一个NIS域中,客户端可以从NIS服务器上查询用户名和密码,从NIS服务器可以与主服务器同步数据库内容
Map:设置可用数据库名称,可以用“*”代替所有数据库
Security:安全性设置。主要有none、port和deny三种参数设置。
none:没有任何安全限制,可以连接NIS服务器。
port:只允许小于1024以下的端口连接NIS服务器。
deny:拒绝连接NIS服务器。

[root@master~]# vi /etc/ypserv.conf
dns: no #只要/etc/hosts 設定正確即可!
files: 30 #30個資料庫被讀入記憶體當中,够了!
slp: no
slp_timeout: 3600
# 這兩個與 SLP 服務有關,僅使用單純的 NIS ,不需要啟動。
xfr_check_port: yes
#master/slave同步更新的資料庫所使用的埠口!1024 內。
# 底下則是設定限制用戶端或 slave server 查詢的權限:
# [主機名稱/IP]:[NIS網域名]:[資料庫名稱]:[安全限制]
# [主機名稱/IP]可以使用 network/netmask 如 192.168.4.0/255.255.255.0
# [NIS網域名] :例如本案例中的 davynis
# [資料庫名稱]:就是由 NIS 製作出來的資料庫名稱;
# [安全限制]:沒限制(none)、僅用1024(port)及拒絕(deny);
# 一般來說,你可以依照我們的網域來設定成為底下的模樣:
127.0.0.0/255.255.255.0 : * : * : none
192.168.4.0/255.255.255.0 : * : * : none
* : * : * : deny
# 上面三行的意思是,開放 lo 內部介面、開放內部 LAN 網域,且杜絕所有其他來源的 NIS 要求的意思。
# 萬一上面這三行權限相關的設定無法讓你的 NIS 順利的生效時,你可以先將上面三行註解,然後加入底下這一行:
* : * : * : none
________________________________________

設定主機名稱 (/etc/hosts) 與建立信任群組 (/etc/netgroup)
在 /etc/ypserv.conf 的設定當中我們談到 NIS 大部分是給區域網路內的主機使用的, 所以當然就不需要 DNS 的設定了。不過,由於 NIS 使用到很多的主機名稱, 所以你一定要設定好 /etc/hosts 對應,否則會無法成功連線 NIS ! 這個很重要,絕大部分的朋友無法達成 NIS server/client 的連線都是這裡出問題而已。 依據本案例的設定值,你應該這樣做:
[root@master ~]# vi /etc/hosts
192.168.4.106 master.davynis
192.168.4.108 slave.davynis
192.168.4.110 ubuntu
注意!如果你的主機名稱與 NIS 的主機名稱不一樣,那麼在這個檔案當中還是需要將你的主機名稱給他設定進來! 否則在後面資料庫的設定時,肯定會發生問題。當然啦,你也可以直接在 /etc/sysconfig/network 當中直接重新設定主機名稱,然後重新開機,或者是利用 hostname 這個指令重新設定你的主機名稱也可以。
除了這個設定之外,有時候你可能需要設定 /etc/netgroup ,雖然比較新的 distributions 都可以略過這個檔案的檢查了,不過建議您還是可以瞭解一下的啦!這個 /etc/netgroup 檔案可以記錄在我們網域裡面被信任的群,這個檔案的內容當中,每一行都有三個欄位,分別以逗號『,』隔開,意義為:
<host>,<user>,<domain>
主機,使用者帳號,領域名稱
事實上,如果這個檔案是『空的』的話,那麼代表著『全部的主機、帳號與領域名稱都接受』的意思,因為我們已經在 /etc/ypserv.conf 裡頭設定好了關於安全的項目了,所以這個檔案只要建立即可(本來是不存在的!):
[root@master ~]# touch /etc/netgroup
________________________________________

啟動所有相關的服務
接下來當然是先啟動所有相關的服務囉,這包括 RPC, ypserv 以及 yppasswdd 囉! 不過,如果你的 RPC 本來就已經啟動的話,那就不要重新啟動 portmap 了!
[root@master ~]# /etc/init.d/portmap start
[root@master~]# /etc/init.d/ypserv start
[root@master~]# /etc/init.d/yppasswdd start
注意,主要的 NIS服務是ypserv,NIS用戶端密碼修改功,啟動 yppasswdd,利用 rpcinfo 來檢查看看:
[root@master ~]# rpcinfo -p master.davynis
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100004 2 udp 942 ypserv
100004 1 udp 942 ypserv
100004 2 tcp 945 ypserv
100004 1 tcp 945 ypserv
100009 1 udp 950 yppasswdd
[root@master ~]# rpcinfo -u master.davynis ypserv
program 100004 version 1 ready and waiting
program 100004 version 2 ready and waiting
________________________________________

建立資料庫
在完成了上面的所有步驟後,接下來我們得要開始將主機上面的帳號檔案轉成資料庫檔案啦! 轉換的動作直接透過 /usr/lib/yp/ypinit 這個指令來處理即可!整個步驟是這樣做的:
[root@master ~]# /usr/lib/yp/ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers. master.davynis 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: master.davynis <==這個地方系統會主動捉到
next host to add: <==按下 [ctrl]-d
The current list of NIS servers looks like this:
master.davynis
Is this correct? [y/n: y] y
We need a few minutes to build the databases...
Building /var/yp/vbirdnis/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/vbirdnis'
Updating passwd.byname...
....中間省略....
gmake[1]: Leaving directory `/var/yp/vbirdnis'
master.vbirdnis has been set up as a NIS master server.
Now you can run ypinit -s master.vbirdnis on all slave server.
建立了資料庫後,你必需要通知 ypserv 與 yppasswdd 這兩支服務,告知資料庫已經被更改了, 所以你可以這樣做:
[root@master ~]# /etc/init.d/portmap restart
[root@master ~]# /etc/init.d/ypserv restart
[root@master ~]# /etc/init.d/yppasswdd restart
service portmap restart
service ypserv restart
service yppasswdd restart
chkconfig --level 35 portmap on
chkconfig --level 35 ypserv on
chkconfig --level 35 yppasswdd on
要注意啊,如果你的使用者密碼有變動過,那麼你就得要重新製作資料庫,重新啟動 ypserv 及 yppasswdd 喔! 注意注意啊!
________________________________________

與 slave server 及資料庫有關的一些設定
當我們執行了 ypinit -m 之後,所有的主機上面的帳號相關檔案會被轉成資料庫檔案, 這些資料庫會被放置到 /var/yp/"davynis" 當中,您可以自行去檢查看看。
事實上,我們的 ypinit 其實是透過 /var/yp/Makefile 來進行資料庫的建立的呢!
如果你有 slave 伺服器的話,總是需要進行 master/slave 的同步化吧? 那如何告知我們的 master 伺服器將資料庫提供給 slave 呢?這個時候就得要修改 /var/yp/Makefile 囉! 您可以自行進入該檔案內查閱一些資料,不過,基本上你只要改一個地方就好了:
[root@master ~]# vi /var/yp/Makefile
NOPUSH=false
接下來,你必需要告知 master 要推出去的資料庫是給哪部伺服器?
[root@master ~]# vi /var/yp/ypservers
master.davynis
slave.davynis
你可以將所有的 slave 伺服器都加到 /var/yp/ypservers 檔案當中,只要記得該伺服器的 IP 必需要在 /etc/hosts 內可以找到對應才行喔!如果你要提供 master/slave 伺服器的資料庫檔案傳輸時, 那麼還需要啟動 ypxfrd 這個服務才行!這個服務可以讓 slave 伺服器主動連結上 ypxfrd 來更新資料庫。
[root@master ~]# /etc/init.d/ypxfrd start
如果您的 master 機器想要直接將某些特定的資料庫直接傳給 slave 主機的話, 那麼可以使用 yppush 這個指令
[root@master ~]# yppush -h slave.davynis passwd.*
如果 master/slave 的資料庫不符合的話,那麼該 passwd.byname 及 passwd.byuid 就會同步更新了!
1.再以 make 或者直接以 /usr/lib/yp/ypinit -m 來製作出最新的資料庫;
2.利用 yppush 這個指令功能來進行資料庫的傳輸。
如此一來,您就不需要進行 slave 上面的其他資料庫處理啦
________________________________________

NIS slave 的設定與啟動
NIS Client安装所需的软件
[root@slave ~]# yum -y install portmap ypbind yp-tools ypserv
讓他保留在比較乾淨的帳號資料,例如僅有系統帳號 (UID 小於 500 內的系統帳號),這樣可以避免 UID 重複出現的問題
________________________________________

設定網域
NIS slave需要設定相同的網域
1. 直接建立領域名稱
[root@slave ~]# nisdomainname davynis
[root@slave ~]# vi /etc/rc.d/rc.local
/bin/nisdomainname davynis
或[root@slave ~]# vi /etc/sysconfig/network
# 加入底下這一行:
NISDOMAIN=davynis
________________________________________

主要設定檔 /etc/ypserv.conf
這個設定檔也是很簡單的啦!可以與前面的 NIS master 相同即可。在鳥哥的這個例子當中, 我是直接在該檔案加入這三行而已喔!
[root@linux ~]# vi /etc/ypserv.conf
127.0.0.0/255.255.255.0 : * : * : none
192.168.4.0/255.255.255.0 : * : * : none
* : * : * : deny
或* : * : * : none
________________________________________

/etc/hosts 及 /etc/netgroup
[root@slave ~]# touch /etc/netgroup
[root@slave ~]# vi /etc/hosts
192.168.4.106 master.davynis
192.168.4.108 slave.davynis
192.168.4.110 ubuntu
________________________________________

啟動所有服務及建立資料庫
[root@slave ~]# /etc/init.d/portmap start
[root@slave ~]# /etc/init.d/ypserv start
取來自 master 伺服器的資料庫檔案
[root@slave ~]# /usr/lib/yp/ypinit -s master.davynis
We will need a few minutes to copy the data from master.vbirdnis.
Transferring hosts.byname...
Trying ypxfrd ... not running
Transferring services.byname...
Trying ypxfrd ... not running
....中間省略....
Trying ypxfrd ... not running的資訊, 但事實上資料庫的轉移還是成功的!不相信的話,你可以使用底下這個指令來測試一下資料庫是否正確:
[root@slave ~]# ypcat -h localhost passwd.byname
如果有正確的輸出帳號/密碼資料的話,呵呵!那就是 OK 的啦!
[root@slave ~]# vi /etc/crontab
# 在最後加入以 ypxfr 傳輸資料的 script 喔!
20 * * * * root /usr/lib/yp/ypxfr_1perhour
40 6 * * * root /usr/lib/yp/ypxfr_2perday
55 6,18 * * * root /usr/lib/yp/ypxfr_2perday
# 我們以 /usr/lib/yp/ypxfr_1perhour 為例來說明好了:
[root@slave ~]# vi /usr/lib/yp/ypxfr_1perhour
# 找到這一行:
$YPBINDIR/ypxfr $map
# 將他改成這樣:
$YPBINDIR/ypxfr $map -h master.davynis
________________________________________

啟動 ypbind ,讓 slave 也可以查詢帳號/密碼
如果你的 slave 並沒有啟動 ypbind 的話,那麼 slave 將無法以 master 所提供的帳號來登入的! 所以接下來,妳必須要啟動 ypbind 這個查詢的功能,好讓我們的 slave 伺服器也可以針對我們自己的 NIS 網域 (davynis) 進行查詢。 至於 ypbind 的啟動方式則請參考下一小節的 NIS client 設定方式吧!
至此為止,你就已經具有一部 NIS master 及多部 NIS slave 的伺服器囉!
________________________________________

防火牆設置
我們的 NIS 與 NFS 都是使用 RPC Server 的,所以囉,都可以直接管制 111 這個 port 即可!能夠直接以 /etc/sysconfig/iptables 管理 111 這個 port ,例如僅允許 192.168.4.0/24 這個網域進來的話,可以在你的防火牆規則上面加上:
/#Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
-A RE-Eirewall-1-INPUT -s 192.168.4.0/24 --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT --dport 111 -j DROP
COMMIT
~
________________________________________

NIS Client 端的設定
NIS client 基本上還是先搜尋自己的 /etc/passwd, /etc/group 等資料後才再去找 NIS server 的資料庫啊!亦即 UID, GID 均小於 500 以下的帳號即可
________________________________________

NIS client 所需套件與套件結構
NIS client 端所需要的套件僅有:
ypbind
yp-tools
即可,yp-tools 提供查詢的軟體,至於 ypbind 則是與 ypserv 互相溝通的用戶端連線軟體啦! 另外,在 CentOS 當中我們還有很多設定檔是與認證有關的,包含 ypbind 的設定檔時, 在設定 NIS client 你可能需要動到底下的檔案:
/etc/sysconfig/network :裡頭主要設定了 NIS 領域名稱,讓 ypbind 啟動時可以設定好;
/etc/hosts :很重要吧!至少需要有各個 NIS 伺服器的 IP 與主機名對應;
/etc/yp.conf :這個則是 ypbind 的主要設定檔,裡面主要規範 NIS server ;
/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 client吧!
________________________________________

NIS client 的設定與啟動
啟動 NIS client 的設定就簡單多了!最主要是加入 NIS domain 當中,然後再啟動 ypbind 即可。 整個設定過程是這樣的:
________________________________________

設定好 NIS domain 以及 /etc/hosts 主機名對應
設定 NIS domain 就利用 nisdomainname 來處理即可啊:
[root@ubuntu ~]# vi /etc/rc.d/rc.local
/bin/nisdomainname vbirdnis
或[root@ubuntu ~]# vi /etc/sysconfig/network
NISDOMAIN=vbirdnis
然後則是主機名稱與 IP 的對應設定檔,重要的很!
[root@ubuntu ~]# vi /etc/hosts
192.168.4.106 master.davynis
192.168.4.108 slave.davynis
192.168.4.110 client.davynis
________________________________________

啟動 ypbind 來連結至 NIS server
要啟動 ypbind 必須要設定很多的檔案,實在很麻煩~不過不打緊, CentOS 提供給我們一個工具『authconfig』, 透過這個工具我們可以很快的將 ypbind 設定起來。妳只要在終端機環境下下達 authconfig-tui 就能夠設定了。設定的方式如下所示:
authconfig 的使用說明

系統原本就會有 MD5 及 Shadow 的加密編碼,您只要選擇上圖的 NIS 項目,然後按下 OK 便進入到如下所示畫面:
在你輸入了正確的 NIS 領域名稱 (Domain) 以及正確的主機名稱 (就是主控主機) , 並且按下 OK 後,你的 CentOS 就會自動的幫你啟動 portmap 以及 ypbind 這兩支程式, 同時還會自動的使用 chkconfig 的功能幫您在開機時自動啟動 portmap 及 ypbind 喔!

手動處理的話,那麼妳必須要手動的修改底下這些檔案:
/etc/nsswitch.conf (修改許多主機驗證功能的順序)
/etc/sysconfig/authconfig (CentOS 的認證機制)
/etc/pam.d/system-auth (登入所需要的 PAM 認證過程)
/etc/yp.conf (亦即是 ypbind 的設定檔)
1. /etc/nsswitch.conf
[root@ubuntu ~]# vi /etc/nsswitch.conf
# 這個檔案的內容有相當多,如果你只想要進行登入驗證,可以這樣:
passwd: files nis
shadow: files nis
group: files nis
hosts: files nis dns
2. /etc/sysconfig/authconfig
[root@ubuntu ~]# vi /etc/sysconfig/authconfig
USENIS=yes
3. /etc/pam.d/system-auth
[root@ubuntu ~]# vi /etc/pam.d/system-auth
password sufficient /lib/security/$ISA/pam_unix.so
nullok use_authtok md5 shadow
# 上面可是同一行喔!將他改成:
password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow nis
4. /etc/yp.conf
[root@ubuntu ~]# vi /etc/yp.conf
# 這個是 ypbind 的主要設定檔,主要語法是這樣的:
# domain [NIS領域] server [主機名稱]
# 或者是透過廣播,適合用於大網域有多部 NIS 伺服器時:
# domain [NIS領域] broadcast
domain davynis broadcast
這樣設定完成後,再給他啟動 ypbind 即可:
[root@ubuntu ~]# /etc/init.d/portmap start
[root@ubuntu ~]# /etc/init.d/ypbind start
另外,那些手動處理的檔案當中, /etc/nsswitch.conf 是很重要的,因為他規範了 Linux 本機要使用某些服務時,例如帳號/密碼的資料、 主機名稱的對應資料、port number 對應服務名稱的資料等等,這些資料的搜尋順序! 更多的資料請自行進入該檔案內查閱,我們也會在 DNS 伺服器章節再次提到這個檔案的。
至於其他兩個設定檔, /etc/sysconfig/authconfig, /etc/pam.d/system-auth 則是與使用者帳號的驗證有關。
________________________________________

利用 yptest 檢驗資料庫之測試:
直接輸入 yptest 即可檢查相關的測試資料,如下所示:
[root@ubuntu ~]# yptest
Test 1: domainname
Configured domainname is "vbirdnis"
Test 2: ypbind
Used NIS server: master.vbirdnis
Test 3: yp_match
WARNING: No such key in map (Map passwd.byname, key nobody)
....中間省略....
Test 8: yp_maplist
hosts.byname
group.byname
passwd.byuid
group.bygid
passwd.byname
hosts.byaddr
....中間省略....
Test 9: yp_all
....中間省略....
1 tests failed
從這個測試當中我們可以發現一些錯誤,重點在第九個步驟 yp_all 必須要有列出您 NIS server 上頭的所有帳號資訊,如果有出現帳號相關資料的話,那麼應該就算驗證成功了!比較有問題的是第三步驟, 他會出現在 passwd.byname 當中找不到 nobody 的字樣。這是因為早期的 nobody 之 UID 都設定在 65534 ,但 CentOS 則將 nobody 設定為系統帳號的 99 ,所以當然不會被記錄, 也就出現這一個警告。不過,這個錯誤是可忽略的啦! ^_^
________________________________________

利用 ypwhich 檢驗資料庫數量
單純使用 ypwhich 的時候顯示的是『NIS Client 的 domain』名稱,而當加入 -x 這個參數時, 則是顯示『NIS Client 與 Server 之間溝通的資料庫有哪些?』你可以這樣測試哩!
[root@ubuntu ~]# ypwhich -x
Use "hosts" for map "hosts.byname"
Use "group" for map "group.byname"
Use "passwd" for map "passwd.byname"
....以下省略....
由上面我們可以很清楚的就看到相關的檔案啦!這些資料庫檔案則是放置在我的 NIS Server 的 /var/yp/davynis/* 裡面囉!
________________________________________

利用 ypcat 讀取資料庫內容
除了 yptest 之外,你還可以直接利用 ypcat 讀取資料庫的內容喔!一般作法是這樣:
[root@ubuntu ~]# ypcat [-h nisserver] [資料庫名稱]
參數:
-h nisserver :如果有設定的話,指向某一部特定的 NIS 伺服器,
如果沒有指定的話,就以 ypbind 之設定為主;
資料庫名稱:亦即在 /var/yp/vbirdnis/ 內的檔名啊!例如 passwd.byname
範例:讀出 passwd.byname 的資料庫內容
[root@ubuntu ~]# ypcat passwd.byname
這三個指令在進行 NIS Client 端的檢驗時,是相當有用的喔!不要忽略了他的存在啊!尤其是剛架設好 NIS Client 時,一定要使用 yptest 去檢查看看有沒有設定錯誤喔!根據螢幕顯示的訊息去一個一個校正錯誤才行啊!
________________________________________

使用者參數修改: yppasswd, ypchfn, ypchsh
使用者如何在 NIS client 修改他自己的登入參數,例如密碼、shell 等等:
yppasswd :與 passwd 指令相同功能;
ypchfn :與 chfn 相同功能;
ypchsh :與 chsh 相同功能。

修改nistest密码
[nistest@ubuntu ~]$ yppasswd
不過,如果要教育使用者使用 yppasswd 的話,他可能不太能適應, 不要緊,你可以透過修改 alias 或者是置換掉 /usr/bin/passwd 這支程式即可!
________________________________________

NIS 與 NFS 的設定與叢集電腦運用
不曉得您有沒有發現一件事情啊!那就是:我們的 NIS Server 設定的使用者家目錄是在 /home 底下,
NFS 來加以設定啦!
在 NIS Server 上面開放 /home 這個目錄出來;
在 NIS Client 上面, mount NIS 主機的 /home 到自己的 /home 裡面去!
如此一來,不論登入哪一部 NIS Server 或 client ,使用者都是進入到 NIS Server 的 /home 裡面的家目錄囉!
事實上,使用者的資訊除了 /home 之外,像是 /var/spool/mail 以及 /var/spool/cron 也都是可能會有資料存放的目錄,
1. 設定 NIS server 主機的 NFS 開放目錄:
[root@master ~]# vi /etc/exports
/home 192.168.4.0/24(rw,async)
[root@master ~]# exportfs -rv
exporting 192.168.4.0/24:/home
[root@master ~]# /etc/init.d/nfs start
[root@master ~]# chkconfig --level 35 nfs on
2. 設定 NIS Client 的 mount 資料!
[root@ubuntu ~]# mount -t nfs -o bg,soft 192.168.4.106:/home /home
# 如果這個指令沒有問題,可以將他加入 /etc/rc.d/rc.local 當中啊!
這樣一來,您的 NIS Clients 就具有和 NIS Server 主機一模一樣的家目錄了!
事實上,現階段由於個人電腦的相關設備不但便宜,而且運算效能並不比一般大型電腦慢, 因此很多人就在想:『那我可否將許多個人電腦透過網路串接起來,讓好幾部個人電腦同步運作一個程式, 那麼該程式就能夠在很短的時間內運算出結果囉!』呵呵!這就是所謂的叢集式個人電腦 (PC cluster) 啦!
要實作 PC cluster 需要很多元件的配合,作業系統也是一個很重要的參數!目前較常使用的當然就是 Linux 啦! 不過我們知道 Linux 系統的運作需要用到使用者的相關參數,例如 UID, GID 等等,所以囉, 在 PC cluster 當中的每一部 Linux 的帳號密碼以及『檔案系統 (filesystem) 』都需要相同才行! 為何檔案系統需要相同呢?因為你得要讓每部主機都使用到相同的一支程式吧?所以囉, 這就需要 NIS 與 NFS 的同步配合了!
由於『預測』這個玩意兒越來越重要,比如說氣象預報、空氣品質預報等等, 而預測需要一個很龐大的模式來進行模擬的工作,這麼龐大的模擬工作需要大量的運算, 在學校單位要買一部很貴的大型主機實在很不容易!不過,如果能夠串接十部雙核心的個人電腦的話, 那麼可能只需要不到 20 萬便能夠組成相當於具有 20 顆 CPU 的大型主機的運算能力了! 所以說,在未來 PC cluster 是一個可以發展的課題喔!
________________________________________
指令對應資料
咱們前面總共講到 NIS master server, NIS slave server, NIS client 這三個元件, 偏偏每個元件所需要啟動的服務以及可使用的指令都不相同, 所以這裡幫大家彙整一下幾個常見的指令吧! ^_^
相關的動作NIS MasterNIS slaveNIS client
所需要啟動的服務ypservypserv
ypbindypbind
使用者能夠修改密碼yppasswddyppasswd
ypchfn
ypchsh
資料庫傳輸服務ypxfrd
yppushypxfr
資料庫測試讀取yptest
ypwhich
ypcatyptest
ypwhich
ypcat
資料庫的建立ypinit -mypinit -s server
________________________________________

防火墙的设置
又來到了防火牆的規劃了!要注意的是,我們的 NIS 與 NFS 都是使用 RPC Server 的,所以囉,除了上述談到的固定埠口之外, 你還得要開放 port 111 才行。假設你已經看過前一章,而且是使用鳥哥的 iptables.rule 腳本來處理你的防火牆, 那麼你可以修改該檔案的內容,新增幾條規則去:

NIS在ubuntu客户端配置:
安装NIS软件包
#sudo apt-get install nis portmap
在此过程中输入与NIS服务器端相同的NIS域名 davynis
/etc/yp.conf配置,新增以下内容
Ypserver 192.168.4.106
Ypserver 192.168.4.108
是NIS服务器的IP地址
修改/etc/passwd,/etc/group,/etc/shadow,

到此NIS客户端也就配置完了。
测试,通常用yptest,ypwhich,ypcat
yptest:测试 yp 的设定内容、数据库内容等等所有 NIS 相关的资料测试;
#yptest

看到test 9的测试内容为图中所示,则表示成功。为什么会出现test 3所示的警告信息,是因为在/var/yp/Makefile中默认的设置为

也就是不传送nobody这个账号。在ubuntu中nobody的UID,GID都为65534,如果是想传送并消除test 3的警告,则需要在NIS服务器端更改成

设置成“0”就是传送
重启动NIS服务
再次使用yptest,就会看到

就会看nobody也传送过来了,不会出现test 3 的错误了。
ypwhich:测试 NIS Client 与 Server 之间沟通的数据库 (database) 到底是哪几个档案;
#ypwhich
会显示NIS服务器的主机名
#ypwhich –x

ypcat:主要在取得 NIS Server 上面的使用者密码信息
#ypcat passwd.byname

也可以用geten命令查看
#getent passwd
#getent group
也能看到相应的NIS用户和组
(5)把admin04的家目录开机自动挂载到NIS的客户端
修改/etc/fstab
#sudo vim /etc/fstab

这时admin04用户登录到NIS客户端时,家目录也同时挂载上,否则当admin04登录时,会提示找不到家目录。
其它问题
以SSH登录不会出现什么提示,但是以桌面方式(ubuntu desktop)登录,会出现以下提示

出现以上信息,那么桌面上就是空白,什么菜单也没有,无法使用。这是因为在NFS端共享出来的家目录权限有问题,我的解决方法是在NFS服务器把admin04的权限修改成775。

出现以上信息,只要点"delete”就好了,只是桌面上一些小工具没有,还是可以用的。
结束语:
在这没有实验NIS的主从配置及在客户端更改密码yppasswd,ypchfn,ypchsh;觉的在生产环境中应用NIS不是太灵,相比之下 windows server的AD就比较好用,另外一种集中管理的方式LDAP也是可以的;还有一种方式就是利用samba把linux机器配置成域控制器,进行用户的 集中管理。文中没有修改的文件(ypserver.conf,ypserv.securenets,/etc/netgroup),都采用默认设置。为了 增强portmap安全性,还应配置/etc/hosts.deny,/etc/hosts.allow,/etc/ypserv.securenets 文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息