Kerberized NFSv4 with NIS

<!--[if !supportLists]-->一、<!--[endif]-->环境

kdcserver1.example.com  192.168.32.31

nfs&nis server: station2.example.com  192.168.32.32

nfs&nis client: station3.example.com  192.168.32.33

注:默认kerberosnis环境已有配置

<!--[if !supportLists]-->二、<!--[endif]-->NFSv4 Server配置

<!--[if !supportLists]-->1、 <!--[endif]-->固定相关端口,并开启安全功能

[root@station2 ~]# vi /etc/sysconfig/nfs

LOCKD_TCPPORT=4001

LOCKD_UDPPORT=4001

MOUNTD_PORT=4002

STATD_PORT=4003

SECURE_NFS="yes"  

 #启动nfs4必须开启此选项,默认nfs4只支持tcp

<!--[if !supportLists]-->2、 <!--[endif]-->绑定mount需要共享的文件夹(即伪装共享的真实目录)

[root@station2 ~]#mkdir –p /export/nfs

[root@station2 ~]#mount --bind /home/nfs /export/nfs

[root@station2 ~]#vi /etc/fstab

/home/nfs    /exports/nfs               none    bind            0 0

#共享的真实目录是/home/nfs但客户看到的将是/exports/nfs目录

<!--[if !supportLists]-->3、 <!--[endif]-->设置NFSv4共享

[root@station2 ~]#vi /etc/exports

/exports    gss/krb5p(rw,fsid=0,crossmnt)

/exports/nfs gss/krb5p(rw)

#使用fsid=0选项的时候只能共享一个目录,这个目录将成为NFS服务器的根目录。要通过NFS4共享一个目录,首先需要在/etc/exports文件中定义这个目录,并且使用 fsid=0 的参数。

#kerberos认证支持三种模式:

gss/sys:只要有kerberos票据解决使用nfs共享目录,nfsv3也支持此项

gss/krb5ikerberos会检查数据的完整性

gss/krb5pkerberos会读nfs共享数据进行加密

<!--[if !supportLists]-->4、 <!--[endif]-->kdc中添加nfs服务器服务,并导出票据

[root@station2 ~]# kadmin

kadmin:  addprinc -e des-cbc-md5:normal -randkey nfs/station2.example.com

kadmin:  ktadd -e des-cbc-md5:normal -k /etc/krb5.keytab nfs/station2.example.com

[root@station2 ~]# ktutil         #查看票据

ktutil:  rkt /etc/krb5.keytab

ktutil:  list

slot KVNO Principal

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

   1    4    host/station2.example.com@EXAMPLE.COM

   2    4    host/station2.example.com@EXAMPLE.COM

   3    4    host/station2.example.com@EXAMPLE.COM

   4    4    host/station2.example.com@EXAMPLE.COM

   5    4     nfs/station2.example.com@EXAMPLE.COM

<!--[if !supportLists]-->5、 <!--[endif]-->启动服务器端相关服务(nfsrpcsvcgssdrpcidmapd

[root@station2 ~]# service nfs start

启动 RPC svcgssd                                         [确定]

启动 NFS 服务:                                            [确定]

关掉 NFS 配额:                                            [确定]

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

启动 NFS mountd                                          [确定]

        #开启nfsv4后,启动nfs服务是会自动启动rpcsvcgssd服务

        [root@station2 ~]# service rpcidmapd start

<!--[if !supportLists]-->三、<!--[endif]-->NFSv4 Client配置

<!--[if !supportLists]-->1、 <!--[endif]-->开启安全功能

[root@station3 ~]# vi /etc/sysconfig/nfs

SECURE_NFS="yes"      

#要故障nfs4目录客户端也必须开启此选项

<!--[if !supportLists]-->2、 <!--[endif]-->kdc中添加nfs客户端服务,并导出票据

[root@station3 ~]# kadmin

kadmin:  addprinc -e des-cbc-md5:normal -randkey nfs/station3.example.com

kadmin:  ktadd -e des-cbc-md5:normal -k /etc/krb5.keytab nfs/station3.example.com

[root@station3 ~]# ktutil  

ktutil:  rkt /etc/krb5.keytab

ktutil:  list

slot KVNO Principal

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

   1    5    host/station3.example.com@EXAMPLE.COM

   2    5    host/station3.example.com@EXAMPLE.COM

   3    5    host/station3.example.com@EXAMPLE.COM

   4    5    host/station3.example.com@EXAMPLE.COM

   5    3     nfs/station3.example.com@EXAMPLE.COM

<!--[if !supportLists]-->3、 <!--[endif]-->启动客户端相关服务(rpcgssdrpcidmapd

[root@station3 ~]#sevice rpcgssd start

[root@station3 ~]#service rpcidmapd start

<!--[if !supportLists]-->4、 <!--[endif]-->挂载服务器共享目录

    [root@station3 ~]#mkdir /home/nfs

[root@station3 ~]#mount -t nfs4 -o rw,sec=krb5p 192.168.32.32:/nfs /home/nfs

#挂载时必须用-t nfs4 :挂载nfs4的共享目录

#-o sec=krb5p:利用kerberos加密认证,与服务器向对应

   [root@station3 ~]#vi /etc/fstab 

   192.168.32.32:/home/nfs  /home/nfs    nfs4    defaults,sec=krb5p 0 0

   #开机自动挂载

<!--[if !supportLists]-->5、 <!--[endif]-->测试

[root@station3 ~]# su - netsword

[netsword@station3 ~]$ su - guest2001

口令:

-bash-3.2$ pwd

/home/nfs/guest2001

#只有获拥有kdc认证票据的guest2001等用户才能登录并使用nfs4共享的目录