生产环境中的NIS+NFS+AUTOFS服务器的配置

回复 收藏
本帖最后由 lqph3387 于 2010-11-29 14:29 编辑

目前有这样一个需求,新来了一个同事,需要给他这200多台服务器的权限,我怎么分配给他呢,不可能登陆到每一台服务器然后给他建个登陆账户吧,这时候我们就需要用到NIS了,来集中管理和认证权限,网络信息服务(NIS)是集中控制几个系统管理数据库的网络用品。NIS简化了UNIX和LINUX桌面客户的管理工作,客户端利用它可以使用中心服务器的管理文件。桌面系统的用户无需建立他们自己的/etc/passwd,他们只简单的使用维护在NIS服务器的文件即可。

1首先确认关闭iptables
# /etc/init.d/iptables stop
# chkconfig iptables off

2安装ypbind包,确认你联网执行下面的命令
# yum install -y ypserv ypbind portmap yp-tools

3修改/etx/sysconfig/network加入以下配置
NISDOMAIN="nis-cmdi.com"

4 修改/etc/yp.conf加入下面的设置
ypserv 192.168.1.212
在配置文件 /etc/hosts 中添加 NIS 服务器的记录
192.168.1.212 nis-cmdi.com
修改/etc/ypserv.conf
把最后一行的注释去掉,也就是说通配所有的主机,加入所有的域,map所有的东西,none是表示没有安全性,这一项其实是个安全选项,可以通过这个控制权限
*                        : *       : *                : none
为了安全,你可以这样写:
127.0.0.0/255.255.255.0   : * : * : none
192.168.1.0/255.255.255.0 : * : * : none
*                         : * : * : deny

5 接下来执行下面的命令
# /etc/init.d/portmap start
# /etc/init.d/yppasswdd start
# /etc/init.d/ypserv start
# chkconfig portmap on
# chkconfig yppasswdd on
# chkconfig ypserv on

6 修改/var/yp/Makefile将
all: passwd group hosts rpc services netid protocols mail
修改为
all: passwd group hosts rpc services netid protocols mail auto.master auto.home

7 接下来添加我们需要的用户
#groupadd system
# useradd -g system -u 601 -d /home/rhome/liyi liyi
# useradd -g system -u 601 -d /home/rhome/lier lier

8 接下来,执行:
# /usr/lib/yp/ypinit -m
按下Ctrl-D和回答Y执行下一步操作
# cd /var/yp
# make
(以上两步为初始化数据库)

9 现在执行
authconfig --update --enablenis
如果这步出现问题,请重新执行上面步骤8

11 如果9顺利通过,现在执行下面的命令,并可以看到用户口令表
# getent passwd

通过NFS共享/home/rhome目录
1 首先禁用SeLinux,修改/etc/sysconfig/selinux
SELINUX=disabled
重启服务器

2 修改/etc/exports加入
/home/rhome  192.168.1.0/24(async,rw,no_root_squash)

3 然后重启NFS
# /etc/init.d/nfs restart

4 现在在本机执行exportfs命令,应该可以看到下面的输出
/home/rhome
如果执行完以上步骤一切正常,那么NIS服务器的NFS就配置好了

客户端的配置
1 在客户端上安装ypbind软件包
# yum install -y ypbind yp-tools

2 执行system-config-authentication.选择Enable NIS然后点Configure按照我们刚才的设置填入NIS 域和NIS服务器的地址然后点OK确定,并退出

3 现在在客户端执行
getent passwd
应该可以输出服务器上的口令表


4 修改/etc/auto.master,注释掉所有以前的配置,加入
/home/rhome auto.home

6 创建/etc/auto.home文件,加入
*  -rw,soft,intr  192.168.1.212:/home/rhome/&

7 现在执行
# ypcat auto.master应该可以看到
auto.home


8 重启ypbind服务
# /etc/init.d/ypbind restart
# chkconfig ypbind on

9重启autofs
# /etc/init.d/autofs restart
# chkconfig autofs on

到此,应该可以用服务器上用户名和密码登录客户端的系统了
2010-11-19 17:06 举报
已邀请:
0

雷老师 管理员

赞同来自:

本帖最后由 lqph3387 于 2010-11-23 10:10 编辑

如果在NIS服务器上又增加了新的虚拟账号,只需要重复以下2步即可,客户端无需任何设置就可用新账号登陆系统
# cd /var/yp
# make

另外有时候你可能登陆的账号5分钟不活动就会自动下线,这个影响的参数如下:
这些资源只有在你试图访问的时候才会去自动挂载,而在一段时间之后,如果你不再使用这些资源,autofs会自动卸载这些资源。默认时间为5分钟(300秒),此选项由/etc/sysconfig/autofs定义,根据需要可以修改。/etc/sysconfig/autofs的内容如下
DEFAULT_TIMEOUT=300 (修改自动挂载时间)

在客户端还可以使用yppasswd命令修改个人密码
[nisuser@client ~]$ yppasswd
Changing NIS account information for nisuser on server.
Please enter old password:          <----此处要输入旧密码
Changing NIS password for nisuser on server.
Please enter new password:          <----新密码
Please retype new password:         <----确认新密码
The NIS password has been changed on server.   <----修改的确认信息
0

雷老师 管理员

赞同来自:

本帖最后由 lqph3387 于 2010-11-23 10:25 编辑

NIS服务器一台是不够的,如果宕机了,那么将所有客户机都不能登陆系统了,这是件很糟糕的事情,为了防止单点故障,所以我们还需要配置一台从NIS服务器的,配置如下:
1、参照主服务器安装ypserv包

2、编辑主配置文件/etc/ypserv.conf,添加如下行:
127.0.0.0/255.255.255.0   : * : * : none
192.168.1.0/255.255.255.0 : * : * : none
*                         : * : * : deny

3、编辑主服务器上的/var/lib/yp/Makefile文件,使其能在更改maps后主动将更改push至从服务器
#vim /var/yp/Makefile
找到如下行:
NOPUSH=true
更改为:
NOPUSH=false

4、编辑主服务器上的/var/yp/ypservers文件,指明服务器将maps可以push到的目标从服务器

#vim /var/yp/ypservers
添加如下行:
192.168.1.213 (注:此处最好使用从服务器名称,前提是此从服务器名能被主服务器解析,你可以通过编辑主服务器的/etc/hosts文件实现)

5、开启主服务器的资料传送进程

#service ypxfrd start

6、启动从服务器的portmap、ypserv和yppasswdd进程

#service portmap start
#service ypserv start
#service yppasswdd start

7、从主服务器获得maps资料

#/usr/lib/yp/ypinit -s 192.168.1.212  (也可以指定主服务器的名称,前提是你的从服务器可以解析些名称)
We will need a few minutes to copy the data from server.
Transferring rpc.bynumber...
Trying ypxfrd ... success
Transferring protocols.bynumber...
Trying ypxfrd ... success
Transferring hosts.byaddr...
Trying ypxfrd ... success
Transferring ypservers...
Trying ypxfrd ... success
Transferring hosts.byname...
Trying ypxfrd ... success
……………………………………
……………………………………
success,表明数据库已同步完毕!
0

雷老师 管理员

赞同来自:

本帖最后由 lqph3387 于 2011-9-19 10:46 编辑

好多同学在尝试更新slave的机器时,出现报错!
[root@slave yp]# /usr/lib/yp/ypinit -s master.test
Can’t enumerate maps from master.test. Please check that it is running.

对此,排错的思路如下:
1、检查master机器的ypservers配置,/var/yp/Makefile文件
2、在slave的机器上开启ypbind服务,并进行联机测试
3、ypserv.conf文件

具体细节如下:
1、ypservers的配置
[root@master yp]# cat /var/yp/ypservers
master.test   //主服务器主机名,也可以是ip
slave.test     //从服务器主机名,也可以是ip

Makefile文件
[root@master yp]# vi /var/yp/Makefile
NOPUSH=false #允许数据据传输

为了方便排错,我已将该文件权限修改为所有权限,记得改完后重启服务
[root@master yp]# cat /etc/ypserv.conf
* : * : * : none

2、开启slave的ypbind服务,并以客户端的形式来测试master的服务器
[root@slave yp]# service ypbind restart
关闭 NIS 服务: [确定]
关联到 NIS 域: [确定]
监听 NIS 域服务器。
[root@slave yp]# ypcat -h master.test passwd.byname
student42:$1$Md5TZRrf$UAVsieQiP9NtK1MzWnphw0:542:500::/home/student42:/bin/bash
student22:$1$w2k.mygE$dRvYKxBzZDJ6bbTPja/rM.:522:500::/home/student22:/bin/bash
student47:$1$7QBTdlNj$ElSoXDtFd.2PvPf7GuJjv0:547:500::/home/student47:/bin/bash
student27:$1$uFsh0iUk$HvDfHSxkRtWCU.4KscHBj.:527:500::/home/student27:/bin/bash
省去很多结果…

以客户端形式可以获取到服务器上的用户信息
[root@slave yp]# 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”

该问题的报错,仍在继续。有人说slave的机器上要开启ypbind服务,我这边开了这个服务,仍然不能够从master处获取更新。

If your database is corrupt or your /etc/hosts files are incorrect, you’ll get map enumeration errors as shown. Use the make command again to rebuild your database on the master when necessary.
看到这个提示,估计可能是hosts文件的问题。于是修改master及slave的hosts文件:加入最后2句

[root@slave yp]# 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.1.212     master.test
192.168.1.213     slave.test

再次配置发现OK

[root@slave yp]# /usr/lib/yp/ypinit -s master.test
We will need a few minutes to copy the data from master.
Transferring services.byname…
Trying ypxfrd … success

Transferring passwd.byname…
Trying ypxfrd … success

Transferring services.byservicename…
Trying ypxfrd … success

Transferring ypservers…
Trying ypxfrd … success

Transferring hosts.byaddr…
Trying ypxfrd … success

Transferring passwd.byuid…
Trying ypxfrd … success

Transferring hosts.byname…
Trying ypxfrd … success

Transferring group.byname…
Trying ypxfrd … success

Transferring group.bygid…
Trying ypxfrd … success

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: