当前位置: 首页 > news >正文

linux服务-vsftpd搭建

vsftpd搭建

参考来源: ftp服务器的搭建,Linux中FTP安装,查询ai

Linux下的FTP协议是基于TCP的文件传输协议,通过控制连接(21端口)和数据连接(20端口或随机端口)实现文件上传下载,支持匿名/本地/虚拟用户访问,安全性需通过FTPS/SFTP增强。

ftp理论

  • 协议基础与工作原理

    FTP(File Transfer Protocol)是应用层协议,采用C/S架构,使用两个TCP连接:

    • 控制连接:端口21,传输命令与响应(如登录、文件操作指令);

    • 数据连接:传输文件或目录列表,分两种模式:

      模式连接发起方数据端口适用场景
      主动模式服务器(端口20)客户端开放随机端口(>1024)客户端无防火墙限制
      被动模式客户端服务器开放随机端口(1024-5000)客户端有防火墙(推荐)
  • 工作流程原理

    阶段核心操作涉及端口/协议关键细节
    建立连接客户端发起TCP三次握手,连接服务器21端口控制端口21(TCP)控制通道建立,服务器返回220响应码表示服务就绪
    身份认证客户端发送USER(用户名)、PASS(密码)命令控制通道密码以明文传输;认证成功返回230响应码
    命令交互客户端发送操作命令(如LIST、RETR、STOR),触发数据连接建立数据端口(动态协商)主动模式:服务器用20端口连接客户端指定端口;被动模式:客户端连接服务器随机端口
    断开连接客户端发送QUIT命令,服务器关闭控制连接控制通道数据连接在每次传输后自动关闭,控制连接在会话结束后关
  • FTP用户类别

    • 用户对比

      用户类别身份验证默认权限典型应用场景安全性
      匿名用户无需账号密码(用户名 ftpanonymous仅能访问公共目录(如 /var/ftp),只读公开资源下载(如软件镜像)
      本地用户系统已有账号(如 Linux /etc/passwd 用户)可访问主目录及授权目录,支持读写个人或内部文件管理
      虚拟用户独立于系统的专用账号(存储于数据库或文件)仅访问指定虚拟目录,权限可精细化控制多用户隔离场景(如共享服务器)
    • 权限与安全要点

      • 匿名用户:需在配置文件中显式启用(如 anonymous_enable=YES),默认禁止上传,需额外配置 anon_upload_enable=YES
      • 本地用户:需注意限制目录切换(chroot_local_user=YES),避免访问系统敏感文件。
      • 虚拟用户:推荐搭配 guest_enable=YES 并映射到低权限系统用户,降低安全风险,虚拟用户需通过 PAM 认证模块或专用配置文件实现
  • FTP数据传输格式

    传输模式适用文件类型传输特点典型场景示例
    ASCII文本文件(TXT、HTML、日志等)发送端转换为ASCII码,接收端还原;自动调整换行符适配目标系统跨系统传输配置文件、代码文件
    二进制非文本文件(图片、视频、压缩包等)直接传输原始字节,不修改格式上传JPG图片、ZIP压缩包

vsftpd安装

  • 安装

    # centos7
    [root@localhost ~]# yum -y install epel-release
    [root@localhost ~]# yum -y install vsftpd# centos8
    [root@localhost ~]# dnf -y install epel-release
    [root@localhost ~]# dnf -y install vsftpd
    
  • 启动服务

    [root@localhost ~]# systemctl start vsftpd
    [root@localhost ~]# systemctl enable vsftpd[root@localhost ~]# systemctl status vsftpd
    ● vsftpd.service - Vsftpd ftp daemonActive: active (running) since 一 2025-11-03 22:25:15 CST; 2s ago└─9690 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf[root@localhost ~]# ss -tnlp|grep 21 
    LISTEN     0      32          :::21                      :::*                   users:(("vsftpd",pid=9690,fd=4))
    
  • 配置文件说明

    文件路径核心作用依赖配置项优先级/特性
    /etc/vsftpd/ftpusers禁止高权限用户(如 root)登录无(始终生效)最高,任何情况下覆盖其他规则
    /etc/vsftpd/user_list动态控制用户登录(黑白名单切换)userlist_enable + userlist_deny仅当 userlist_enable=YES 时生效
    /etc/vsftpd/vsftpd.conf配置 FTP 服务全局参数(如匿名访问、权限控制)自身参数(如 anonymous_enable核心配置,控制服务整体行为
  • vsftpd.conf配置详解

    参数名称可选值默认值说明与作用
    anonymous_enableYES / NOYES⚠️ 是否允许匿名登录(建议生产环境设为 NO
    local_enableYES / NONO是否允许本地系统用户登录(必须开启才能使用真实账号登录)
    write_enableYES / NONO🔑 全局写权限开关(若需上传/删除,必须设为 YES
    local_umask八进制数值 (如 022)077本地用户创建文件的默认权限(022 对应文件 644、目录 755
    dirmessage_enableYES / NONO进入目录时显示 .message 文件内容(需创建该文件)
    xferlog_enableYES / NOYES📊 启用传输日志(记录在 /var/log/vsftpd.log
    connect_from_port_20YES / NOYES强制使用端口 20 进行数据连接(主动模式兼容性)
    listenYES / NONO以独立守护进程模式运行(设为 YES 时替代 inetd 启动)
    pasv_enableYES / NOYES🌐 启用被动模式(适用于客户端位于 NAT 后)
    pasv_min_port端口号 (如 40000)-被动模式端口范围下限(需与防火墙配合开放,例:pasv_min_port=40000
    pasv_max_port端口号 (如 50000)-被动模式端口范围上限(例:pasv_max_port=50000,与 pasv_min_port 配套使用)
    xferlog_std_formatYES/NOYES控制日志格式标准化
    xferlog_file/var/log/xferlog-指定传输日志存储路径
    idle_session_timeout600-限制空闲会话存活时间
    data_connection_timeout120-设置数据连接时间 针对上传,下载
    chroot_list_file绝对路径(如/etc/vsftpd/chroot_list指定包含允许/禁止chroot的用户列表文件路径(需配合chroot_list_enable使用),
    chroot_list_enableYES/NONO启用/禁用chroot_list_file配置的用户列表功能,与chroot_local_user配合决定列表用户的chroot行为(白名单/黑名单模式)
    chroot_local_userYES/NONO启用时需确保用户主目录不可写(或通过allow_writeable_chroot=YES放宽限制)
    allow_writeable_chrootYES/NONO允许chroot环境下的用户主目录具有写权限(vsftpd 2.3.5+新增,解决安全限制)
  • 场景示例

    • 限制所有本地用户到主目录

      chroot_local_user=YES 
      allow_writeable_chroot=YES  # 若主目录需写权限(不推荐) 
      
    • 仅允许列表用户chroot(白名单模式)

      # chroot_list_file: 文件需手动创建,每行一个用户名,权限建议设为`root:root`且不可被普通用户修改
      chroot_local_user=NO 
      chroot_list_enable=YES 
      chroot_list_file=/etc/vsftpd/chroot_list  # 列表中用户将被chroot 
      
    • 禁止列表用户chroot(黑名单模式)

      chroot_local_user=YES 
      chroot_list_enable=YES 
      chroot_list_file=/etc/vsftpd/chroot_list  # 列表中用户不被chroot 
      
http://www.dtcms.com/a/565892.html

相关文章:

  • SAP PP生产报废单功能分享
  • 汇川H5U+HMI仿真运行追飞剪程序
  • 服装设计网站免费临桂住房和城乡建设局网站
  • 原子性与原子操作
  • Java使用okhttp发送get、post请求
  • 两种上传图片的方式——91张先生
  • web3品牌RWA资产自主发行设计方案
  • 网站公司是做什么的长沙做网站备案
  • 【k8s】Kubernetes 资源限制设置规范手册 MB与MiB的概念混淆问题
  • 网站开发需要多长时间互联网有限公司
  • 撰写网站规划书网络服务示范区创建情况
  • 汇川高压变频故障码解析F134 F149 F150 F151 F154 F155 F157 F159 F160
  • 从 C 到 C++20 协程编写方法的演变。第一部分:函数 + 宏 = 协程
  • 采购管理软件选型避坑指南
  • 广州网站搭建多少钱网站的pv uv
  • ubuntu上安装交叉编译工具链说明
  • 【博资考5】网安2025
  • 怎样在别人网站做加强链接宁波网站推广专业服务
  • 做网站申请域名中国定制家具网
  • 合肥网站建设司图石家庄建设局网站怎么打不开
  • 开启学习具身智能之路
  • 使用husky+ commitlint检查提交描述是否符合规范要求
  • 【计算机软件资格考试】软考综合知识题高频考题及答案解析3
  • 达梦删除表空间的内部执行过程
  • 外贸建设网站合优做网站需要多少钱
  • 利用DeepSeek采用hugeint转字符串函数完善luadbi-duckdb的decimal处理
  • Memcached CAS 命令详解
  • 厦门市建设合同备案网站简约网站欣赏
  • 【Docker】关闭所有容器
  • 珠宝行网站建设方案搜索热度查询