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

一、前言

二、环境

三、案例

四、配置

1.服务器端

2.客户端

五、测试

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

一、前言

   NFS,是Network File System的简写,即网络文件系统,最初是由Sun公司发展而来。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。

二、环境

1.系统:CentOS6.4  32位 两台

2.IP:

服务器端:192.168.2.100/24

客户机端:192.168.2.10/24

3.软件包:

rpcbind  RPC主程序,NFS其实可以被视为一个RPC服务,而要启动任何一个RPC服务之前,我们都需要做好port的对应 (mapping) 的工作才行,这个工作其实就是『 rpcbind 』这个服务所负责的!也就是说,在启动任何一个 RPC 服务之前,我们都需要启动 rpcbind 才行! (在 CentOS 5.x 以前这个软件称为 portmap,在 CentOS 6.x 之后才称为 rpcbind 的!)

nfs-utils  NFS主程序,就是提供rpc.nfsd及rpc.mountd这两个NFS daemons与其他相关documents与说明文件、执行文件等的软件。 

4./etc/exports配置文件权限参数

wKioL1Oez--T9IbZAAPBFdtWRu0995.jpg

三、案例

1.假设服务器的IP为192.168.2.100。

2./tmp共享为可读写,并且不限制用户身份的方式,共享给192.168.2.0/24网段的所有计算机。

3./home/nfs共享的属性为只读,可提供除了网段内的工作站外,向Internet亦提供数据内容。

4./home/upload作为192.168.2.0/24这个网段的数据上传目录,其中,/home/upload的用户及所属组为nfs-upload这个名字,它的UID与GID均为210。

5./home/andy这个目录仅共享给192.168.2.10这台主机,以供该主机上面andy这个用户使用,也就是说,andy在192.168.2.10及192.168.2.100上均有账号,且账号均为andy。

四、配置

1).服务器端

# yum install rpcbind     //安装rpcbind和nfs-utils
# yum install nfs-utils
# vim /etc/exports        //编辑共享清单
  1 /tmp         192.168.2.0/24(rw,no_root_squash)
  2 /home/nfs    192.168.2.0/24(ro) *(ro,all_squash)
  3 /home/upload 192.168.2.0/24(rw,all_squash,anonuid=210,anongid=210)
  4 /home/andy   192.168.2.10(rw)
# ll -d /tmp              //查看及编辑共享文件的权限设置
drwxrwxrwt. 7 root root 4096 Apr 25 04:13 /tmp
# mkdir /home/nfs
# chmod 755 -R /home/nfs
# groupadd -g 210 nfs-upload
# useradd -g 210 -u 210 -M nfs-upload
# mkdir /home/upload
# chown -R nfs-upload.nfs-upload /home/upload
# useradd andy
# passwd andy
# ll -d /home/andy/
drwx------. 4 andy andy 4096 Apr 25 04:58 /home/andy/
# service rpcbind start                 //启动RPC服务
Starting rpcbind:                       [  OK  ]
# service nfs start                     //启动nfs服务
Starting NFS services:                  [  OK  ]
Starting NFS quotas:                    [  OK  ]
Starting NFS mountd:                    [  OK  ]
Starting NFS daemon:                    [  OK  ]
# exportfs -rv                         //查看共享清单
exporting 192.168.2.10:/home/andy
exporting 192.168.2.0/24:/home/upload
exporting 192.168.2.0/24:/home/nfs
exporting 192.168.2.0/24:/tmp
# netstat -tupln |grep -E '(rpc|nfs)'      //查看nfs端口
tcp        0      0 0.0.0.0:875                 0.0.0.0:*                   LISTEN      6806/rpc.rquotad  
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      6728/rpcbind      
tcp        0      0 0.0.0.0:40729               0.0.0.0:*                   LISTEN      6810/rpc.mountd   
tcp        0      0 0.0.0.0:41626               0.0.0.0:*                   LISTEN      6810/rpc.mountd   
tcp        0      0 0.0.0.0:34053               0.0.0.0:*                   LISTEN      6810/rpc.mountd   
tcp        0      0 :::41004                    :::*                        LISTEN      6810/rpc.mountd   
tcp        0      0 :::111                      :::*                        LISTEN      6728/rpcbind      
tcp        0      0 :::41475                    :::*                        LISTEN      6810/rpc.mountd   
tcp        0      0 :::58726                    :::*                        LISTEN      6810/rpc.mountd   
udp        0      0 0.0.0.0:42382               0.0.0.0:*                               6810/rpc.mountd   
udp        0      0 0.0.0.0:967                 0.0.0.0:*                               6728/rpcbind      
udp        0      0 0.0.0.0:58584               0.0.0.0:*                               6810/rpc.mountd   
udp        0      0 0.0.0.0:50782               0.0.0.0:*                               6810/rpc.mountd   
udp        0      0 0.0.0.0:875                 0.0.0.0:*                               6806/rpc.rquotad  
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               6728/rpcbind      
udp        0      0 :::967                      :::*                                    6728/rpcbind      
udp        0      0 :::111                      :::*                                    6728/rpcbind      
udp        0      0 :::39664                    :::*                                    6810/rpc.mountd   
udp        0      0 :::54531                    :::*                                    6810/rpc.mountd   
udp        0      0 :::35844                    :::*                                    6810/rpc.mountd   
# rpcinfo -p            //查看rpc服务注册状况           
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100011    1   udp    875  rquotad
    100011    2   udp    875  rquotad
    100011    1   tcp    875  rquotad
    100011    2   tcp    875  rquotad
    100005    1   udp  50782  mountd
    100005    1   tcp  41626  mountd
    100005    2   udp  42382  mountd
    100005    2   tcp  40729  mountd
    100005    3   udp  58584  mountd
    100005    3   tcp  34053  mountd
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    2   tcp   2049  nfs_acl
    100227    3   tcp   2049  nfs_acl
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    2   udp   2049  nfs_acl
    100227    3   udp   2049  nfs_acl
    100021    1   udp  59247  nlockmgr
    100021    3   udp  59247  nlockmgr
    100021    4   udp  59247  nlockmgr
    100021    1   tcp  40639  nlockmgr
    100021    3   tcp  40639  nlockmgr
    100021    4   tcp  40639  nlockmgr
# hostname nuo.com             //修改主机名,尽量重启才生效
# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=nuo.com

2).客户端

# yum install rpcbind       //安装rpcbind和nfs-utils
# yum install nfs-utils     //仅使用nfs的工具命令,不启动服务
# service rpcbind start     //启动RPC服务
# vim /etc/hosts            //添加hosts文件
192.168.2.100 nuo.com
# ping nuo.com              //需ping通
PING nuo.com (192.168.2.100) 56(84) bytes of data.
64 bytes from nuo.com (192.168.2.100): icmp_seq=1 ttl=64 time=0.943 ms
# showmount -e nuo.com          //查看远程服务器共享清单
Export list for nuo.com:
/home/andy   192.168.2.10
/home/upload 192.168.2.0/24
/home/nfs    (everyone)
/tmp         192.168.2.0/24
# cd /mnt                   
# mkdir tmp nfs upload andy                //创建挂载点
# mount -t nfs nuo.com:/tmp  /mnt/tmp      //手动挂载
# mount -t nfs nuo.com:/home/nfs  /mnt/nfs
# mount -t nfs nuo.com:/home/upload  /mnt/upload
# mount -t nfs nuo.com:/home/andy  /mnt/andy
# mount                                    //查看挂载
nuo.com:/tmp on /mnt/tmp type nfs (rw,vers=4,addr=192.168.2.100,clientaddr=192.168.2.10)
nuo.com:/home/nfs on /mnt/nfs type nfs (rw,vers=4,addr=192.168.2.100,clientaddr=192.168.2.10)
nuo.com:/home/upload on /mnt/upload type nfs (rw,vers=4,addr=192.168.2.100,clientaddr=192.168.2.10)
nuo.com:/home/andy on /mnt/andy type nfs (rw,vers=4,addr=192.168.2.100,clientaddr=192.168.2.10)
# vim /etc/fstab                          //自动挂载
nuo.com:/tmp            /mnt/tmp                nfs     defaults        0 0
nuo.com:/home/nfs       /mnt/nfs                nfs     defaults        0 0
nuo.com:/home/upload    /mnt/upload             nfs     defaults        0 0
nuo.com:/home/andy      /mnt/andy               nfs     defaults        0 0
# mount -a

五、测试

客户端(192.168.2.10,root身份登录)

# cd /mnt/tmp/
# touch 1.txt
# cd /mnt/nfs/ 
# touch 2.txt       //只读权限
touch: cannot touch `2.txt': Read-only file system
# cd /mnt/upload/
# touch 3.txt
# useradd andy     //创建andy用户
# passwd andy
# su - andy       
$ cd /mnt/andy/
$ touch 4.txt

如果出现无法进入andy目录,如下,要检查服务器端和客户端的andy的uid是否相同,只有必须相同才能进入andy目录。

$ cd /mnt/andy/
-bash: cd: /mnt/andy/: Permission denied
# grep andy /etc/passwd  //在服务器端和客户端执行,uid都是502.
andy:x:502:502::/home/andy:/bin/bash