zoukankan      html  css  js  c++  java
  • Ftp:文件服务器

    介绍

    FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

    image-20210103172114443

    传输模式

    FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard (也就是 Active,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP server。Passive模式FTP的客户端发送 PASV命令到 FTP Server。

    Standard模式

    FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。

    image-20210103172604585

    Passive模式

    在建立控制通道的时候和Standard模式类似,当客户端通过这个通道发送PASV 命令的时候,FTP server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server 将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。

    image-20210103172547176

    Vsftp介绍

    Vsftp是目前linux中最主流的ftp服务器,非常安全的ftp服务进程

    登陆类型

    VSFTP提供了系统用户、匿名用户、虚拟用户三种不同的登陆反射方式,所有的虚拟用户会被映射成一个系统用户,访问时的文件目录是此系统用户的家目录,匿名用户也是虚拟用户,映射的虚拟用户是ftp,详细信息可以通过man vsftp.conf查看。

    Vsftp安装

    环境:服务端 centos7.6 软件vsftpd

    客户端:windows和linux都行

    服务端安装:

    yum install -y epel-release
    # pam 认证模块 db4 支持文件数据库
    yum install -y vsftpd* pam* db4*
    

    配置文件说明

    配置文件 作用
    /etc/vsftp/vsftpd.conf vsftpd核心配置文件
    /etc/vsftpd/ftpusers 指定哪些用户不能访问ftp服务器
    /etc/vsftpd/user_list 指定允许使用vsftpd的用户列表文件
    /etc/vsftpd/vsftpd_conf_migrate.sh 是vsftpd操作的一些变量和设置脚本
    /var/ftp/ 默认情况下匿名用户的根目录

    配置匿名用户访问上传下载删除文件

    vi /etc/vsftpd/vsftpd.conf
    

    只需要改两处(去除#),添加一行anon_other_write_enable=YES

    image-20210103205301201

    chown ftp:ftp -R /var/ftp/
    setenforce 0
    systemctl restart vsftpd
    ps aux | grep vsftpd
    

    image-20210103191738990

    访问

    (1)浏览器直接访问(匿名):ftp://192.168.1.43/

    image-20210103192011160

    (2)windown窗口访问:ftp://192.168.1.43

    image-20210103205429847

    (2)工具访问(Mobaxterm)

    image-20210103192135488 image-20210103192346885

    配置系统用户并登陆

    useradd wj
    passwd wj
    vi /etc/vsftpd/vsftpd.conf
    
    local_enable=YES
    write_enable=YES
    local_umask=077
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    chroot_local_user=YES
    allow_writeable_chroot=YES
    listen=NO
    listen_ipv6=YES
    
    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES
    
    
    touch /home/wj/a.txt
    systemctl restart vsftpd
    

    image-20210103211454437

    配置虚拟用户并登录

    建立虚拟ftp用户账号

    useradd -s /sbin/nologin vu
    

    创建虚拟用户文件(奇数行用户名,偶数行密码)

    vi /etc/vsftpd/user
    
    wj2
    1234
    

    创建数据文件

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

    建立支持虚拟用户的PAM认证文件

    vi /etc/pam.d/vsftpd.vu
    
    auth  required  /lib64/security/pam_userdb.so  db=/etc/vsftpd/user
    account  required  /lib64/security/pam_userdb.so  db=/etc/vsftpd/user
    

    修改配置文件

    mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
    vi /etc/vsftpd/vsftpd.conf
    
    write_enable=YES
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    listen=YES
    userlist_enable=YES
    tcp_wrappers=YES
    allow_writeable_chroot=YES
    guest_enable=YES
    guest_username=vu
    pam_service_name=vsftpd.vu
    local_enable=YES
    local_umask=077
    chroot_local_user=YES
    virtual_use_local_privs=YES
    user_config_dir=/etc/vsftpd/user_dir
    

    为用户建立独立的配置目录及文件

    mkdir /etc/vsftpd/user_dir
    cd /etc/vsftpd/user_dir
    vi wj2
    
    local_root=/etc/vsftpd/data
    

    创建虚拟用户数据存放目录

    cd ..
    mkdir data
    chmod 777 data
    cd data
    touch www.txt
    

    重启服务

    systemctl restart vsftpd
    

    然后用wj2用户访问,密码是1234

    image-20210103213658877

    Ftp客户端:lftp

    lftp是一款优秀的文件客户端程序,它支持ftp,SETP,HTTP,FTPS等多种文件传输协议。

    准备两台linux服务器,一台服务端(192.168.1.43),一台客户端(192.168.1.51)

    yum install -y lftp
    

    登陆:lftp 用户名:密码@ftp地址:端口(默认21)

    lftp wj2:1234@192.168.1.43
    

    image-20210103214641949

    下载文件(文件夹)

    get 文件(文件夹)
    

    例如我想下载图中www.txt

    注意:默认情况下(不加任何选项),在哪里目录进入的lftp,就下载文件到那个目录

    image-20210103214846640

    下载文件到指定目录

    get file -o 目录
    

    image-20210103215427235

    退出lftp:

    ctrl + 
    enter
    

    或者输入 exit

    上传 put

    touch /opt/1.txt
    cd /opt
    lftp wj2:1234@192.168.1.43
    put 1.txt
    ls
    

    image-20210103215802532

    此外,lftp额外支持很多的功能,我这里只是简单介绍了几种,更多功能见 http://lftp.tech/lftp-man.pdf

  • 相关阅读:
    【BZOJ1001】狼抓兔子(网络流)
    【BZOJ4554】游戏(二分图匹配,网络流)
    【BZOJ3993】星际战争(网络流,二分答案)
    【BZOJ3140】消毒(二分图匹配)
    【Luogu1393】动态逆序对(CDQ分治)
    【BZOJ3295】动态逆序对(线段树,树状数组)
    【BZOJ1305】跳舞(网络流)
    【BZOJ1934】善意的投票(网络流)
    【BZOJ3932】任务查询系统(主席树)
    【BZOJ3123】森林(主席树,启发式合并)
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/14227111.html
Copyright © 2011-2022 走看看