天天看点

NIS服务器学习

前提环境:

1、安装的必须的软件包

ypserv,yp-bind,yp-tool

关于包的说明:

ypserv:服务器端必须的软件包

yp-bind:客户端需要的包

yp-tool:与yp相关的命令的包

PS:NIS服务跟NFS服务有些共同之处,都需要启动portmap服务

检查机器是否已安装的包,若没有,就安装相关的包。基本上系统默认已安装的包有yp-bind,yp-tool这两个。

[root@cheng ~]# rpm -qa | grep yp-*

ypbind-1.19-12.el5

yp-tools-2.9-0.1

安装Master服务器

[root@master ~]# rpm -qa | grep yp-serv

[root@master ~]#

[root@master ~]# yum install -y ypserv

安装完ypserv后,系统将会多了一些配置文件:

[root@master ~]# rpm -ql ypserv

/etc/rc.d/init.d/yppasswdd  #这个是客户端修改密码的服务

/etc/rc.d/init.d/ypserv     #ypserv的主要服务

/etc/rc.d/init.d/ypxfrd     #这个不知道是干嘛的

/etc/ypserv.conf    #主要配置文件

配置文件:

/etc/ypserv.conf 这个是主要的配置文件

/etc/hosts    非常重要,每一台主机都需要记录才行

/etc/netgroup 设置信任的主机与域名,这个我个人认为可以实现特定的主机用特定的用户登录的功能。

/var/yp/Makefile 建立与数据库有关的操作设置文件

/etc/sysconfig/network 指定NIS的域名

服务器提供的主要服务:

/usr/sbin/ypserv NIS服务器主要的服务

/usr/sbin/rpc.ypxfrp 用于master/slave主机之间传输数据库的服务

/usr/sbin/rpc.ypasswdd 提供额外的NIS客户端的用户密码修改服务。

与数据库有关的命令方面:

/usr/sbin/yppush  将master的数据库推送到slave上。

/usr/lib/yp/ypinit  这个是用于重新生成数据库

/usr/lib/yp/ypxfr   传送数据库的命令。ypxfr_1perday,ypxfr_1perhour,ypxfr_2perday

按照鸟哥私房菜的指引,做以下实验:

1、三台PC,Master,salve,client

2、配置一个NIS的环境,实现用户家目录的自动挂载

3、实现更新域数据据,普通用户可以自己更改自己的密码

建立一个NIS域

[root@master ~]# nisdomainname test

[root@master ~]# echo “NISDOMAIN=test” >> /etc/sysconfig/network

[root@master ~]# echo “/bin/nisdomainname test” >> /etc/rc.d/rc.local

修改本地的hosts文件

[root@master ~]# cat /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1               localhost.localdomain localhost

::1             localhost6.localdomain6 localhost6

192.168.10.40   master.test

192.168.10.41   slave.test

192.168.10.42   client.test

添加NIS的域名

[root@master ~]# cat /etc/sysconfig/network

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=master.test

NISDOMAIN=test

添加guest用户的一个脚本

[root@master ~]# cat useradd.sh

#!/bin/bash

#userd for add users

for (( i>1; i<100; i++ ))

do

useradd guest$i

echo 123456 | passwd –stdin guest$i

done

编辑NIS的配置文件,允许特定的网络访问NIS服务器

[root@master ~]# vi /etc/ypserv.conf

# 网段                                                            NIS服务器域名    数据库名称                    安全级别

192.168.10.0/255.255.255.0 : test       : *             : none

启动相关的服务

[root@master ~]# service portmap start   #需要启动 portmap服务

[root@master ~]# service ypserv start    #启动NIS的主要服务

[root@master ~]# service yppasswdd start # 启动该服务后,客户端可以自己更新密码了

验证服务:

[root@master ~]# rpcinfo -p localhost     #出现以下内容表明启动成功

程序             版本     协议           端口

100000    2   tcp    111  portmapper

100000    2   udp    111  portmapper

100024    1   udp    947  status

100024    1   tcp    950  status

100004    2   udp    773  ypserv

100004    1   udp    773  ypserv

100004    2   tcp    776  ypserv

100004    1   tcp    776  ypserv

100009    1   udp    785  yppasswdd

[root@master ~]# rpcinfo -u localhost ypserv

程序 100004 版本 1 就绪并等待

程序 100004 版本 2 就绪并等待

生成NIS数据库

[root@master ~]# /usr/lib/yp/ypinit -m

At this point, we have to construct a list of the hosts which will run NIS

servers.  master.test 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:  master.test

next host to add:

The current list of NIS servers looks like this:

master.test

Is this correct?  [y/n: y]  y

We need a few minutes to build the databases…

Building /var/yp/test/ypservers…

Running /var/yp/Makefile…

gmake[1]: Entering directory `/var/yp/test’

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]: Leaving directory `/var/yp/test’

master.test has been set up as a NIS master server.

Now you can run ypinit -s master.test on all slave server.

----------------------------------------------

关于ypinit的选项

OPTIONS

-m     If the local host is the NIS master.(只用于master)

-s     Set up a slave server with the database from master_name (在master上生成一个slave的NIS服务器)

建立完数据库后,需要将服务进行重启!

[root@master ~]# service ypserv restart

停止 YP 服务器的服务:                                     [确定]

启动 YP 服务器的服务:                                     [确定]

[root@master ~]# service yppasswdd restart

停止 YP 口令服务:                                             [确定]

启动 YP 口令服务:                                             [确定]

允许Master\Slave之间的同步

[root@master yp]# vi /var/yp/Makefile

NOPUSH=true

添加相应的slave服务器

[root@master yp]# cat /var/yp/ypservers

slave.test

[root@master yp]#

配置slave服务器

[root@slave ~]# echo “NISDOMAIN=test” >> /etc/sysconfig/network

[root@slave ~]# nisdomainname test

[root@slave ~]# echo “/bin/nisdomainname test” >> /etc/rc.d/rc.local

[root@slave ~]# cat /etc/hosts

192.168.10.10   master.test

完成以上工作后,执行同步数据库的操作

[root@slave ~]# /usr/lib/yp/ypinit -s master.test

We will need a few minutes to copy the data from master.test.

Transferring services.byname…

Trying ypxfrd … not running

Transferring rpc.bynumber…

Transferring passwd.byname…

Transferring services.byservicename…

Transferring ypservers…

Transferring netid.byname…

Transferring protocols.bynumber…

Transferring rpc.byname…

Transferring hosts.byaddr…

Transferring mail.aliases…

Transferring passwd.byuid…

Transferring hosts.byname…

Transferring protocols.byname…

Transferring group.byname…

Transferring group.bygid…

你会发现了这么多的信息,都提示没ypxfrd没有运行,因此可见要同步数据库还得要运行ypxfrd服务

在主服务器上启动ypxfrd这个服务

[root@master test]# /etc/init.d/ypxfrd start

启动 YP 映射图服务器:                                     [确定]

重新同步数据库

Trying ypxfrd … success

slave’s NIS data base has been set up.

If there were warnings, please figure out what went wrong, and fix it.

查看用户的密码文件

[root@slave ~]# ypcat -h slave.test passwd.byname

guest60:$1$DuqvMNPM$qHeWMGE36AeIFbiiVuJML/:560:560::/home/guest60:/bin/bash

guest88:$1$TnjZhKpr$Ju838YqoW8PQD4mkXiE/B/:588:588::/home/guest88:/bin/bash

………省略了其他大量的账户

guest45:$1$VCm8pPqP$rT7YbQOhokIi1Q7wzfmY3/:545:545::/home/guest45:/bin/bash

现在测试一下我们的客户端:

将客户端加入到nis的域里面,然后再测试 autofs的设置部分:

总结一下客户端需要设置的地方:

1、在网络项加入NIS域

/etc/sysconfig/network

添加NISDOMAIN=test

2、修改HOSTS文件

/etc/hosts

3、增加开机自动加入NIS域

/etc/rc.d/rc.local

/bin/nisdomainname test

4、修改用户密码的认证顺序文件

[root@client ~]# vi /etc/nsswitch.conf

passwd:     files nis

shadow:     files nis

group:      files nis

5、修改/etc/yp.conf客户端配置文件

[root@client ~]# cat /etc/yp.conf

domain test server master.test

domain test server slave.test

6、修改/etc/sysconfig/authconfig这个文件

[root@client ~]# vi /etc/sysconfig/authconfig

USENIS=yes

7、修改系统认证文件

[root@client ~]# vi /etc/pam.d/system-auth

password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok nis

修改完成以上7项之后,我们需要重启两个服务

[root@client ~]# service portmap restart

停止 portmap:                                             [确定]

启动 portmap:                                             [确定]

[root@client ~]# service ypbind restart

关闭 NIS 服务:                                                                                                                  [失败]

设置 NIS 域名 test:                                         [确定]

打开 allow_ypbind 的 SELinux 布尔值

关联到 NIS 域:                                                                                                                    [确定]

监听 NIS 域服务器。

[root@client ~]#

--------完成以上配置后,我们可以开始进行测试了----

[root@cheng ~]# ssh [email protected]

[email protected]′s password:

Could not chdir to home directory /home/guest1: No such file or directory

-bash-3.2$

#成功登陆了,但是没有家目录,为什么呢?因为guest1的家目录在master.test上,肯定不会在client这台机器上,那么我们应该如让guest1这个用户可以使用这台机,并且能够获得完整的目录环境呢?

#答案是使用autofs实现NIS用户的家目录自动挂载。

围绕这个思路:

1、要将guest1的家目录共享出来

2、实现客户端的自动挂载

实现这个思路需要:NFS+autofs的支持

将master.test上的home目录给共享出来

[root@master ~]# cat /etc/exports

/home   *(rw)

重启有关服务

[root@master ~]# service nfs restart

关闭 NFS mountd:                                          [确定]

关闭 NFS 守护进程:                                                                                                            [确定]

关闭 NFS quotas:                                          [确定]

关闭 NFS 服务:                                                                                                                    [确定]

启动 NFS 服务:                                                                                                                    [确定]

关掉 NFS 配额:                                                                                                                   [确定]

启动 NFS 守护进程:                                                                                                            [确定]

启动 NFS mountd:                                          [确定]

设置客户端机器上的自动挂载

编辑控制文件

[root@client ~]# vi /etc/auto.master

/home   /etc/auto.misc

配置配置文件

[root@client ~]# vi /etc/auto.misc

*               -fstype=nfs                     192.168.10.40:/home/&

重启服务

[root@client ~]# service autofs restart

验证:

[root@client home]# ll

总计 0

[root@client home]# su – guest

[guest@client ~]$ pwd

/home/guest

[guest@client ~]$

从现在的用户切换到另外一个用户

[guest@client ~]$ su – guest89

口令:

[guest89@client ~]$ pwd

/home/guest89

[guest89@client ~]$

再回到主目录

[root@client home]# ls

guest  guest89

继续阅读