原 理 :
:什 么是 NIS 与 NIS 的主要功能
:NIS 的运作流程
:NIS 与 RPC 的关系
:NIS Server 的 master 与 slave 架构
套 件安装 :
Server 端设定 :
:NIS Server 的结构
:NIS Server 设定流程
Client 端设定 :
:NIS Client 的结构
:NIS Client 的设定流程
:NIC Client 端检验 NIS 设定 :yptest , ypwhich , ypcat
:修 改使用者密码 ( 需要有 root 身份 ) : yppasswd, ypchfn, ypchsh
主 机进阶设定 :
:NIS 与 NFS 的结合设定
:防 火墙的规划
重 点回顾
参 考资源
原 理:
套 件安装
Server 端设定:
[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 # 这个动作是每次修改使用者数据后一定要做的动作!,就是重新制作数据库, |
Client 端设定
[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 |
重 点回顾
参 考资源