1、ftp协议及vsftpd的基本应用
         文件共享服务:
                 工作在应用层:ftp(file transfer protocol)
                          应用层协议:tcp, 
                 工作在内核:nfs
                 跨平台:samba
           ftp工作在221号端口,传输数据:
                  命令连接:文件管理类命令,始终在线的连接
                  数据连接:数据传输,按需创建及关闭连接
   
            主动连接:由服务器创建连接
                    命令连接:
                            client用随机端口发起连接请求到server 21,client会把使用端口告诉服务器端 
                    数据连接:
                             server用20号端口连接客户端发起端口+1或+2连接客户端
             被动连接:由客户端创建连接
                     命令连接:
                               client用随机端口连接server21号端口,并告诉客户端请求数据会用哪个随机端口。
                     数据连接:
                                clinent用随机+1端口连接服务端已告知的随机端口。
              ftp server:wu-ftpd、proftpd、puerftp、vsftpd、servu
              ftp client:ftp、lftp、wget、filezilla、gftp、flashfxp、cuteftp
               响应码:
                       1xx:信息
                       2xx:成功类状态
                       3xx:需要进一步提供补充类信息
                       4xx:客户端错误信息
                       5xx:服务端错误信息
                 用户认证:
                       虚拟用户:仅用于访问某特定服务中的资源
                              nsswitch:network server switch:名称解析框架
                                      配置文件:/etc/nsswitch.conf
                                      模块:/lib64/libnss*,/usr/lib64/libnss
                               pam:pluggable authentication module
                                       配置文件:/etc/pam.conf,/etc/pam.d/*
                                       模块:/lib64/security/
                  支持系统用户:
                  支持匿名用户:
                  centos自带的是vsftp
                          yum -y install vsftpd
                          rpm -ql vsftpd
                                 用户认证配置文件 /etc/pam.d/vsftpd
                                 启动服务脚本:/etc/rc.d/init.d/vsftpd
                                 日志滚动:/etc/logrotate.d/vsftpd
                                  配置文件目录:/etc/vsftpd
                                            主配置文件:/etc/vsftpd/vsftpd.conf
                                  主应用程序:/usr/sbin/vsftpd
                                  匿名用户共享资源位置:/var/ftp,匿名用户:yum install finger                    
                                  系统用户登录ftp访问资源位置是用户家目录
                                  虚拟用户通过ftp访问资源的位置映射为系统用户家目录   

                  客户端安装:yum install ftp或者在浏览其中输入ftp://192.168.146.138
                           vim /etc/vsftpd/vsftpd.conf 
                                     匿名用户配置:      
                                                    是否支持匿名用户登录:anonymous_enable=YES 
                                                    是否支持匿名用户上传: #anon_upload_enable=YES
                                                    是否支持匿名用户创建目录:anon_mkdir_write_enable=YES
                                                    是否支持匿名用户删除目录:anon_ohter_write_enable=YES
                                      系统用户配置:
                                                     是否支持本地用户:local_enable=YES
                                                     系统用户写权限:write_enable=YES
                                                     禁锢系统用户只能在自己家目录 :#chroot_local_user=YES         
                                                     禁锢指定用户在其家目录中:#chroot_list_enable=YES、chroot_list_file=/etc/vsftpd/chroot_list                                

 2、vsftpd的高级应用
                    vim /etc/vsftpd/vsftpd.conf        
                           系统用户配置:    
                                       在ftp任何目录下创建.message文件,当用户进入该目录时显示.message中内容dirmessage_enable=YES
                                       是否启用传输日志:xferlog_enable=YES     
                                       指定日志文件位置:#xferlog_file=/var/log/xferlog
                                       修改上传用户:#chown_uploads=YES
                                       指定修改上传用户:#chown_username=whoever      
                                       设定用户超时时长:#idle_session_timeout=600
                                       数据连接超时时长:#data_connection_timeout=120         
                                       登录ftp时显示的信息:#ftpd_banner=Welcome to blah FTP service.
                                       配置文件在:/etc/pam.d/vsftpdpam_service_name=vsftpd   
                                       (是否启用用户登录列表文件,默认配置文件/etc/vsftpd/user_list(手动创建):userlist_enable=YES
                                       是否启用/etc/vsftpd/user_list列表文件:userlist_deny=yes|no )                                         
                                       tcp_wrappers=YES          
                                        最大并发连接数:max_clients
                                        每个IP可同时发起的并发请求数:max_per_ip
                                         本地用户最大的传输速率:local_max_rate

           虚拟用户:
                   所有虚拟用户会被统一映射为一个指定系统账号,访问共享位置为此账号家目录。各虚拟用户被赋予不同的访问权限。通过参数进行指定
                   虚拟用户账号的存储方式:
                             编辑文件:
                                    奇数行为用户名,偶数行为密码。此文件需要被编译为hash格式:
                               关系型数据库中的表:
                                      即时查询数据库完成用户认证:
                                       pmy_mysql
       
        lftp:lftp -u username ip
                 -c:支持断点续传
                                                           

3、rpc概念及nfs的基本应用
          nfs:network file system
                 传统意义上,文件系统在内核中实现
       最常见的文件系统调用:read()、open()、write()、close()
      
       rpc(remote procedure call protocol)远程过程系统调用
              rpc调用步骤。客户端应用程序在运行时发起一个系统调用,通过rpc协议借用tcp/ip发送给服务端主机,服务端接收到某个函数请求和参数,发起本地服务,调用本地实现函数或者过程,并把结果返回给本地进程,本地进程通过rpc协议,构建报文后相应给客户端。

      NIS: network infomating system
             身份认证不在本地验证。验证信息都以明文方式传输,

      nfs:基于ip认证,监听在2049端口,服务器端需要启动nfsd、mountd、idmapd,mountd为半随机端口,所以必须监听rpc,查看111端口是否监听。rpcinfo -p:查看启动状态
               nfs安装包:nfs-utils ,service nfs start 。
               nfs主配置文件在/etc/exports,每一行一个文件系统例如:/opt/data  192.168.146.140(rw)   192.168.146.139(ro)
                      客户端默认选项为只读、异步、secure
                            secure: 使用 1024 以下的 TCP/IP 端口实现 NFS 的连接。如果端口不够用时需关闭,insecure 可以禁用这个选项。 
                            rw:读写
                            async:异步
                            no_wdelay:
                            nohide: 
                            no_subtree_check:
                            no_auth_nlm:
                            mp (mountpoint=path):
                            fsid=num:  
                查看NFS服务器端共享的文件系统:
                            showmount -e  192.168.146.138     
                挂载文件系统:
                           mount -t nfs 192.168.146.138:/opt/data  /mnt

                nfs映射用户选项:
                           root_squash:当客户端在用root登录时,服务端将映射为nfsnobody用户,默认开启
                           no_root_squash:不映射root用户,
                           all_squash:所有用户映射
                           anonuid 和 anongid:映射为指定用户和组

                不用重启服务,读取/etc/export。
                          exportfs -ar:重新导出所有文件系统
                                         -au:关闭导出所有文件系统
                                        -u FS:指定关闭导出的文件系统

                开机自动挂载nfs: 
                        192.168.146.138:/opt/data  /mnt  nfs  defaults,_netdev  0 0
                             _netdev,指明为网络挂载系统,指定时间内开机挂载无法找到会放弃挂载,系统可正常运行。
             
               提高性能:
                     rsize 是服务器读取字节数。wsize 是写入到服务器字节数。默认1024,调整该值如8192,可以提高传输速度。
               博客作业:2台web服务器,提供相同的访问页面,连接同一个数据库mariadb和nfs。

4、samba及其基本应用
            smb:service message block(137/udp, 138/udp, 139/tcp, 445/tcp)
            跨平台工作文件系统:samba
            yum install samba-client:客户端工具
                            smbclient -L 192.168.18.5 -U administrator 客户端获取服务器共享文件夹。
                            smbclient //192.168.18.5/scan -U administrator:访问服务端共享文件夹。help查看使用命令。
            客户端挂载Windows服务端共享目录:
                           mount -t cifs //192.168.18.5/scan /mnt -o username=administrator,password=123456 

            yum install samba:服务端工具
                    服务脚本:
                           /etc/rc.d/init.d/nmb
                           /etc/rc.d/init.d/smb
                    主配置文件
                           /etc/samba/smb.conf
                    samba用户:
                            账号都为系统用户
                            密码为samba自行维护密码
                             将系统用户添加为samba用户:sambapasswd

                     启动服务:
                             service nmb start
                             service smb start
                     确定(137/udp, 138/udp, 139/tcp, 445/tcp)端口已处于监听状态
                     编辑(/etc/samba/smb.conf)主配置文件中的工作组
                               workgroup = WORKGROUP 
                     重启服务:service smb restart && service nmb restart 
                     添加系统用户为smb用户:smbpasswd -a xj      
                                -a:添加系统用户为smb用户
                                -d: 禁用指定用户
                                -e:启用指定用户
                                -x:删除用户   
                      自定义共享,编辑主配置文件
                                [file]:共享文件名
                                path =/opt/file:共享文件夹
                                comment = :说明信息
                                guest ok = {yes|no}:是否匿名访问
                                public = {yes|no}:是否公开
                                writable = {yes|no}:写权限
                                read only = {yes|no}:只读
                                write list = +GROUP_NAME:指定可访问用户或组    
                     测试配置文件是否有语法错误,以及显示最终生效的配置:
                               # testparm
        注意:共享目录时确定登录用户对该目录有相应权限,如果没有用setfacl设定,不要修改原有属主和属组。