close

環境: CentOS 7.0
Server
端套件:  rpcbindypservyp-tools
Client
端套件:  ypbindyp-tools


小知識:

yp = yellow page (黃頁)

黃頁源自於以前公共電話裡都會有一本可以查詢所有公司電話的名冊。



前言 :
NIS
伺服器一般會搭配 NFS伺服器 使用

Network Information Services (NIS server)
Network FileSystem Services (NFS Server)

這邊我們將重點放在NIS上面。


有了NIS,你就不需要再一台主機一台主機的建立帳號!
只需要在NIS Server上建立好你所需的帳號。

然後再NIS Client端設定相對應的套件接收訊息就可以。

 

簡單說,他就是一個管理帳號的伺服器。

當然現在LDAP才是主流,但LDAP的入門等級較高。

只是希望完成帳號控管的需求,建議透過NIS 搭配 NFS進行就好。

 

關於NIS 的相關資訊可以參考鳥哥的網站:
第十四章、帳號控管: NIS 伺服器


Server 端:
處理:

0.

# yum install ntpdate

# ntpdate [校時的伺服器網址]


1. 我們先看到Server端的設定。

我們要先安裝好相關套件。

# yum install rpcbind ypserv yp-tools

 

接著我們要將服務設定成開機啟用

#systemctl enable rpcbind

#systemctl enable ypserv

啟用服務

#systemctl start rpcbind

#systemctl start ypserv


 

開始設定檔網域名稱部分

 

#vim /etc/sysconfig/network

這邊是要來設定NIS的網域名稱 (添加下面行數)

NISDOMAIN=nis_server

(nis_server為自定義,使用者可以依自己的選擇修改)

YPSERV_ARGS=”-p 1011”

這邊是指定我們的YPSERV指定使用1011 port

 

開機後會自動加入網域中

#vim /etc/rc.d/rc.local

/bin/nisdomainname nis_server

 

設定主機hosts

一般來說我們會在DNS伺服器添加對應的DomainName

但如果不想在DNS設定,或者你沒有權限設定的話。

就加在下面的設定檔當中 (儲存後就會直接啟用)

這邊是設定我們的NIS 主機是對應到哪個IP位址。

#vim /et/hosts

10.10.10.11 nis_server

例如上面,就是表示我們設定nis_server = 10.10.10.11


接著來調整NIS Server的主要設定檔

#vim /etc/ypserv.conf

這個設定檔主要在規範誰可以使用NIS服務。

設定方法不難(有點像是防火牆規則的方法,由上至下,對應到的規則就使用)

10.10.10.0/255.255.255.0 :* :* :port

上面這一行表示,

10.10.10.0/24網段內的IP,都可以使用1024以下的port進行連接NIS動作。

 

當然最後不免俗要加上一筆,只要都不符合就都拒絕掉

* :* :* :deny

上面這一行表示,只要是前面的規則都沒符合的話,就封鎖。

 

我們來了解一下這些設定值的欄位分別表示甚麼

第一個是host (這邊可以指定IP,也可以指定網段)

EXAMPLE :  10.10.10.0/255.255.255.0

第二個欄位是設定NIS Domain (這邊跟我們之前設的域名不同)

EXAMPLE   :*

第三個欄位是 MAP,可以用的資料庫名稱,可以用*表示全部的資料庫

EXAMPLE   :*

第四個欄位 表示Security,設定安全性的地方,要我們怎麼連接及使用。

有三種表示方式: noneportdeny

none   表示我都不阻擋

port    限制port號在1024以下的才可以連接使用

deny  拒絕

 

如果只是單存想測試NIS功能的可以使用

* :* :* :none

這樣子表示全部允許通過。

 

不然會建議設定允入IP (依需求添加)、然後最後加上deny規則

10.10.10.0/255.255.255.0 :* :* :port

* :* :* :deny


開始設定yppasswdd 設定檔

NIS服務,他的密碼驗證走的會是跟帳號串接不同的port

我們這邊是要將它設置為1012 port

#vim /etc/sysconfig/yppasswdd

YPPASSWD_ARGS=”-p 1012”

這邊設定成下方那樣也是可以接受。

YPPASSWD_ARGS=”--port 1012”

 

這邊設定完成後,NIS服務設定就完成了。

設定完成後重啟NIS相關服務

#systemctl restart rpcbind

#systemctl restart ypserv

#systemctl restart yppasswdd

 

接著用rpcinfo確認一下服務有沒有照我們預想的去跑。

#rpcinfo –p localhost

#rpcinfo –u localhost ypserv

 


再來要設定防火牆牆規則!!

CentOS7 當中,預設是使用firewalld (並非以前的netfilter)

可以簡單輸入一些指令讓他服務暢通。

 

# firewall-cmd --add-port 1011/tcp

# firewall-cmd --add-port 1012/tcp

# firewall-cmd --add-port 1011/udp

# firewall-cmd --add-port 1012/udp

上方的規則是臨時用的,如果你要重開服務後這個規則還在就要如下面設定

# firewall-cmd --add-port 1011/tcp --permanent

# firewall-cmd --add-port 1012/tcp --permanent

# firewall-cmd --add-port 1011/udp --permanent

# firewall-cmd --add-port 1012/udp --permanent

 

或者另外添加firewall規則 (直接找裡面的範本來修改比較快)

#vim /etc/firewalld/services/nissvr.xml

<?xml version="1.0" encoding="utf-8"?>

<service>

<short>NIS</short>

<description> NIS Server </description>

<port protocol="tcp" port="1011"/>

<port protocol="tcp" port="1012"/>

<port protocol="udp" port="1011"/>

<port protocol="udp" port="1012"/>

</service>

 

在上面設定完後重新載入一下設定檔

firewall-cmd --reload

firewall-cmd --permanent --add-service=nissvr


接著動作是創立帳號。

因為我們之後要讓使用者可以使用sudo功能。

所以我們要先在Server這邊建立一個可以sudo group

#addgroup sudogrp

NIS伺服器端設定sudoers設定檔

#vim /etc/sudoers

添加

%sudogrp ALL=(ALL:ALL) ALL

讓屬於sudogrp群組內的帳號都可以有sudo的權限。

 

接著創立我們要的NIS帳號

這邊有沒有指定uid應該沒有差

#adduser –u 1001 nisclient01 -G sudogrp

#adduser –u 1002 nisclient02 -G sudogrp

#adduser –u 1003 nisclient03 -G sudogrp

 

如果帳號之後要配合NFS使用的話,這邊建議改一下家目錄位置。

因為會配合NFS的目的就要將家目錄也一併掛載過去使用。

 

這邊的rhome代表remote home的意思,rhome資料夾是要事先建立出來的。
#mkdir /rhome

裡面的帳號資料夾由創建帳號的時候由系統幫你生成就好。

#adduser –u 1001 nisclient01 -G sudogrp -d /rhome/nisclient01

#adduser –u 1002 nisclient02 -G sudogrp -d /rhome/nisclient02

#adduser –u 1003 nisclient03 -G sudogrp -d /rhome/nisclient03

 

設定帳號的密碼 ( | 前面的password 就是密碼,這邊建議設定自己習慣的)

下面這樣的方式就可以直接強制對該帳號設定密碼;而不用進到互動模式。

#echo password | passwd --stdin nisclient01

#echo password | passwd --stdin nisclient02

#echo password | passwd --stdin nisclient03

 

上面三個帳號創立完成後,我們就要來對NIS 服務做資料庫的建立及初始化。

#/usr/lib64/yp/ypinit –m

當資料庫初始化完成後,我們NIS 伺服器的建置到一段落。

未來如果有創建或更動 帳號、群組或網域的話 ,就要重新跑資料庫。

# make -C /var/yp

 

初始化或者重新跑資料庫完成後需要重啟一下NIS服務

#systemctl restart rpcinfo

#systemctl restart ypserv

#systemctl restart yppasswdd


Client 端:

1.我們看到NIS Client的設定。

Client端我們也需要下載部分NIS套件來使用

#yum install ypbind yp-tools

#yum install setuptool setup

下載setup只是為了讓我們等下設定簡單些。

#setup

 

setup運作完成後,很多設定檔都完成了

設定ypbind服務開機啟用。

#systemctl enable ypbind

#systemctl restart ypbind

 

不過設定完還是需要檢查一下

#vim /etc/sysconfg/network

NISDOMAIN=nis_server

#vim /etc/rc.d/rc.local

/bin/nisdomainname nis_server

 

如果你的NIS 伺服器並非用DNS對應,而是自己寫入設定檔中。

Client端的設定檔也需要添加,否則會找不到對應的NIS伺服器。

#vim /etc/hosts

10.10.10.11 nis_server

 

確認一下NIS伺服器是否有正確對應到

#vim /etc/yp.conf

domain nis_server 10.10.10.11

 

確認一下系統認證的機制

#vim /etc/sysconfig/authconfig

USENIS=yes

#vim /etc/pam.d/system-auth

password sufficient pam_unix.so sha512 shadow nis nullok try_first_pass use_authtok

 

最後也是最重要的確認使用者密碼的認證順序

#vim /etc/nsseitch.conf

先找到幾個設定值【passwd】、【shadow】、【group】、【hosts

找到這些時看一下後面帶著甚麼樣的資訊

passwd: files nis

shadow: files nis

group: files nis

hosts: files nis

 

這些表示如果有人要使用帳密進行登入時,系統主機應該去那裡做驗證。

files 表示本機的設定檔

nis 表示nis資料庫

如果進入設定後發現沒有nis,請自行將它加上去

不然會一直無法使用NIS服務登入

 

這邊設定完之後,我們應該就要重啟服務讓使用者測試連線。

但因為我們希望使用者進入後可以有sudo的權限。

所以我們在client端也要在sudoers裡面添加設定資訊。

#vim /etc/sudoers

%sudogrp ALL=(ALL:ALL) ALL

 

如此一來我們等等重啟服務後,登入的使用者也可以使用sudo切換root權限

#systemctl restart rpcbind

#systemctl restar ypbind

 

 

接著就找一台主機進行測試登入的動作。

但因為這個時候還沒有搭配NFS,所以登入時會找不到家目錄(如下圖)

/usr/bin/id: cannot find name for user ID 1004

-bash-4.2$

這樣就算初步成功。


Client 端檢測方式:

如果發現一直無法登入,我們就要使用一些套件來檢查是否可以正常連線。

#yptest   (正常的yptest會跑出下列大約九項的測試)

Test 1: domainname

Configured domainname is "nis_server"

Test 2: ypbind

Used NIS server: nis_server

Test 3: yp_match

WARNING: No such key in map (Map passwd.byname, key nobody)

這邊的錯誤可以詳見鳥哥的文章,它不影響伺服器運作

Test 4: yp_first

nisclient01 nisclient01:$6$X……Z9qXJg/:1001:1001::/home/ nisclient01:/bin/bash

Test 5: yp_next

nisclient02

……………………………….

nisclient03

……………………………..

Test 6: yp_master

nis_server

Test 7: yp_order

Test 8: yp_maplist

mail.aliases

protocols.byname

protocols.bynumber

netid.byname

services.byservicename

services.byname

rpc.bynumber

rpc.byname

hosts.byaddr

hosts.byname

group.bygid

group.byname

passwd.byuid

passwd.byname

ypservers

Test 9: yp_all

會顯示所有帳號。


錯誤狀況說明:

1. Client 測試

yptesttest2就停止了

Test 2: ypbind
can't yp_bind: Reason: Domain not bound

這代表Client端無法連接到你的NIS伺服器。

原因可能有防火牆、或者連接不到你的NIS DomainName

這邊我的NIS DomainName就是 nis_server

如果你沒有在/etc/hosts設定好,是會發生這個狀況。

 

2. Client端測試

如果帳號一直無法sudo可能是創建帳號時的關係。

我在進行帳號創建時,是使用-g 表示非主要群組。

這個時候我要sudo完全不能用。

而變成-G設為帳號主要群組時,sudo就完全正常。

不清楚這邊的群組是否有直接的原因關係。

 

3  Server端測試

如果服務一直出現下面錯誤,請檢查設定檔有沒有問題。

Process: 526 ExecStartPost=/usr/libexec/ypbind-post-waitbind (code=exited, status=1/FAILURE)

 

NIS告一段落,接著研究NFS!


(下集待續)

IT專案-建個集中帳號控管伺服器吧<NIS+NFS> 下集

arrow
arrow
    全站熱搜

    IT001 發表在 痞客邦 留言(0) 人氣()