设为首页 收藏本站
查看: 839|回复: 0

[经验分享] CentOs6.7搭建NIS+NFS服务

[复制链接]
累计签到:130 天
连续签到:1 天
发表于 2017-12-6 15:01:17 | 显示全部楼层 |阅读模式
# CentOs6.7搭建NIS+NFS服务

NIS服务器主要用来对用户的账户与密码进行统一管理,它存在的意义:假设公司内部共有20台Linux主机,对于公司内的员工来说,他们可以访问所有的这20台Linux主机,我们假设公司某位成员需要修改密码,为了使能够登录所有的主机,传统的思维就是要分别到这20太Linux主机上执行passwd,这样是非常低效的,对管理人员来说是非常不方便的事情,因此NIS服务就是来解决这个问题的,它的原理是,将所有用户的帐号密码等信息都保存在NIS服务器上,当某位用户登录其中的一台Linux主机时,在进行帐号密码验证时,登录的那台主机会向NIS服务器发送验证请求,如果正确则用户登录成功,反之用户登录不成功。

NIS服务器是将用户的帐号和密码保存在数据库文件中,NIS客户机向它发送请求是需要通过RPC(远程过程调用)这个协议。

所有的NIS客户机都是请求的一台NIS服务器,因此就可以实现一个帐号可以登录所有Linux主机了,而且当用户修改了自己的密码后,它会同步到NIS服务器的数据库文件中,这样就完成了一改多改的效果,对与帐号管理非常方便。


# 一、系统环境

- 系统架构

|主机名|IP|角色|
|------|---|-----|
|server|192.168.11.131|NIS和NFS服务端|
|client|192.168.11.130|NIS和NFS客户端|

- 安装软件

|软件包|说明|安装位置|
|-------|-----|---------|
|yp-tools|提供NIS相关查询命令|server/client|
|ypbind|绑定clients与server通信服务进程|server/clients|
|ypserv|NIS服务端主程序|server|
|rpcbind|RPC必须软件|server/clients|


# 二、关闭防火墙,SELinux,修改hostname
以下步骤除了第4步在server端操作,其余server与clients都操作。
1. 关闭防火墙:
   ```
   # chkconfig --del iptables
   ```
2. 关闭SELinux:
   ```
   # sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
   ```
3. 添加NIS域名:
   ```
   # echo "NISDOMAIN=nis.com" >>/etc/sysconfig/network
   ```
   >备注:添加到这里就不用每次开机启动,活着添加到rc.local里面了。
4. 设定NIS固定端口(1011):
   ```
   # echo 'YPSERV_ARGS="-p 10011"'  >>/etc/sysconfig/network
   ```
   >备注:设置NIS每次都在固定的端口,即:1011启动,这是为了将来方便使用iptables直接管理NIS。
5. 添加hosts解析记录:
   ```
   # echo "192.168.11.131 server.nis.com" >>/etc/hosts
   # echo "192.168.11.130 client.nis.com" >>/etc/hosts
   ```

# 三、NIS服务端安装配置
因为安装NIS测试中会遇到些问题,需要处理,所以我们先安装NIS服务,等安装测试完毕后,再安装NFS。
1. 安装NIS所需软件:
   ```
   # yum install -y ypserv ypbind rpcbind yp-tools
   ```
2. 修改配置文件ypserv.conf:
   使用默认的配置文件也是能运行的,我使用的默认配置,没有修改,不过一般考虑安全会添加ip访问限制,例如:
   ```
   [主机名/IP]                             [NIS域名]     [可用数据库名称]        [安全限制]
   192.168.11.0/255.255.255.0      : *                  : *                       :  none
  ```
  >[安全限制]: 包括没有限制none ,  仅能使用小于1024的端口port , 以及拒绝deny

3. 修改yppasswdd文件:
   ```
   # vi /etc/sysconfig/yppasswdd
   17    YPPASSWDD_ARGS="--port 1012"
   ```
4. 启动服务,设定开机启动:
   ```
   # service ypserv start
   # chkconfig ypserv on
   # service yppasswdd start
   # chkconfig yppasswdd on
   ```
5. 查看服务:
   ```
   #  rpcinfo -u localhost ypserv
   program 100004 version 1 ready and waiting
   program 100004 version 2 ready and waiting
   ```
   >说明:出现这个就算成功了。
6. 创建账户:
   ```
   # useradd -u 1001 test001
   # useradd -u 1002 test002
   # echo 123456 | passwd --stdin test001
   # echo 123456 | passwd --stdin test002
   ```
  >这样就创建好了test001和test002,密码一致,-u代表uid。
7. 将创建的账户与密码转换成数据库:
   ```
   # /usr/lib64/yp/ypinit -m
   At this point, we have to construct a list of the hosts which will run NIS
   servers.  server.nis.com 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.nis.com
       next host to add:  #按ctrl+D
   The current list of NIS servers looks like this:
   
   server.nis.com
   
   Is this correct?  [y/n: y]  y  #输入y
   We need a few minutes to build the databases...
   Building /var/yp/nis.com/ypservers...
   Running /var/yp/Makefile...
   gmake[1]: Entering directory `/var/yp/nis.com'
   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/nis.com'
   
   server.nis.com has been set up as a NIS master server.
   
   Now you can run ypinit -s server.nis.com on all slave server.
   ```
   >注意:如果用户密码发生过变化,就需要重新制作数据库,重新启动ypserv 以及yppasswdd。
8. 到此NIS服务端设置完毕。

# 四、NIS客户端安装配置
1. 安装NIS客户端软件:
   ```
   # yum install -y ypbind yp-tools setuptool
   ```
   >说明:setuptool是命令行图形化配置工具
2. 设置yp.conf主配置文件:
   ```
   # vi /etc/yp.conf
   domain nis.com server server.nis.com
   ```
   >格式为:domain  你的NIS Server和Client所在的域名  server  你的NIS服务器的IP地址,添加在最后就可以了。

3. 修改验证用户账户和密码的设置:
    - 手动修改(不推荐):
       ```
       # vi /etc/nsswitch.conf
       ```
       搜索到以下内容:
       ```
       passwd: files

        shadow: files
        
        group: files
        
        #hosts: db files ldap nis dns
        
        hosts: files dns
        ```
        将其修改为:
        ```
        passwd: files nis

        shadow: files nis
        
        group: files nis
        
        #hosts: db files ldap nis dns
        
        hosts: files nis dns
        ```
     - 图形化操作(推荐):
       ```
      # setup
      ```
      按照以下图操作:
      ![]()
      ![]()
      ![]()
      ![]()

      完成后会自动重启rpbind服务,正常如下:
      关闭 NIS 服务:                                            [确定]
       启动 NIS 服务:                                           [确定]
       绑定 NIS 服务:.                                          [确定]
4. 启动服务,并加入开机启动:
   ```
   # service ypbind start
   # chkconfig  ypbind on
   ```
5. 测试客户端的连接:
   ```
   # yptest
    Test 1: domainname
    Configured domainname is "nis.com"
   
    Test 2: ypbind
    Used NIS server: server.nis.com
   
    Test 3: yp_match
    WARNING: No such key in map (Map passwd.byname, key nobody)
   
    Test 4: yp_first
    test001 test001:$6$T8cLZP10$yrLCwB9Yn2rStNVP.YS.v7kgKcNowfJvIFq0PianblosSej9mmw0l7Y24WTQQNZsOFS0ZEmZB1tbaSHJqa4q21:1001:1001::/home/test001:/bin/bash
   
    Test 5: yp_next
    test002 test002:$6$Z/pvpzPa$PKpxiMOBSh3zkDlQjabsB4jaxHXI1H4yDMua4aBF5ERGa5blK0FMTL0mQU0tk1qtevjHmKuRLsPRepd/is0hh1:1002:1002::/home/test002:/bin/bash
   
    Test 6: yp_master
    server.nis.com
   
    Test 7: yp_order
    1512488662
   
    Test 8: yp_maplist
    group.byname
    passwd.byname
    group.bygid
    protocols.bynumber
    netid.byname
    ypservers
    mail.aliases
    hosts.byaddr
    passwd.byuid
    protocols.byname
    hosts.byname
    services.byservicename
    rpc.byname
    services.byname
    rpc.bynumber
   
    Test 9: yp_all
    test001 test001:$6$T8cLZP10$yrLCwB9Yn2rStNVP.YS.v7kgKcNowfJvIFq0PianblosSej9mmw0l7Y24WTQQNZsOFS0ZEmZB1tbaSHJqa4q21:1001:1001::/home/test001:/bin/bash
    test002 test002:$6$Z/pvpzPa$PKpxiMOBSh3zkDlQjabsB4jaxHXI1H4yDMua4aBF5ERGa5blK0FMTL0mQU0tk1qtevjHmKuRLsPRepd/is0hh1:1002:1002::/home/test002:/bin/bash
    1 tests failed
    ```
    >会看到测试信息,分辨出是否出了问题  Test 3  Wraing : No such key in map(Map passwd.byname , key nobody)
6. 检查数据库:
   ```
   # 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"
   ```
   >说明正常
7. 测试客户端登录,如图:
    ![]()
    出现:Could not chdir to home directory /home/test001: No such file or directory这个是正常的,因为我们知道所有用户的信息都是保存在NIS服务器端的,因此找不到用户的目录,这里的解决方法是要用到NFS , 即将/home目录共享,在NIS客户端只需要挂载即可,所以我们将NFS安装放在后面,主要就是说明这个问题的。
8. 到此NIS服务端和客户端安装配置测试完成,接下来安装nfs解决上面出现扎不到用户家目录的问题。

# 五、安装NFS服务端
1. 在server上安装NFS服务端:
   ```
   # yum install nfs0utils
   ```
2. 为nfs指定固定的端口:
   ```
   # vi /etc/sysconfig/nfs
   ```
   搜索并改为以下内容:
   ```
   12:RQUOTAD_PORT=30001
   20:LOCKD_TCPPORT=30002
   22:LOCKD_UDPPORT=30002
   57:MOUNTD_PORT=30003
   63:STATD_PORT=30004
   ```
3. 防火墙开放上述端口:
   ```
   ptables  -I INPUT -p tcp --dport 111 -j ACCEPT
   iptables  -I INPUT -p udp --dport 111 -j ACCEPT
   iptables  -I INPUT -p tcp --dport 2049 -j ACCEPT
   iptables  -I INPUT -p udp --dport 2049 -j ACCEPT
   iptables  -I INPUT -p tcp --dport 30001:30004 -j ACCEPT
   iptables  -I INPUT -p udp --dport 30001:30004 -j ACCEPT
   service iptables save
   service iptables restart
   ```
   >说明:本环境中是关闭了iptalbes不用设定,这个留着需要设置的参考
4. 创建共享目录:
    因为账户目录位于/home下,所以这里就直接使用/home目录,具体根据实际情况而定,不过方法都一样。
5. 配置exports文件:
   ```
   # vi /etc/exports
   /home 192.168.11.130(rw,sync,no_root_squash)
   /home *(ro)
   ```
   >说明:这一行表示只有192.168.11.130客户端能够以读写权限挂载共享目录,其他客户端只能以只读权限挂载。
6. 启动服务,并加入自启:
   ```
   # service  nfs start
   启动 NFS 服务:                                            [确定]
   启动 NFS mountd:                                       [确定]
   启动 NFS 守护进程:                                       [确定]
   正在启动 RPC idmapd:     
   ```
   ```
   # chkconfig nfs on
   ```
7. 到此server上的nfs服务端安装配置启动完毕。

# 六、安装nfs客户端
1. 在client上安装nfs客户端:
   ```
   # yum install nfs-utils
   ```
   >NFS客户端不需要启动NFS服务,但需要安装nfs-utils。
2. 查看确认挂载点:
   ```
   # showmount  -e 192.168.11.131
   Export list for 192.168.11.131:
   /home (everyone)
   ```
   >-e选项显示NFS服务端的导出列表。
3. 创建挂载目录:
    - 由于服务端使用的/home,所以客户端就不用创建了。
    - 如果没有,参考一下步骤:
       ```
       # mkdir -p /root/remote_dir
      ```
      >其中,/root/remote_dir为共享目录的挂载点目录,一般是服务端保持一样的位置
4. 挂载共享目录;
   ```
   # mount -t nfs 192.168.11.131:/home /home

   ```
   >-t选项用于指定文件系统的类型为nfs,前面的/home为远程要挂载的位置,后面的/home是本地需要被挂载的位置。
5. 查看是否挂载成功:
   - 使用df命令查看:
     ```
     # df
     Filesystem           1K-blocks    Used Available Use% Mounted on
     /dev/sda3             29414492 2420576  25499748   9% /
     tmpfs                   243140       0    243140   0% /dev/shm
     /dev/sda1               516040   39464    450364   9% /boot
     192.168.11.131:/home  29414528 2422400  25497984   9% /home
     ```
     >最后一行就是。
   - 也可以查看本地/home目录如果挂载成功,会同步服务端的目录到本地:
     ```
     # ls /home/
     test001  test002
     ```
6. 再次使用test001登录查看显示是否还有没有目录提示等信息:
    登录后显示如下:
    ![]()
    看的出来,没有问题了
7.到此所有的问题解决了NIS+NFS搭建完成。

# 关于NFS客户端挂载补充说明:
1. 卸载共享目录(说下):
    卸载跟平时的一样没啥区别,这里说下:
    ```
    # umount /home
    ```
    >说明,建议这样操作:# umount  -t nfs 192.168.11.131:/home,如果你的/home是个单独的分区,就有可能影响其他了。
2. 开机自动挂载:
   fstab文件中添加共享目录的挂载条目,即可实现开机自动挂载,随后与NFS服务端的连接将始终处于活动状态。
   ```
   # vi /etc/fstab
   ```
   在上述文件末尾加入共享目录的挂载条目,如下所示:
   ```
   92.168.11.131:/home /home nfs default 0 0
   ```
   >其中,第5个字段设置为0表示共享目录的文件系统不需要使用dump命令进行转储,第6个字段设置为0表示共享目录的文件系统不需要使用fsck命令进行检查。
   
   除此之外,还可以使用自动挂载器(autofs)实现按需自动挂载网络共享目录。当共享不再使用,并处于不活动状态一定时间之后,自动挂载器会对共享解除挂载。
3. 按需自动挂载(特殊映射):
    当autofs服务运行时,系统中存在一个名为/net的特殊目录,但是该目录将显示为空。NFS客户端通过特殊映射实现按需自动挂载共享目录的步骤如下所示:
    - 修改不活动状态的超时时间,运行以下命令:
       ```
       # vi /etc/sysconfig/autofs
       将上述文件中的
       TIMEOUT=300
       替换为
       TIMEOUT=600
       也就是将不活动状态的超时时间由5分钟修改为10分钟。
        ```   
         配置完成之后,重启autofs服务:
        ```
         service autofs restart
        ```
    - 访问网络共享目录:
       ```
       # cd /net/192.168.11.130/home
       ```
       >运行上述命令时,autofs会自动挂载NFS服务端中的网络共享目录。
    - 卸载已挂载的网络共享目录:
      在/net/192.168.11.130/home之下的所有文件和目录停止使用且超时期满之后(10分钟),autofs将卸载共享目录。
4. 按需自动挂载(间接映射:
   - 修改不活动状态的超时时间:
     ```
     # vi /etc/sysconfig/autofs

     将上述文件中的
     TIMEOUT=300
     替换为
     TIMEOUT=600
     也就是将不活动状态的超时时间由5分钟修改为10分钟。
     ```
  - 建立共享目录挂载点的父目录:
    ```
    mkdir -p /root/demo
    ```
  - 配置共享目录挂载点的父目录:
    ```
    # vi /etc/auto.master

    上述文件的内容如下所示:
    /root/demo    /etc/auto.demo
    ```
    >其中,/root/demo是挂载点的父目录,这个目录在系统中始终可见,并由autofs服务监控,以确定是否“需要”挂载/创建子目录挂载点。/etc/auto.demo为单个配置文件,包含由autofs服务在此父目录下管理的子目录挂载点的列表。
  - 配置共享目录挂载点目录:
    ```
    # vi /etc/auto.demo

     上述文件的内容如下所示:
     remote_dir -rw 192.168.4.211:/data/nfs_share
     ```
     >其中,remote_dir为子目录挂载点,此目录通常不可见,只有当autofs服务创建此目录和挂载共享之后对其进行直接命名/访问时,它才会变为可见。-rw为挂载网络共享时要使用的挂载选项。192.168.4.211:/data/nfs_share为需要挂载的NFS服务端和共享目录。
  - 重新启动autofs服务:
    ```
    # service autofs restart
    ```
  - 访问网络共享目录:
    ```
    d /root/demo/home
    ```
    >运行上述命令之后,autofs将自动创建挂载点目录,并且挂载共享目录。
  - 卸载网络共享目录:
     在/root/demo/home之下的所有文件和目录停止使用且超时期满之后(10分钟),autofs将卸载共享目录。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421355-1-1.html 上篇帖子: vRealize Operations Manager 6.5的安装与配置 下篇帖子: 服务器总是关机
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表