zoukankan      html  css  js  c++  java
  • vsftp简单学习思考

        FTP的全称是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.它工作在OSI模型的第七层,即是应用层,使用TCP传输而不是UDP这样FTP客户端和服务器建立连接前就要经过一个"三次握手"的过程.FTP服务还有一个非常重要的特点是它可以独立于平台.

    环境:centos6.5/redhat6.5  192.168.0.111

    01、下载

    http://vsftpd.beasts.org                           ###官网,国内可能被墙了

    https://security.appspot.com/vsftpd.html   ###官方的配置文件,大陆部分打不开

    pkgs:点击下载

    通天大道:http://pan.baidu.com/s/1hs6xE0s

    02、安装

    yum localinstall -y  vsftpd-2.2.2-21.el6.x86_64.rpm

    rpm -ivh vsftpd-2.2.2-21.el6.x86_64.rpm

    rpm -ql vsftp

    • /etc/logrotate.d/vsftpd              
    • /etc/pam.d/vsftpd
    • /etc/rc.d/init.d/vsftpd
    • /etc/vsftpd/
    • /etc/vsftpd/ftpusers                      ###不允许以ftp登录      
    • /etc/vsftpd/user_list                     ###默认不允许登录
    • /etc/vsftpd/vsftpd.conf                 ###vsftpd主配置文件
    • /etc/vsftpd/vsftpd_conf_migrate.sh
    • /usr/sbin/vsftpd
    • /var/ftp/pub             ###默认的ftp家目录

    03、测试

     service vsftpd start               ###默认可以匿名用户登录下载

    /var/ftp/pub                         ###默认ftp根目录

    ftp  192.168.0.111               ###匿名登录用户名:anonymous,无需密码,默认只可以读,不可以写

    vsftpd提供3种登录方式

    (1)anonymous(匿名帐号)
    使用anonymous是应用广泛的一种FTP服务器.如果用户在FTP服务器上没有帐号,那么用户可以以anonymous为用户名,以自己 的电子邮件地址为密码进行登录.当匿名用户登录FTP服务器后,其登录目录为匿名FTP服务器的根目录/var/ftp.为了减轻FTP服务器的负载,一 般情况下,应关闭匿名帐号的上传功能.
     
    vsftpd.conf  ###简易版
    anonymous_enable=YES
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    listen=YES
    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES
     
    ###特色,默认不设置,ftp家目录/var/ftp/pub
    anon_root=/home/ftp   #设置匿名账户的主目录

    vsftpd.conf  ###控制版,适合开放互联网
    # Standalone mode
    listen=YES
    max_clients=240
    max_per_ip=6
    # Access rights
    anonymous_enable=YES
    local_enable=NO
    write_enable=NO
    anon_upload_enable=NO
    anon_mkdir_write_enable=NO
    anon_other_write_enable=NO
    # Security
    anon_world_readable_only=YES
    connect_from_port_20=YES
    hide_ids=YES
    pasv_min_port=50000
    pasv_max_port=60000
    # Features
    xferlog_enable=YES
    ls_recurse_enable=NO
    ascii_download_enable=NO
    async_abor_enable=YES
    # Performance
    one_process_model=YES
    idle_session_timeout=120
    data_connection_timeout=300
    accept_timeout=60
    connect_timeout=60
    anon_max_rate=50000
    
    #listen ip
    listen_address=192.168.0.101

     

    (2)user(系统帐号)
    user也称为本地帐号,就是以真实的用户名和密码进行登录,但前提条件是用户在FTP服务器上拥有自己的帐号.用真实帐号登录后,其登录的目录为用户自己的目录,该目录在系统建立帐号时系统就自动创建.
     
    useradd -d /ftp_www  -s /sbin/nologin  ftp_rw  ###-d 定义家目录 -s 定义shell
    echo "123123"  | passwd ftp_rw  --stdin
     
    chmod  -R    a+w /ftp_www        ###赋写权限,其实不用,哈哈多此一举
    chown  -R    ftp_rw.ftp_rw  /ftp_www
     
    vim  /etc/vsftpd/chroot_list         ###定义访问ftp的用户    
    ftp_rw
     
    /etc/vsftpd/vsftpd.conf        ###配置文件
     
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_file=/var/log/xferlog
    xferlog_std_format=YES
    idle_session_timeout=300
    data_connection_timeout=120
    async_abor_enable=YES
    ascii_upload_enable=YES
    ascii_download_enable=YES
    ftpd_banner=Welcome to blah FTP service.
    chroot_local_user=YES
    chroot_list_enable=NO                        ###锁定家目录
    chroot_list_file=/etc/vsftpd/chroot_list
    listen=YES
    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES
    #设置普通用户主目录,chroot_list用户家目录,下列参数可以自定义ftp用户家目录
    local_root=/data/ftp

    exp:

     
    (3)guest(虚拟帐号)
    如果用户在FTP服务器上拥有帐号,但此帐号只能用于文件传输服务,那么该帐号就是guest,guest是真实帐号的一种形式,它们的不同之处在于,geust登录FTP服务器后,不能访问除宿主目录以外的内容.

      01、创建虚拟用户数据库

    vim user.txt

    mvp                 ###user

    123123            ###password

    bang               ###user

    123123           ###password

      ###转换为数据db格式

    db_load -T  -t hash -f user.txt /etc/vsftpd/login.db  

    chmod 600 login.db

    note:  

         Many systems have multiple versions of "db" installed, so you may
    need to use e.g. db3_load for correct operation. This is known to affect
    some Debian systems. The core issue is that pam_userdb expects its login
    database to be a specific db version (often db3, whereas db4 may be installed
    on your system). redhat6.5,默认安装了db4。

        02、创建数据库认证PAM

    vim  ftp

    auth required /lib64/security/pam_userdb.so     db=/etc/vsftpd/login         ###lib64 对Linux_64,lib 对32位,login为数据库文件
    account required /lib64/security/pam_userdb.so db=/etc/vsftpd/login

     cp  ftp /etc/pam.d/ftp 

         03、创建虚拟用户

    useradd  -d  /ftp_www   -s /sbin/nogin   virtual

    touch /ftp_www/hello ;echo "Welcome to mvpbang" >/ftp_www/hello

    chown virtual.virtual  /ftp_www/hello

          04、创建vsftpd配置文件

    vim vsftpd.conf

     

    anonymous_enable=NO
    local_enable=YES
    write_enable=NO
    anon_upload_enable=NO
    anon_mkdir_write_enable=NO
    anon_other_write_enable=NO
    chroot_local_user=YES
    guest_enable=YES
    guest_username=virtual       ###系统的真实用户,作为虚拟的依附体
    listen=YES
    listen_port=10021            ###ftp端口定义
    pasv_min_port=30000
    pasv_max_port=30999

    pam_service_name  =ftp.virtual                                   ###pam认证文件名  /etc/pam.d/ftp ,一般不设置默认认证配置文件ftp

    User_config_dir=/etc/vsftpd/vsftpd_vuser_conf             ###vsftpd.conf配置文件路径,用于多用户权限划分            
    anon_world_readable_only=NO                                    ###开启列表,如果是YES,默认不显示文件列表
    local_root=/usr/local/amp/apache/htdocs/test1             ###定义虚拟用户的家目录(权限输入虚拟真实用户)

     

    ###更详细的说明请参考:vsftpd-2.2.2-man-EXAMPLE

    总结文件汇总:http://pan.baidu.com/s/1pKADncR

    04、总结

       再次之中,学习到要多看开源软件的帮助文档(man),其中EXAMPLE,对常用的给出过程!  ###rpm -ql vsftp | less

    学习就是在摸索中前进,继往开来的17年!

     

    ###附上,FTP的原理图

      01、主动连接

      02、被动连接

    借鉴:http://linux.vbird.org/linux_server/0410vsftpd.php

  • 相关阅读:
    mingw-gcc-10.0.1-experimental-i686-posix-sjlj-20200202-0303907
    可以修改 QtScrcpy 窗口大小的小工具
    autosub 添加代理服务器参数 -P --proxy
    Python网络数据采集系列-------概述
    【刷题笔记】I'm stuck! (迷宫)-----java方案
    【刷题笔记】火车购票-----java方案
    mvc自定义全局异常处理
    使用html2canvas实现浏览器截图
    再谈Newtonsoft.Json高级用法
    Spire.Doc组件读取与写入Word
  • 原文地址:https://www.cnblogs.com/xiaochina/p/6234785.html
Copyright © 2011-2022 走看看