分类: LINUX
2010-01-25 22:17:15
yppasswd:yppasswdd not running on NIS master host在客户端执行yppasswd时一直报这个错,郁闷了很久,最后终于解决了,方法在最底部。
安装NIS
[root@16nn ~]# rpm -ivh /media/Server/ypserv-2.19-5.el5.i386.rpm
warning: /media/Server/ypserv-2.19-5.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:ypserv ########################################### [100%]
使用su切换用户,如果像下面一样,就说明已经OK了
[root@client ~]# su nistest
bash-3.2$
客户端也可以采用命令的形式配置
设定NIS域名
[root@centosa ~]# nisdomainname 16nn.com
[root@centosa ~]# echo 'NISDOMAIN=16nn.com'>>/etc/sysconfig/network
服务设为自动启动
[root@centosa ~]# chkconfig ypbind on
[root@centosa ~]# echo 'domain 16nn.com server 192.168.11.2'>>/etc/yp.conf
[root@centosa ~]# vi /etc/nsswitch.conf
找到如下项:
passwd: files
shadow: files
group: files
#hosts: db files nisplus nis dns
hosts: files dns
将其修改为:
passwd: files nis
shadow: files nis
group: files nis
#hosts: db files nisplus nis dns
hosts: files nis dns
启动服务
[root@centosa ~]# service ypbind start
Turning on allow_ypbind SELinux boolean
Binding to the NIS domain: [ OK ]
Listening for an NIS domain server.
配置客户端在启动时登录到NIS域
[root@centosa ~]# vi /etc/sysconfig/authconfig
找到如下行:
USENIS=no
修改为:
USENIS=yes
切换用户测试
[root@centosa ~]# su nistest
bash-3.2$
客户端的一些测试命令
[root@centosa ~]# ypcat passwd
nistest:$1$BzGQaGCh$n26B9qRzmcWiC8qTRSaNy.:500:500::/home/nistest:/bin/bash
[root@centosa ~]# ypmatch nistest passwd
nistest:$1$BzGQaGCh$n26B9qRzmcWiC8qTRSaNy.:500:500::/home/nistest:/bin/bash
[root@centosa ~]# 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@centosa ~]# ypcat hosts
127.0.0.1 16nn.com localhost.localdomain localhost
结合NFS,让用户的主目录漫游
在NIS服务器上把用户的主目录给共享出来,并启动NFS,默认NFS已安装
[root@16nn ~]# echo '/home *(rw,sync)'>>/etc/exports
[root@16nn ~]# service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
设置NFS自动启动
[root@16nn ~]# chkconfig nfs on
客户端
配置系统在需要时自动挂载
[root@centosa ~]# echo '/home /etc/auto.home --timeout=30'>>/etc/auto.master
[root@centosa ~]# cp /etc/auto.misc /etc/auto.home
[root@centosa ~]# vi /etc/auto.home
[root@centosa ~]# echo '* -ro,soft,intr 192.168.11.2:/home/&'>>/etc/auto.home
启动服务
[root@centosa ~]# service autofs restart
Stopping automount: [ OK ]
Starting automount: [ OK ]
再切换用户测试,发现前面的符号变掉了,pwd查看,竟然是/home/nistest,这个目录在本机中是不存在的,通过df -h查看是把服务器上该用户的主目录挂载在本机。切换回root过一会儿再查看/home下,nistest这个目录会自动消失掉
[root@centosa ~]# su - nistest
[nistest@centosa ~]$ pwd
/home/nistest
[nistest@centosa ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 5.7G 2.7G 2.8G 50% /
/dev/sda1 99M 12M 83M 12% /boot
tmpfs 254M 0 254M 0% /dev/shm
192.168.11.2:/home/nistest
996M 34M 911M 4% /home/nistest
NFS相关的一些命令
exportfs -rv 重新挂载,将共享目录显示到屏幕上
exportfs -au 卸载所有已挂载的访问
showmount -e IP 查看共享文件
less /var/lib/nfs/xtab 查看访问记录日志
相关安全参数
rw: 可写权限
ro: 只读取权限
no_root_squash: 如果登入共享目录的用户是root,则对于这个共享目录而言,它具有root权限,不安全!
root_squash: ..........如果是root登陆,自动变成匿名用户.
all_squash: 不论登陆的用户是谁,都自动变成匿名用户.相当于nobody
实际应用
/tmp *(rw,no_root_squash)
/test 192.168.11.1(rw)
/home/test 192.168.11.2(rw) *(ro)
在做好之后遇到一个问题,客户端用yppasswd来更新密码时,一直报下面的错:
yppasswd:yppasswdd not running on NIS master host
在服务器上运行该命令正常。
后来无意中在客户端上ping了下16nn.com也就是NIS的域名,发现解析的是127.0.0.1
然后在/etc/hosts中添加192.168.11.2 16nn.com --192.168.11.2是我的NIS服务器IP
再运行yppasswd,呵呵,竟然好了。分析了下觉得是:yppasswd在更新密码时用的NIS域名来访问服务器的,NIS域名如果解析为127.0.0.1,在客户端上肯定执行不成功了,因为客户机上本来就没有运行这个服务,服务器本身有这个服务当然能执行成功了。
另外一种情况:
yppasswd:yppasswdd not running on NIS master host ("hostname").
这时候你ping下hostname看解析的为多少,如果为127.0.0.1的话,那就赶紧在/etc/hosts中加入IP hostname,如果解析正常,自然不会报错了。