有没有想过,如果我有十部 Linux 主机,这十部主机仅负责不同的功能,事实上,所有的主机账号与对应的密码都相同!那么我是将账号与密码分别设定置在十部计算机上面,还是可以透过一部主机做 为账号管理的功能,然后其它的主机只要当用户用登入时,就必须要到管理账号的主机上面确认其账号与密码呢?哪一个比较方便而且灵活?当然是找一个账号管理 的主机比较方便的多啦!如果有使用者要修改密码,不必要去到十部主机修改密码啦!只要到主要管理主机去修改,其它的主机根本就不需要更动!哈哈!轻松又愉 快呢!这个功能的达成有很多的方式,在这里,我们介绍一个很简单的方式,那就是 Network Information Service 这个 NIS 服务器的架设啦! |
[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
# 这个动作是每次修改使用者数据后一定要做的动作!,就是重新制作数据库,
|
[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
|