linux服務(wù)之NIS賬戶管理服務(wù)方式
一、所需要的軟件
yp-tools:提供 NIS 相關(guān)的查尋指令功能ypbind:提供 NIS Client 端的設(shè)定軟件ypserv:提供 NIS Server 端的設(shè)定軟件rpcbind:就是 RPC 一定需要的數(shù)據(jù)??!
注:yp-tools, ypbind 都會主動(dòng)安裝,所以server端只需要安裝 ypserv ,而客戶端只需要安裝ypbind。
查詢是否安裝 NIS Server
[root@www ~]# rpm -qa ypserv ypserv-2.31-12.el7.x86_64
二、服務(wù)器配置
環(huán)境說明:
- NIS 的域名設(shè)置為 vbirdnis
- NIS master server 的 IP 為 192.168.91.157,主機(jī)名為 www.centos.vbird
- NIS client 的 IP 為 192.168.91.159,主機(jī)名為 clientlinux.centos.vbird
1、安裝 NIS 服務(wù)
[root@www ~]# yum -y install ypserv
2、設(shè)定 NIS 的域名 (NIS domain name)
[root@www ~]# vim /etc/sysconfig/network # 不要更改其他既有數(shù)據(jù),只要加入底下這幾行即可: NISDOMAIN=vbirdnis <==設(shè)定 NIS 領(lǐng)域名 YPSERV_ARGS="-p 1011" <==設(shè)定 NIS 每次都啟動(dòng)在固定的埠口
3、修改主配置文件
[root@www ~]# vi /etc/ypserv.conf # 添加如下內(nèi)容 * : * : * : none <==沒有網(wǎng)絡(luò)限制,如果想做限制,可以在這里做,也可以通過防火墻做限制
注:上述配置說明:
#[主機(jī)名/IP] : [NIS 域名] : [可用數(shù)據(jù)庫名稱] : [安全限制] # [主機(jī)名/IP] :可以使用 network/netmask 如192.168.100.0/255.255.255.0 # [NIS 域名] :例如本案例中的 vbirdnis # [可用數(shù)據(jù)庫名稱]:就是由 NIS 制作出來的數(shù)據(jù)庫名稱; # [安全限制] :包括沒有限制 (none)、僅能使用 <1024 (port) 及拒絕 (deny) # 一般來說,你可以依照我們的網(wǎng)域來設(shè)定成為底下的模樣: 127.0.0.0/255.255.255.0 : * : * : none 192.168.100.0/255.255.255.0 : * : * : none * : * : * : deny # 星號 (*) 代表任何數(shù)據(jù)都接受的意思。上面三行的意思是,開放 lo 內(nèi)部接口、開放內(nèi)部 LAN 網(wǎng)域,且杜絕所有其他來源的 NIS 要求的意思。
4、設(shè)置主機(jī)名
[root@www ~]# hostnamectl set-hostname www.centos.vbird [root@www ~]# hostname www.centos.vbird
5、設(shè)定主機(jī)名與 IP 的對應(yīng) (/etc/hosts)
[root@www ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.91.157 www.centos.vbird 192.168.91.159 clientlinux.centos.vbird
6、為了方便管理,把yppasswdd 啟動(dòng)在固定的端口
[root@www ~]# vim /etc/sysconfig/yppasswdd YPPASSWDD_ARGS="--port 1012" <==找到這個(gè)設(shè)定值,修改一下內(nèi)容成這樣!
7、啟動(dòng) NIS 服務(wù)
[root@www ~]# systemctl start ypserv [root@www ~]# systemctl start yppasswdd
8、如果重新啟動(dòng) rpcbind
這將導(dǎo)致 ypserv 的注冊數(shù)據(jù)被注銷掉。因此,使用如下的動(dòng)作來檢查看看服務(wù)有沒有在等待中, 要看到如下的『就緒并等待服務(wù)』才會是正常的
[root@www ~]# rpcinfo -u localhost ypserv program 100004 version 1 ready and waiting program 100004 version 2 ready and waiting
9、創(chuàng)建的賬號
[root@www ~]# useradd -u 1001 nisuser1 [root@www ~]# useradd -u 1002 nisuser2 [root@www ~]# useradd -u 1003 nisuser3 [root@www ~]# echo password | passwd --stdin nisuser1 [root@www ~]# echo password | passwd --stdin nisuser2 [root@www ~]# echo password | passwd --stdin nisuser3
10、建立賬號為數(shù)據(jù)庫
[root@www ~]# /usr/lib64/yp/ypinit -m At this point, we have to construct a list of the hosts which will run NIS servers. www.centos.vbird 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: www.centos.vbird next host to add: <==按下 ctrl + d The current list of NIS servers looks like this: www.centos.vbird 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]: 進(jìn)入目錄“/var/yp/vbirdnis” Updating passwd.byname... Updating passwd.byuid... Updating group.byname... Updating group.bygid... Updating hosts.byname... Updating hosts.byaddr... Updating rpc.byname... Updating rpc.bynumber... Updating services.byname... Updating services.byservicename... Updating netid.byname... Updating protocols.bynumber... Updating protocols.byname... Updating mail.aliases... gmake[1]: 離開目錄“/var/yp/vbirdnis” www.centos.vbird has been set up as a NIS master server. Now you can run ypinit -s www.centos.vbird on all slave server.
三、客戶端配置
客戶端為了方便,使用setup命令安裝,如果沒有setup命令,后面有如何安裝setup命令
[root@localhost ~]# setup
1、選擇驗(yàn)證配置

2、選擇使用NIS

3、配置好之前的域名和NIS服務(wù)器的地址

4、客戶端驗(yàn)證
[root@localhost ~]# id nisuser1 uid=1001(nisuser1) gid=1001(jiaofan) 組=1001(jiaofan) [root@localhost ~]# id nisuser2 uid=1002(nisuser2) gid=1002(nisuser2) 組=1002(nisuser2) [root@localhost ~]# su - nisuser3 su: 警告:無法更改到 /home/nisuser3 目錄: 沒有那個(gè)文件或目錄 -bash-4.2$
注:這里說沒有家目錄,因?yàn)榭蛻舳舜_實(shí)沒有創(chuàng)建家目錄,可以結(jié)合nfs網(wǎng)絡(luò)文件服務(wù),把服務(wù)端的家目錄掛在過來。
如果沒有setup命令,如何安裝。
- 1.安裝最快鏡像插件
yum -y install yum-plugin-fastestmirror
- 2.安裝setuptool
yum -y install setuptool
- 3.安裝系統(tǒng)服務(wù)管理
yum -y install ntsysv
- 4.安裝防火墻設(shè)置、網(wǎng)絡(luò)設(shè)置
yum -y install iptables
- 5.安裝防火墻設(shè)置
yum -y install system-config-securitylevel-tui
- 6.安裝網(wǎng)絡(luò)設(shè)置
yum -y install system-config-network-tui
四、 NIS client 端的檢查命令: yptest, ypwhich, ypcat
1、利用 yptest 檢驗(yàn)數(shù)據(jù)庫之測試:
[root@localhost ~]# 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 4: yp_first nisuser1 nisuser1:$6$K0frD0qB9hRudFQ2$gIhQ3qcEzlwr6l1Clz7hAYDVC4ERnH5YGPRKAQGhPNlwmSLgQJKntLq0qEWLt2FrIUzjl76KUk4i10n7Iogrg.:1001:1001::/home/nisuser1:/bin/bash Test 5: yp_next nisuser2 nisuser2:$6$ZZqpknoy$iX2olpYKuOGoQGmuFLx4GlNsKiB8XZyPPdeMGPiua4TSFnKhqNFLNnceUQgtlsjjYCmawlFedn5FuvtgQ7rZ1.:1002:1002::/home/nisuser2:/bin/bash nisuser3 nisuser3:$6$WPxJVOF.$Tfv0OjlWsJHYTEkti7I8YZLiQSq23ZT68Fg7CVOv1NTOtHscImvN7DWD7mL.ZpycDIUpDu3EyXCynGUVPGnLC0:1003:1003::/home/nisuser3:/bin/bash Test 6: yp_master www.centos.vbird Test 7: yp_order 1644212690 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 nisuser1 nisuser1:$6$K0frD0qB9hRudFQ2$gIhQ3qcEzlwr6l1Clz7hAYDVC4ERnH5YGPRKAQGhPNlwmSLgQJKntLq0qEWLt2FrIUzjl76KUk4i10n7Iogrg.:1001:1001::/home/nisuser1:/bin/bash nisuser2 nisuser2:$6$ZZqpknoy$iX2olpYKuOGoQGmuFLx4GlNsKiB8XZyPPdeMGPiua4TSFnKhqNFLNnceUQgtlsjjYCmawlFedn5FuvtgQ7rZ1.:1002:1002::/home/nisuser2:/bin/bash nisuser3 nisuser3:$6$WPxJVOF.$Tfv0OjlWsJHYTEkti7I8YZLiQSq23ZT68Fg7CVOv1NTOtHscImvN7DWD7mL.ZpycDIUpDu3EyXCynGUVPGnLC0:1003:1003::/home/nisuser3:/bin/bash 1 tests failed
注:Test 3 出現(xiàn)的那個(gè)警告信息,那只是說沒有該數(shù)據(jù)庫而已~ 該錯(cuò)誤是可以忽略的。重點(diǎn)在第 9 個(gè)步驟 yp_all 必須要有列出你 NIS server 上頭的所有帳戶信息,如果有出現(xiàn)賬號相關(guān)數(shù)據(jù)的話,那么應(yīng)該就算驗(yàn)證成功了!
2、利用 ypwhich 檢驗(yàn)數(shù)據(jù)庫數(shù)量
單純使用 ypwhich 的時(shí)候顯示的是『NIS Client 的 domain』名稱,而當(dāng)加入 -x 這個(gè)參數(shù)時(shí), 則是顯示『NIS Client 與 Server 之間溝通的數(shù)據(jù)庫有哪些?』你可以這樣測試
[root@localhost ~]# 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@localhost ~]#
由上面我們可以很清楚的就看到相關(guān)的檔案啦!這些數(shù)據(jù)庫檔案則是放置在我的 NIS Server 的 /var/yp/vbirdnis/* 里面。
3、利用 ypcat 讀取數(shù)據(jù)庫內(nèi)容
除了 yptest 之外,你還可以直接利用 ypcat 讀取數(shù)據(jù)庫的內(nèi)容喔!一般作法是這樣:
[root@clientlinux ~]# ypcat [-h nisserver] [數(shù)據(jù)庫名稱] 選項(xiàng)與參數(shù): -h nisserver :如果有設(shè)定的話,指向某一部特定的 NIS 服務(wù)器, 如果沒有指定的話,就以 ypbind 之設(shè)定為主; 數(shù)據(jù)庫名稱:亦即在 /var/yp/vbirdnis/ 內(nèi)的檔名?。±?passwd.byname # 讀出 passwd.byname 的數(shù)據(jù)庫內(nèi)容 [root@clientlinux ~]# ypcat passwd.byname
五、使用者參數(shù)修改: yppasswd, ypchfn, ypchsh
到這里NIS server/ client的賬號已經(jīng)同步了,但是,使用者如何在NIS client 修改他自己的登入?yún)?shù),例如密碼、shell 等等?因?yàn)?NIS client 是藉由數(shù)據(jù)庫來取得用戶的賬號密碼,那如何在 NIS 客戶端處理賬號密碼的訂正?
這也是為何我們需要在 NIS server 啟動(dòng) yppasswdd 這支服務(wù)的主要用意! 因?yàn)?yppasswdd 可以接收 NIS client 端傳來的密碼修改,藉此而處理 NIS server 的 /etc/passwd, /etc/shadow , 然后 yppasswdd 還能夠重建密碼數(shù)據(jù)庫,讓 NIS server 同步更新數(shù)據(jù)庫
那該如何下達(dá)指令呢?很簡單??!透過 yppasswd, ypchsh, ypchfn 來處理即可。
這三個(gè)指令的對應(yīng)是:
yppasswd:與 passwd 指令相同功能;ypchfn:與 chfn 相同功能;ypchsh:與 chsh 相同功能。
這里僅說明一下 yppasswd 而已。假設(shè)你已經(jīng)登入 NIS client 那部主機(jī), 并且是以 nisuser1 這個(gè)使用者登入的,記住,這個(gè)用戶相關(guān)數(shù)據(jù)僅在 NIS server 上。 接下來,這個(gè)使用者可以下達(dá) yppasswd ,如下所示:
[root@clientlinux ~]# grep nisuser /etc/passwd <==不會出現(xiàn)任何訊息,因 為無此賬號 [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) # 因?yàn)槲覀?client.centos.vbird 僅有帳戶信息,并沒有用戶家目錄, # 所以就會出現(xiàn)如上的警告,因此才需要用 id 驗(yàn)證,并且需要加掛 NFS 嘛! # 仔細(xì)看,現(xiàn)在的身份確實(shí)是 nisuser1 喔!確實(shí)有連上 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* 的數(shù)據(jù)庫。
服務(wù)端查看是否有改動(dòng)
[root@www ~]# ll /var/yp/vbirdnis/ 總用量 3152 -rw-------. 1 root root 135680 2月 7 15:22 group.bygid -rw-------. 1 root root 135680 2月 7 15:22 group.byname -rw-------. 1 root root 136192 2月 7 15:22 hosts.byaddr -rw-------. 1 root root 136448 2月 7 15:22 hosts.byname -rw-------. 1 root root 136960 2月 7 15:22 mail.aliases -rw-------. 1 root root 136704 2月 7 15:22 netid.byname -rw-------. 1 root root 136448 2月 7 15:23 passwd.byname -rw-------. 1 root root 136448 2月 7 15:23 passwd.byuid -rw-------. 1 root root 142336 2月 7 15:22 protocols.byname -rw-------. 1 root root 139008 2月 7 15:22 protocols.bynumber -rw-------. 1 root root 140288 2月 7 15:22 rpc.byname -rw-------. 1 root root 137984 2月 7 15:22 rpc.bynumber -rw-------. 1 root root 547840 2月 7 15:22 services.byname -rw-------. 1 root root 857856 2月 7 15:22 services.byservicename -rw-------. 1 root root 135680 2月 7 15:22 ypservers [root@www ~]# tail /var/log/messages Feb 7 15:23:05 www rpc.yppasswdd[2443]: update nisuser1 (uid=1001) from host 192.168.91.159 successful. [root@www ~]#
六、報(bào)錯(cuò)
在建立賬號為數(shù)據(jù)庫執(zhí)行/usr/lib64/yp/ypinit -m的錯(cuò)誤一:
gmake[1]: *** No rule to make target `/etc/aliases', needed by `mail.aliases'. Stop. gmake[1]: Leaving directory `/var/yp/vbirdnis' make: *** [target] Error 2 Error running Makefile. Please try it by hand.
錯(cuò)誤一解決辦法:缺少什么檔案,就 touch 他就是了!
[root@www ~]# touch /etc/aliases
錯(cuò)誤二:
如果是如下的錯(cuò)誤,那可能是因?yàn)椋?/p>
- 你的 ypserv 服務(wù)沒有順利啟動(dòng),請利用 rpcinfo 檢查看看;
- 你的主機(jī)名與 IP 沒有對應(yīng)好,請檢查 /etc/hosts
gmake[1]: Entering directory `/var/yp/vbirdnis' Updating passwd.byname... failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating passwd.byuid... failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating group.byname... ....(底下省略)....
要注意啊,如果你的用戶密碼有變動(dòng)過,那么你就得要重新制作數(shù)據(jù)庫,重新啟動(dòng) ypserv 及 yppasswdd
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Centos7的Firewalld防火墻基礎(chǔ)命令詳解
這篇文章主要介紹了Centos7的Firewalld防火墻基礎(chǔ)命令詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
詳解Linux中PostgreSQL和PostGIS的安裝和使用
這篇文章主要介紹了詳解Linux中PostgreSQL和PostGIS的安裝和使用,并把需要注意點(diǎn)做了分析和解釋,需要的朋友學(xué)習(xí)下。2018-02-02
centos 7.5 部署varnish緩存服務(wù)器功能
這篇文章主要介紹了centos 7.5 部署varnish緩存服務(wù)器功能,文中給大家介紹了varnish的簡介和主要特征,需要的朋友可以參考下2019-10-10
21個(gè)常用的apache .htaccess文件配置技巧分享
這篇文章主要介紹了21個(gè)常用的apache .htaccess文件配置技巧分享,涵蓋了網(wǎng)站中最常用的一些功能需求解決辦法,需要的朋友可以參考下2014-07-07

