1、ftp协议与vsftp基本应用

2、vsftp的高级应用

3、rpc概念及nfs基本应用

4、Samba及其基本应用


一、文件共享服务:

    应用层:ftp

    内核:nfs (Sun)

    跨平台:samba在Linux实现CIFS(SMB)协议


    数据:

        命令连接:文件管理类命令,始终在线的连接

        数据连接:数据传输,按需创建及关闭的连接


        数据传输格式:文本传输、二进制传输


    主动:由服务器创建连接

        命令:Client:50000 --> Server: 21

        数据: Server: 20/tcp --> Client: 50000+1


    被动:由客户端创建连接

        命令:Client:50000 --> Server: 21

        数据:Client:50000+1 --> Server: 随机端口


    常用FTP服务器软件: wu-ftpd、proftpd、pureftp、vsftpd(Very Secure ftp)、ServU

    常用FTP客户端软件:ftp\(lftp, lftpget)、wget, curl、filezilla、gftp(Linux GUI)\flashfxp\cuteftp


    响应码:

        1xx: 信息

        2xx: 成功类的状态码

        3xx: 提示需进一步提供补充类信息的状态码

        4xx: 客户端错误

        5xx: 服务端错误


    用户认证:虚拟用户:仅用于访问某特定服务中的资源


    nsswitch: network server switch, 名称解析框架

        配置文件:/etc/nsswitch.conf

        模块:/lib64/libnss*, /usr/lib64/libnss*

        pam: pluggable authentication module, 用户认证框架

        模块:/lib64/security/

        配置文件:/etc/pam.conf, /etc/pam.d/*


    FTP用户分:系统用户和匿名用户


    CentOS 6.5: vsftpd

        用户认证配置文件:/etc/pam.d/vsftpd

        服务脚本:/etc/rc.d/init.d/vsftpd

        配置文件目录:/etc/vsftpd

        主配置文件:vsftpd.conf

        匿名用户(映射为ftp用户)共享资源位置:/var/ftp

        系统用户通过ftp访问的资源的位置:用户自己的家目录

        虚拟用户通过ftp访问的资源的位置:给虚拟用户指定的映射成为的系统用户的家目录


    匿名用户的配置:

        anonymous_enable=YES 虚拟用户启用

        anon_upload_enable=YES 虚拟用户上传权限

        anon_mkdir_write_enable=YES 虚拟用户创建目录权限

        anon_ohter_write_enable=YES 虚拟用户删除目录和文件权限


    系统用户的配置:

        local_enable=YES 本地系统用户启用

        write_enable=YES 本地系统用户写权限(创建和删除文件、目录)

        local_umask=022  系统用户上传文件后文件的权限 644


    禁锢所有的ftp本地用户于其家目录中:

        chroot_local_user=YES


    禁锢文件中指定的ftp本地用户于其家目录中:

        chroot_list_enable=YES

        chroot_list_file=/etc/vsftpd/chroot_list

        dirmessage_enable=YES 登录目录的欢迎信息


    日志:

        xferlog_enable=YES

        xferlog_std_format=YES

        xferlog_file=/var/log/xferlog


    改变上传文件的属主:

        chown_uploads=YES

        chown_username=whoever


    vsftpd使用pam完成用户认证,其用到的pam配置文件:

        pam_service_name=vsftpd


    是否启用控制用户登录的列表文件

        userlist_enable=YES

        userlist_deny=YES|NO


    默认文件为/etc/vsftpd/user_list


    连接限制:

        max_clients: 最大并发连接数;

        max_per_ip: 每个IP可同时发起的并发请求数;


    传输速率:

        anon_max_rate: 匿名用户的最大传输速率, 单位是“字节/秒”;

        local_max_rate: 本地用户。。。


    虚拟用户:

    所有的虚拟用户会被统一映射为一个指定的系统账号,访问的共享位置即为此系统账号的家目录;


        各虚拟用户可被赋予不同的访问权限;

        通过匿名用户的权限控制参数进行指定;


    虚拟用户账号的存储方式:

        文件:编辑文件

        奇数行为用户名

        偶数行为密码


    此文件需要被编码为hash格式;


    关系型数据库中的表中:

    即时查询数据库完成用户认证;


    mysql库,

    pam要依赖于pam_mysql


    # yum -y install pam_mysql


三、 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


四、Samba的配置详解

    Samba端口号:137/udp, 138/udp, 139/tcp, 445/tcp

    交互式数据访问:# smbclient -L HOST -U USERNAME

    获取到共享信息之后,# smbclint //SERVER/shared_name -U USERNAME

    基于挂载的方式访问:

mount -t cifs //SERVER/shared_name  /mount_point -o username=USERNAME,password=PASSWORD


    Samba服务器安装:# yum -y install samba

    服务脚本:/etc/rc.d/init.d/nmb,/etc/rc.d/init.d/smb

    主配置文件:/etc/samba/smb.conf


    Samba用户都是系统用户在/etc/passwd, 密码:samba服务自有密码文件, 

    将系统用户添加为samba的命令:

        smbpasswd  (-a Sys_User、-d :禁用、-e: 启用、-x: 删除)

        

    配置文件:smb.conf

        全局设定

        特定共享的设定

        私有家目录

        打印机共享

        自定义共享


    自定义共享:

    [shared_name]

        path = /path/to/share_directory

        comment = Comment String

        guest ok = {yes|no}

        public = {yes|no}

        writable = {yes|no}

        read only = {yes|no}

        write list = +GROUP_NAME

    测试配置文件是否有语法错误,以及显示最终生效的配置:# testparm


    实例:建立samba共享,共享目录为/data,要求:

    1)共享名为shared,工作组为magedu;

    2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;

    3)添加samba用户gentoo,centos和ubuntu,密码均为“mageedu”;

    4)此samba共享shared仅允许develop组具有写权限,其他用户只能以只读方式访问;

    5)此samba共享服务仅允许来自于172.16.0.0/16网络的主机访问;


参考文章,Samba 详解:http://zhang789.blog.51cto.com/11045979/1791842

          企业案例:http://liwenjia.blog.51cto.com/2656598/685058