zoukankan      html  css  js  c++  java
  • FTP服务(1)

    文件传输协议(FTP)

    文件传输协议(英文:File Transfer Protocol,缩写:FTP)早期的三个应用级协议之一,是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式,即基于C/S结构。它属于网络传输协议的应用层。

    双通道协议:数据和命令连接

    数据传输格式:二进制(默认)和文本

    两种模式:服务器角度

      主动(PORT style):服务器主动连接

    • 命令(控制):客户端:随机port → 服务器:tcp21
    • 数据:客户端:随机port ← 服务器:tcp20

      被动(PASV style):客户端主动连接

    • 命令(控制):客户端:随机port → 服务器:tcp21
    • 数据:客户端:随机port ← 服务器:随机port

    服务器被动模式数据端口示例:

      227 Entering Passive Mode (192,168,175,138,224,59)

      服务器数据端口为:224*256+59

    FTP软件介绍

    FTP服务器:

    vsftpd:Very Secure FTP Daemon,

    CentOS默认FTP服务器,高速,稳定,下载速度是WU-FTP的两倍

    ftp.redhat.com数据:单机最多可支持15000个并发

    其他ftp服务器

    Wu-ftpd,Proftpd,Pureftpd,ServU,IIS

    FTP服务

    状态码:

    1XX:信息      125:数据连接打开

    2XX:成功类状态   200:命令OK 230:登录成功

    3XX:补充类     331:用户名OK

    4XX:客户端错误   425:不能打开数据连接

    5XX:服务器错误   530:不能登录

    用户认证:

    匿名用户:ftp,anonymous,对应Linux用户ftp

    系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow

    虚拟用户:特定服务的专用用户,独立的用户/密码文件

    nsswitch:network service switch名称解析框架

    pam:pluggable authentication module 用户认证

    /lib64/security /etc/pam.d/ /etc/pam.conf

    vsftpd服务

    由vsftpd包提供,不再由xinetd管理

    用户认证配置文件:

    /etc/pam.d/vsftpd

    服务脚本: 

    /usr/lib/systemd/system/vsftpd.service
    /etc/rc.d/init.d/vsftpd

    配置文件:

    /etc/vsftpd/vsftpd.conf
    man 5 vsftpd.conf
    格式:option=value
    注意:= 前后不要有空格

    匿名用户(映射为系统用户ftp )共享文件位置:

    /var/ftp

    系统用户共享文件位置:用户家目录

    虚拟用户共享文件位置:为其映射的系统用户的家目录

    vsftpd服务配置

    命令端口

    listen_port=21

    主动模式端口

    connect_from_port_20=YES  主动模式端口为20
    ftp_data_port=20       指定主动模式的端口

    被动模式端口范围

    pasv_min_port=6000   0为随机分配
    pasv_max_port=6010

    linux     客户端默认使用被动模式
    windows    客户端默认使用主动模式

    使用当地时间

    use_localtime=YES 使用当地时间(默认为NO,使用GMT)

    匿名用户

    anonymous_enable=YES        支持匿名用户
    no_anon_password=YES       (默认NO) 匿名用户略过口令检查
    anon_world_readable_only     (默认YES)只能下载全部读的文件
    anon_upload_enable=YES       匿名上传,注意:文件系统权限
    anon_mkdir_write_enable=YES
    anon_umask=077           指定匿名上传文件的umask
    anon_other_write_enable=YES   可删除和修改上传的文件

    指定上传文件的默认的所有者和权限

    chown_uploads=YES(默认NO)
    chown_username=wang
    chown_upload_mode=0644

    Linux系统用户

    guest_enable=YES      所有系统用户都映射成guest用户
    guest_username=ftp    配合上面选项才生效,指定guest用户
    local_enable=YES     是否允许linux用户登录
    write_enable-YES     允许linux用户上传文件
    local_umask=022      指定系统用户上传文件的默认权限
    local_root=/ftproot   非匿名用户登录所在目录
    禁锢所有系统用户在家目录中
      chroot_local_user=YES(默认NO,不禁锢)禁锢系统用户
    禁锢或不禁锢特定的系统用户在家目录中,与上面设置功能相反
      chroot_list_enable=YES
      chroot_list_file=/etc/vsftpd/chroot_list
      当chroot_local_user=YES时,则chroot_list中用户不禁锢
      当chroot_local_user=NO时,则chroot_list中用户禁锢

    wu-ftp日志:默认启用

    xferlog_enable=YES            (默认)启用记录上传下载日志
    xferlog_std_format=YES         (默认)使用wu-ftp日志格式
    xferlog_file=/var/log/xferlog     (默认)可自动生成
    vsftpd日志:默认不启用
    dual_log_enable=YES           使用vsftpd日志格式,默认不启用
    vsftpd_log_file=/var/log/vsftpd.log (默认)可自动生成

    登录提示信息

    ftpd_banner=“welcome to mage ftp server"
    banner_file=/etc/vsftpd/ftpbanner.txt 优先上面项生效

    目录访问提示信息

    dirmessage_enable=YES  (默认)
    message_file=.message  (默认)信息存放在指定目录下.message

    使用pam(Pluggable Authentication Modules)完成用户认证

    pam_service_name=vsftpd
        pam配置文件:/etc/pam.d/vsftpd
        /etc/vsftpd/ftpusers 默认文件中用户拒绝登录

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

    userlist_enable=YES 默认有此设置
    userlist_deny=YES(默认值)黑名单,不提示口令,NO为白名单
    userlist_file=/etc/vsftpd/users_list 此为默认值

    连接限制

    max_clients=0 最大并发连接数
    max_per_ip=0 每个IP同时发起的最大连接数

    vsftpd服务指定用户身份运行

    nopriv_user=nobody

    传输速率:字节/秒

    anon_max_rate=0 匿名用户的最大传输速率
    local_max_rate=0 本地用户的最大传输速率

    连接时间:秒为单位

    connect_timeout=60 主动模式数据连接超时时长
    accept_timeout=60 被动模式数据连接超时时长
    data_connection_timeout=300 数据连接无数据输超时时长
    idle_session_timeout=60 无命令操作超时时长

    优先以文本方式传输

    ascii_upload_enable=YES
    ascii_download_enable=YES

    配置FTP服务以非独立服务方运行:listen=NO,默认为独立方式

    cat /etc/xinetd.d/vsftpd
    service ftp
    {
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/vsftpd
    log_on_failure += USERID
    disable = no
    }
  • 相关阅读:
    SpringCloud整合过程中jar依赖踩坑经验
    spring-boot-starter-parent的主要作用
    配置Setting.xml文件提高maven更新下载jar包速度
    剑指Offer-编程详解-二维数组中的查找
    Git 拉取Gitee仓库报错:“fatal: unable to access ''": Failed to connect to 127.0.0.1 port 1080: Connection refused”
    SpringBoot整合mybatis——配置mybatis驼峰命名规则自动转换
    SpringBoot 整合 Mybatis + Mysql——XML配置方式
    ES+open-falcon之nginx状态码监控报警自动化
    zabbix告警邮件美化
    基于Jenkins+Gitlab的自动化部署实战
  • 原文地址:https://www.cnblogs.com/Gmiaomiao/p/9226236.html
Copyright © 2011-2022 走看看