想要了解 NIS 是做什麼? 要查詢相關網頁? 可見: 於 Debian Linux 架設 NIS Server (Master)
此篇紀錄 NIS Server 的 Slave 如何架設.
前置準備
- NIS Master 的 Domain: master.domain, IP: 192.168.0.1
- NIS Slave 的 Domain: slave.domain
NIS Server 架設(Slave)
Slave 架設需於 Master、Slave 分別設定.
於 Master 設定
- /var/yp/Makefile # 將 NOPUSH 改成 false
NOPUSH=true => NOPUSH=false
- vim /var/yp/ypservers # 於此加入 NIS Slave domain, 注意此 Domain 要於 /etc/hosts 有對應 IP
master.domain
slave.domain
於 Slave 設定
- sudo su - # 建議下述用 root 做, 此帳號在確定 架設完成 且 帳號都正常前, 都不要登出.
- apt-get install portmap nis # 新版 portmap 套件改名為 rpcbind
- /etc/init.d/portmap stop
- /etc/init.d/nis stop # service ypserv stop
- vim /etc/default/nis # 修改下述
NISSERVER=false => NISSERVER=slave
NISMASTER=master.domain # 這個如果有寫, 每次啟動 NIS 時, 會自動取 Master 同步.(可不填) - vim /etc/defaultdomain # 填入 domain name (ex: tw.yahoo.com => 填寫 yahoo.com)
- vim /etc/yp.conf # 指定 NIS Master server、Slave server
ypserver master.domain
ypserver slave.domain - vim /etc/hosts # 指定此 Master server 的 IP
192.168.0.1 master.domain
- /etc/init.d/portmap start # 若無法啟動可直接執行: /sbin/portmap, 記得 portmap 要比 nis 先啟動. (service portmap restart)
- /etc/init.d/nis start # service ypserv restart
- rpcinfo -p localhost # 可由此看 portmap 有沒有啟動
- /usr/lib/yp/ypinit -s master.domain # 從 slave 建立 master db 備份
- /etc/init.d/nis stop # service ypserv stop
- /etc/init.d/nis start # service ypserv start
定時與 Master Sync (於 Slave 設定)
- vim /etc/cron.d/nis
20 * * * * root /usr/lib/yp/ypxfr_1perhour >/dev/null 2>&1
40 6 * * * root /usr/lib/yp/ypxfr_1perday >/dev/null 2>&1
55 6,18 * * * root /usr/lib/yp/ypxfr_2perday >/dev/null 2>&1 - chmod 755 /etc/cron.d/nis
於此 NIS Slave 設定就已經完成, 若 NIS Slave 又是 NIS Client 的話, 需要再做下述設定.
NIS Slave + Client 的設定
- vim /etc/nsswitch.conf # 加上 nis. 註: 若只設定 compact 的話, 帳號可以登入, 但是 id / group 會用 Client 機器的, 會 造成 帳號 與 uid / gid 對應錯誤.
passwd: nis compact
group: nis compact
shadow: nis compact
hosts: files nis dns # 查詢順序, 若要插入 NIS 的順序的話, 加入 nis 即可. - vim /etc/nsswitch.conf # 但是若 id / group 都同步的話, 建議用此設定
passwd: compact nis
group: compact nis
shadow: compact nis
hosts: files nis dns # 查詢順序, 若要插入 NIS 的順序的話, 加入 nis 即可. - /etc/init.d/nis restart # service ypserv restart
- visudo # 增加 wheel group(假設 Master 有加此 Group 的話)
%wheel ALL=NOPASSWD: ALL
- mkdir /home/user1; mkdir /home/user2; # 建立 /home 目錄, chown 成帳號權限(或可以考慮 NFS)
限制連線安全性設定
- vim /etc/ypserv.securenets # 0.0.0.0 是允許任何 NIS Client 存取
#0.0.0.0 0.0.0.0
- 加入自己的 IP Group, ex:
255.255.255.0 192.168.1.0
255.255.255.255 123.123.123.123 # 如果是特定某個 IP.
Iptables 設定
- # 請自行依照自己的網路環境修改
- /sbin/iptables -A -s 192.168.1.0/24 --dport 111 -j ACCEPT
- /sbin/iptables -A --dport 111 -j DROP
Slave 常用命令
- /usr/sbin/yppush: 從 Master 將 DB 送到 Slave 的命令
- /usr/lib/yp/ypinit: 建立 DB
- /usr/lib/yp/ypxfr, ypxfr_1perday, ypxfr_1perhour, ypxfr_2perday: 傳送 DB (與 Master 互通)
Master 常見問題
若 Master 有修改特定 DB, 要往 Slave 推的話(與 Slave 同步), 要怎麼做? (下述於 Master)
- yppush -h slave.domain *
- yppush -h slave.domain passwd.* # /var/yp/DOMAIN/ 的檔案 password.*
- 註: 通常 ypxfrd 會 自動sync.
若 Master 有新增 user, 要如何與 Slave sync.(下述於 Master)
- 於 Master: adduser
- /usr/lib/yp/ypinit -m 或 cd /var/yp; make # 更新 DB
- yppush -h slave.domain *