章工运维 章工运维
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)

章工运维

业精于勤,荒于嬉
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)
  • linux

  • windows

  • 中间件

  • 网络

  • 安全

  • 存储

  • 防火墙

  • 数据库

  • 系统

    • vmware

    • ftp

      • proftpd环境部署
      • vsftpd部署
      • nexus

      • harbor

      • confluence&jira

      • loki

      • sonarqube

      • svn

      • other

      • openldap

      • influxdb

      • wordpress

      • kvm

      • argocd

      • jfrog

      • nextcloud

      • RustDesk

      • mail

      • ghost

    • docker

    • other

    • 监控

    • 运维
    • 系统
    • ftp
    章工运维
    2024-09-05
    目录

    vsftpd部署

    # 安装vsftpd

    yum install vsftpd -y
    
    1

    # 默认配置介绍

    grep -vE "^#|^$" /etc/vsftpd/vsftpd.conf
    # 这个选项禁止匿名用户登录。默认情况下是 NO,即禁止匿名访问
    anonymous_enable=NO
    # 允许本地用户使用他们的系统账户登录 FTP 服务器。如果设置为 NO,则只有匿名用户和虚拟用户可以登录。
    local_enable=YES
    # 禁止任何写操作,包括上传、删除、修改文件等操作。默认情况下是 NO,如果需要允许用户进行写操作,必须将此选项设置为 YES
    write_enable=YES
    # 定义本地用户上传文件时的权限掩码,默认值 022 会为文件设置权限为 755
    local_umask=022
    # 当用户进入目录时显示包含消息的文件,通常是 .message 文件。
    dirmessage_enable=YES
    # 启用传输日志,所有的上传和下载操作都会记录在日志文件中,日志路径可以通过 xferlog_file 进行配置。
    xferlog_enable=YES
    # 禁止本地用户访问文件系统的根目录。设置为 YES 后,本地用户会被限制在自己的主目录中,无法访问其他系统文件。
    connect_from_port_20=YES
    # 定义是否以标准格式记录传输日志
    xferlog_std_format=YES
    # 控制 vsftpd 是否作为独立的服务监听 IPv4 连接,如果设置为 NO,vsftpd 将不会独立监听 IPv4 网络接口
    listen=NO
    #控制 vsftpd 是否作为独立的服务监听 IPv6 连接。如果设置为 YES,vsftpd 将独立监听 IPv6 网络接口,而不依赖于 inetd 或 xinetd
    listen_ipv6=YES
    # 该选项指定了 PAM(Pluggable Authentication Module)服务名称,用于认证 FTP 用户
    pam_service_name=vsftpd
    # 启用用户列表功能,阻止用户登录。通过 userlist_file 指定用户列表文件的路径。
    userlist_enable=YES
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25

    # 匿名用户配置操作

    功能:可以查看,删除文件夹,创建文件夹,修改文件夹

    # 这个选项禁止匿名用户登录。默认情况下是 NO,即禁止匿名访问
    anonymous_enable=YES
    #允许匿名用户上传文件并可以创建目录
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    
    1
    2
    3
    4
    5
    6

    授权 chown ftp.ftp /var/ftp/pub/

    注意,默认匿名用户家目录的权限是755,这个权限是不能改变的。切记!

    # 系统用户操作

    #使用家目录创建
    useradd -s /sbin/nologin team1
    useradd -s /sbin/nologin team2
    指定目录创建
    useradd team2 -d /data/ftp -s /sbin/nologin
    #centos执行
    echo "123456" | passwd --stdin team1
    echo "123456" | passwd --stdin team2
    #debian执行
    cho "ftpuser:123456" | sudo chpasswd
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    配置文件

    anonymous_enable=NO:禁止匿名用户登录
    local_enable=YES:允许本地用户登录
    local_root=/var/www/html:设置本地用户的根目录为/var/www/html
    chroot_list_enable=YES:激chroot 功能
    chroot_list_file=/etc/vsftpd/chroot_list:设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名
    allow_writeable_chroot=YES :允许锁定的用户有写的权限
    #被动模式端口范围:如果使用被动模式,需要在防火墙中开放被动模式端口。你可以在 vsftpd 配置中指定被动模式端口范围:
    pasv_min_port=40000
    pasv_max_port=50000
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 建立/etc/vsftpd/chroot_list 文件,添加team1 和team2 帐号
    
    touch /etc/vsftpd/chroot_list
    
    vim /etc/vsftpd/chroot_list
    
    team1
    
    team2
    
    ll -d /var/www/html/
    
    drwxr-xrwx. 2 root root 4096 Oct 9 2018 /var/www/html/
    
    vim /etc/pam.d/vsftpd
    #注释掉以下这一行:
    #auth   required        pam_shells.so
    
    #重启vsftpd 服务使配置生效
    systemctl restart vsftpd
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

    # 配置vsftpd,使用SSL证书加密数据传输

    FTP与HTTP一样缺省状态都是基于明文传输,希望FTP服务器端与客户端传输保证安全,可以为FTP配置SSL

    使用OpenSSL生成自签证书

    openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem -days 3560
    
    1
    mkdir .sslkey
    cp vsftpd.pem .sslkey/
    chmod 400 .sslkey/vsftpd.pem
    vi /etc/vsftpd/vsftpd.conf
    #ssl
    ssl_enable=YES
    allow_anon_ssl=NO
    force_local_logins_ssl=YES
    force_local_data_ssl=YES
    rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem
    rsa_private_key_file=/etc/vsftpd/.sslkey/vsftpd.pem
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    # 配置白名单

    只允许白名单用户访问:

    userlist_enable=YES
    userlist_file=/etc/vsftpd.userlist
    userlist_deny=NO
    
    1
    2
    3

    然后将 ftpuser 添加到 /etc/vsftpd.userlist:

    echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist
    
    1

    # debian 12部署配置记录

    vsftpd.conf

    listen=NO
    listen_ipv6=YES
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    dirmessage_enable=YES
    use_localtime=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    chroot_local_user=YES
    secure_chroot_dir=/var/run/vsftpd/empty
    pam_service_name=vsftpd
    rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
    rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
    ssl_enable=NO
    local_root=/data/ftp/version_manager
    pasv_enable=YES
    pasv_min_port=40000
    pasv_max_port=50000
    userlist_enable=YES
    userlist_file=/etc/vsftpd.userlist
    userlist_deny=NO
    allow_writeable_chroot=YES
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23

    =======

    # docker compose部署vsftp

    #docker-compose.yaml
    version: '3.9'
    
    services:
    
      vsftp:
        image: fauria/vsftpd
        container_name: version_manager_vsftp
        environment:
          FTP_USER: team01
          FTP_PASS: Team01RT
          PASV_ADDRESS: 192.168.153.134
          PASV_MIN_PORT: 21100
          PASV_MAX_PORT: 21110
        volumes:
          - ./ftp_data:/home/vsftpd
        ports:
          - "21:21"
          - "21100-21110:21100-21110"
        networks:
          - app-network
        restart: unless-stopped
    
    networks:
      app-network:
        driver: bridge
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26

    # 给容器中的vsftp增加用户

    docker exec -it version_manager_vsftp bash
    mkdir -p /home/vsftpd/school
    echo -e "school\nSchool" >> /etc/vsftpd/virtual_users.txt
    /usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
    exit
    docker restart version_manager_vsftp
    
    1
    2
    3
    4
    5
    6
    微信 支付宝
    上次更新: 2025/07/22, 11:07:56

    ← proftpd环境部署 nexus安装→

    最近更新
    01
    linux服务器修改终端会话时间的操作
    07-22
    02
    免费使用claude code
    07-20
    03
    windows使用claude code
    07-20
    更多文章>
    Theme by Vdoing | Copyright © 2019-2025 | 点击查看十年之约 | 鄂ICP备2024072800号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式