文件共享的相关知识:
一、在window上的文件共享:
  在windows平台上实现文件共享:在一台主机1上,将它建成一个文件服务器,监听在某个端口上,通过此服务将某个目录共享出去;而
另一台主机2通过网络并经过网络服务来实现访问主机1上的文件,访问的路径:UNC\\文件服务器的ip地址\要共享的目录;在windows上;
默认在后台工作的有两个服务,分别是cif |smbfs,所以说安装上windows,就相当于一个文件系统服务器。
   cifs,smbfs----服务信息块协议,服务信息块文件系统来实现的;
二.NFS概述    
1.Unix文件服务实现----->NFS(基于rpc,用于在同一网络中主机之间实现文件共享的服务)

2.NFS----网络文件系统,缩写是Network File Server;文件共享协议
         文件传输和文件共享是依赖于RPC实现的

3.NFS理解的说法--------其功能是透过网络,让不同的机器、不同的操作系统、可以彼此分享个别文档。所以可以简单的将他看做一个
文件服务器,让自己的PC来将网络远程的NFS服务器分享的目录,挂载到本地端的机器当中,在本地端的机器看起来,那个远程主机的目
录就好像是自己的一个磁盘分区槽一样.

4.NFS的位置----位于linux内核中

  linux VFS将所有文件系统的抽象为统一接口,此接口是VFS;ext3,iso9660,nfs访问接口是VFS;      
 
  共享文件不能使用root 用户;

5.NFS版本:NFSv1------sun公司内部使用
           NFSv2------完全基于UDP协议
           NFSv3-----redhat5系列使用;安全的异步async文件共享功能;支持TCP协议;支持64位文件大小;支持一次读取或写出;
                     支持Kerberos协议;
            注:kerberos---补充NIS的缺点的服务,token令牌,增强认证机制,提供健壮的集中认证的用户验证;
           NFSv4------redhat6系列使用;kerteros实现全方位的用户认证
6.NFS支持认证:主机、用户UID号
  NIS基于集中认证:到服务器上识别用户的账号和密码;此服务叫NIS网络信息系统;以前叫yp---黄页 yellowpage
  NFS(NIS)一起工作,提高安全性;NIS只用于内网
  NIS----集中实现用户身份认证
  kerberos----补充NIS缺点的服务;主机1的用户生成一段数据,用主机2进行加密,发送给Kerberos,再进行解密。

7.网络访问权限:
       取决于文件系统权限和共享权限交集
       写权限是独占的,排他
       读权限是共享
      
8.NFS启动:
  软件包:nfs-utils
  启动5个进程:nfsd ,rpc.mountd ,rpc.statd,lockd ,rpc.quotad
  脚本: nfs(nfsd,rcp.mountd,rpc.quotad), nfslock(rpc.statd,lockd)
  接口: 2049/tcp and 2049/udp (nfsd), others semi-random (found through portmap (111/tcp and 111/udp)
  配置文件: /etc/exports, /etc/sysconfig/nfs
 
9.在配置文件/etc/exports中定义共享文件的配置:
          共享目录    [客户端1(共享权限)]     [客户端2(共享权限)].......
     以上的相关含义:
         共享目录:欲共享目录的实际路径(使用绝对路径);有空格,用引号‘’
         客户端(访问客户端列表):可访问该共享的客户端进行相关配置,指定客户端匹配的条件,如果不指定,则所有客户端均匹配;
               定义匹配条件的形式:1.FQDN 2.IP地址  3.网段  4.DNS区域 5.通配符  6.ip网络地址 
         共享权限属性:ro-----设置共享为只读,这是默认选项
                    rw------设置共享为读写
                    async----数据异步;先将数据保存在内存,再回写入硬盘。提高效率,有可能数据丢失
                    sync----保持数据同步,同时将数据写入内存和硬盘,这是默认选项
                    root_squash----当NFS客户端当前用户是root时,将被映射为NFS服务器匿名用户
                    no_root_squash-----当NFS客户端当前用户是root时,将被映射为NFS服务器root用户
                    all_squash----将所有用户映射为NFS的匿名用户,这是NFS默认选项        
            注意:在定义客户端匹配条件及参数时,在多个客户端匹配条件之间必须有空格分隔;
                而在客户端匹配条件与参数之间不能有空格;
        在配置NFS共享目录完成后,需要重启NFS服务或通过exportfs -ar使配置生效;最后也可以通过showmount -e查看配置情况;
     也可以通过查看、var/lib/nfs/etab文件NFS共享目录的所有参数
10.命令
 #showmount ------用于查看主机上共享的信息
     选项:-e  服务器----可以在服务器上和客户端上查看
           -a  服务器----查看被挂载的主机 ------在服务器和客户端上都可以查看
           -d  服务器---显示nfs服务器上共享出来的文件系统并且被挂载和访问的客户端列表
#exportfs----维护/etc/exports文件定义的共享的文件系统列表,导出文件系统
 选项:  -a---对所有文件系统进行操作,不能单独使用
         -r-- 未导出的文件系统重新导出
         -u---关闭或取消一个或多个文件系统
         -v----详细信息          
    
10.配置NFS服务过程:
1) NFS依赖于RPC协议(Remote Procedure Call)----远程过程调用,实现在两台主机之间基于OSI第五层会话层建立
    二进制格式的通信机制;
2)首先检查portmap服务是否正常和启动,此服务提供RPC协议
     #service portmap status
     #rpcinfo -p---查看本地主机rpc上已经注册的服务并且正在使用的端口
     #rpcinfo -p 指定ip地址---查看rpc服务启动情况
           例:rpcinfo -p 172.16.0.1
3)查看是否安装nfs-utils软件包;没有安装,则安装;安装过,就不需要安装了;使用到的命令:
    #rpm -q nfs-utils----查看是否安装此软件
    #yum install nfs-utils -----安装软件
    #rpm -qc nfs-utils------查看软件的配置文件
4)启动NFS服务
      #service nfs status----服务状态
      #service nfs start
      #chkconfig nfs on ----开机自动启动服务
5)配置文件向外提供服务:
   1.在配置文件/etc/exports中定义共享文件的配置:
          共享目录    [客户端1(共享权限)]     [客户端2(共享权限)].......
   2.在服务器端创建共享目录
   3.在客户端创建挂载点
   4.在客户端先进行挂载才可以到服务器上访问文件
     #mount -t nfs 服务器ip地址:共享目录  挂载的位置
       #mount -t nfs 172.16.100.1:/vhosts /mnt/nfs
   5.创建第二个共享文件
    在/etc/exports文件中添加 
          共享目录    [客户端1(共享权限)]     [客户端2(共享权限)].......
    使用命令不需要挂载
    #exportfs -u 172.16.0.0/16:/mydata----导出某个文件系统
    #exportfs -u---取消所有的文件系统
    #exportfs -arv ----重新导出所有的文件系统
    #exportfs -rv----重新导出所有文件系统
    #exportfs -r ----重新导出所有文件系统
    #rpcinfo -p localhost---NFS端口是随机的,查看端口    
7.NFS服务认证机制的验证
       如果服务器创建的用户和客户端创建的用户,他们的UID一样,则可以在客户端的挂载点目录下创建
和删除文件;要是不一样,则不能创建文件。


 具体过程用一个例子:
 1.在服务器端:          
   #vim /etc/exports填写内容:
      /vhosts       172.16.0.0/16(rw)  192.16.0.0/24(ro)
   #rpcinfo -p 172.16.100.1 ----在客户端输入查看
   #service nfs restart----在服务器上输入
2.客户端和服务器端都可以输入:
   #showmount -e 172.16.100.1
   #showmount -a 172.16.100.1
   #showmount -d 172.16.100.1
3. 在服务器上创建目录及文件:
    #mkdir /vhosts/{magdu,linux} -pv
4.在客户端建目录及文件        
   #mkdir /mnt/nfs   
5.在客户端先挂载才可以访问服务器上的文件
   #mount -t nfs 172.16.100.1:/vhosts /mnt/nfs----挂载---客户端执行命令
   #cd /mnt/nfs
   #ls
   #cp linux/ /tmp -r
   #touch a.txt  ---无法创建
6.创建第二个共享文件时,不能重启服务,在服务器端服务 
    #exportfs -u 172.16.0.0/16:/mydata----导出某个文件系统
    #exportfs -u---取消所有的文件系统
    #exportfs -arv ----重新导出所有的文件系统
    #exportfs -rv----重新导出所有文件系统
    #exportfs -r ----重新导出所有文件系统
    #rpcinfo -p localhost---NFS端口是随机的,查看端口
7.NFS服务认证机制的验证
   服务器创建用户
      #useradd gentoo
      #chown -R gentoo:gentoo /vhosts/
      #ll -d /vhosts
      #id gentoo    
    客户端创建用户;
      #useradd gentoo
      #su -gentoo
      #useradd add -u 503 centos
      #cd /mnt/nfs
      #touch a.txt  ---创建成功
如果服务器创建的用户和客户端创建的用户,他们的UID一样,则可以在客户端
的挂载点目录下创建和删除文件;要是不一样,则不能创建文件。