Chinaunix首页 | 论坛 | 博客
  • 博客访问: 403111
  • 博文数量: 92
  • 博客积分: 3153
  • 博客等级: 中校
  • 技术积分: 780
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-03 16:26
文章存档

2011年(21)

2010年(71)

分类: LINUX

2011-01-10 17:43:25

NFS是Linux下常用的共享软件,v3版本不太安全,无法进行用户认证,这里简单说明一下V4版本和Kerberos配合实现认证访问的过程。

0.准备工作
    跟之前的Kerberos一样,需要3台机器来做试验,很多资料上写的是两台,即kdc、nis、nfs都在同一台服务器和一台客户机,这里我们把nfs单独拆出来,即用户信息nis和kdc放一台服务器,nfs再另外一台服务器,地址和功能分配如下:
    192.168.0.48    server.example.com    kdc和nis服务器
    192.168.0.49    nfs.example.com          nfs服务器,提供nis用户的家目录
    192.168.0.50    client.example.com     客户端

1.配置nis 
    增加一个用户nfsuser,这个用户的家目录路径需要在nfs上也有一套,所以可以在添加用户的时候指定家目录,也可以后面再改/etc/passwd,nfsuser的uid尽量大一点,防止跟客户机用户的uid重复。
    #mkdir -p /home/nfs
    #chcon -t home_root_t /home/nfs
    #useradd -d /home/nfs/nfsuser -u 5000 nfsuser
    #make -C /var/yp

2.在KDC中增加用户
    #kadmin.local
    kadmin.local:addprinc nfsuser

3.配置nfs服务器
   需要共享的是nfsuser的家目录,我们有两种方式得到这个目录,一个是按照第1步在nfs.example.com上也建立这个用户家目录,然后删掉用户,只留家目录,还有就是可以直接复制过来:
    #scp -rp server.example.com:/home/nfs /home/nfs
    #chown -R 5000.5000 /home/nfs/nfsuser
    
    NFS v4版可以隐藏服务器上的绝对路径,做成pseudo-filesystem,所以我们新建一个目录,绑定到/home/nfs上进行共享设置
    #mkdir -p /exports/home/nfs
    #mount --bind /exports/home/nfs  /home/nfs
    #mount   可以看到挂载信息
  
ps.如果要每次开机都进行绑定,修改/etc/fstab,加入如下行:
/home/nfs    /exports/home/nfs   none  bind  0 0

    修改nfs的配置,使其支持v4版本
    #vim /etc/sysconfig/nfs
    取消SECURE_NFS="yes"前的注释

ps.如果要固定端口,则更改LOCKD_TCPPORT、LOCKD_UPPORT、STATD_PORT、MOUNT_PORT几项

    配置共享目录
    #vim /etc/exports
    
  1. /exports gss/krb5p(rw,all_squash,anonudi=5000,anongid=5000,fsid=0,crossmnt)
  2. /exports/home/nfs gss/krb5p(rw)
    对用到的参数做个简单说明:
    all_squash    所有用户都使用指定的uid和gid访问nfs服务器
    anonuid,anongid 用户访问时使用的uid和gid
    fsid=0    建立虚假的根目录,这里指出/exports是根,那么/exports/home/nfs在客户端看来就是/home/nfs
    crossmnt   允许访问“根”目录下子目录
    gss/       这里指出nfs加密的方式,一共有三种方式krb5,krb5i,krb5p:
                  krb5     基于Kerberos票据的认证
                  krb5i    挂载时校验数据完整性
                  krb5p   通过kerberos认证,并且对数据进行加密

ps./etc/exports文件在写的时候,()一定要紧挨着前面的参数,中间不能有空格

     更改selinux的bool值,使其支持用户家目录和nfs,如果不改,服务可引用正常启动,但是无法完成试验,日志会报错。
     #setsebool -P  use_nfs_home_dirs  on

    在KDC中增加nfs服务,nfs服务只支持des-cbc-md5:normal的加密方式,所以要指定一下
    #kadmin
    kadmin:addprinc -e des-cbc-md5:normal nfs/nfs.example.com
    kadmin:ktadd -k /etc/krb5.keytab -e des-cbc-md5:normal nfs/nfs.example.com
    #ktutil
    ktutil:rkt /etc/krb5.keytab
    ktutil:list

    KDC支持的加密类型由/var/kerberos/krb5kdc/kdc.conf中的supported_enctypes 参数指定,默认使用的加密阿类型由master_key_type 指定。
ps.这个ktutil不大好用,删除了一个entry后,必须要保存成另外一个keytab文件,然后再覆盖原来的,否则那些没有删除的entry会重复。

    OK,现在启动nfs服务
    #service nfs restart
  1. Shutting down NFS mountd: [ OK ]
  2. Shutting down NFS daemon: [ OK ]
  3. Shutting down NFS quotas: [ OK ]
  4. Shutting down NFS services: [ OK ]
  5. Shutting down RPC svcgssd: [ OK ]
  6. Starting RPC svcgssd: [ OK ]
  7. Starting NFS services: [ OK ]
  8. Starting NFS quotas: [ OK ]
  9. Starting NFS daemon: [ OK ]
  10. Starting NFS mountd: [ OK ]
    与v3版本相比,多了一个服务,svcgssd,这是NFSv4的标志,另外还需要启动一个服务
    #service rpcidmapd restart
   
    看一下服务器启动是否正确
    #tail -n 30 /var/log/message   如果有报错,很可能是selinux的配置有问题,重新回去检查一遍就行了
    #showmount -e
    #exortfs -v

4.客户端配置
    客户端必须要先加入nis和kerberos,然后启用nfs v4,方法跟服务器一样,取消SECURE_NFS="yes"的注释,然后启动必须的服务
    #service rpcgssd restart
    #service rpcidmapd restart
    
    开始进行挂载
    #mkdir -p /home/nfs
    #mount -t nfs4 -o rw,sec=krb5p nfs.example.com:/home/nfs /home/nfs
    这时是无法访问/home/nfs/nfsuser的,因为权限不够,所以需要认证获得票据

     #su - guest   guest是本地一般用户
     $su - nfsuser
     输入密码后即可正常访问nfsuser的家目录

    


阅读(7834) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~