如何在 Linux 系统中部署 FTP 服务器:从基础配置到安全优化

一、为什么选择 Linux 部署 FTP 服务器?

FTP(文件传输协议)作为互联网最早的文件传输标准,至今仍在企业内部文件共享、镜像站点同步等场景中广泛应用。Linux 系统凭借其稳定性、开源特性及丰富的工具链,成为搭建 FTP 服务器的理想选择。本文将以主流的vsftpd(Very Secure FTP Daemon)为例,详细介绍部署流程。

二、安装与基础配置

1. 安装 vsftpd

根据 Linux 发行版选择对应命令:

# Ubuntu/Debian
sudo apt update && sudo apt install vsftpd -y# CentOS/RHEL
sudo yum install vsftpd -y# Arch
sudo pacman -S vsftpd

2. 配置核心参数

编辑主配置文件/etc/vsftpd.conf

sudo vim /etc/vsftpd.conf

关键参数调整:

anonymous_enable=NO         # 禁用匿名登录
local_enable=YES            # 允许本地用户登录
write_enable=YES            # 开启写入权限
local_root=/home/ftpuser/ftp  # 用户根目录
chroot_local_user=YES       # 限制用户在根目录
pasv_min_port=40000         # 被动模式端口范围
pasv_max_port=50000
listen_ipv6=NO              # 仅监听IPv4

三、用户管理与权限控制

1. 创建专用 FTP 用户

        

sudo useradd -m -s /sbin/nologin ftpuser
sudo passwd ftpuser  # 设置强密码

2. 目录权限设置

sudo mkdir -p /home/ftpuser/ftp
sudo chown nobody:nogroup /home/ftpuser/ftp  # 限制写入权限
sudo chmod a-w /home/ftpuser/ftp
sudo mkdir /home/ftpuser/ftp/files
sudo chown ftpuser:ftpuser /home/ftpuser/ftp/files  # 用户可读写目录

四、网络与安全配置

1. 防火墙规则

Ubuntu(ufw)
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw enable
CentOS(firewalld)
sudo firewall-cmd --add-service=ftp --permanent
sudo firewall-cmd --add-port=40000-50000/tcp --permanent
sudo firewall-cmd --reload

2. 增强安全性

  • 禁用明文传输:考虑使用ftps(FTP over SSL/TLS)
  • 限制登录尝试:通过pam_tally2模块设置失败重试次数
  • SELinux 策略:若开启 SELinux,执行:
    sudo setsebool -P ftpd_full_access on

    五、服务启停与验证

    1. 启动服务

    sudo systemctl start vsftpd
    sudo systemctl enable vsftpd  # 开机自启

    2. 客户端测试

     

    使用 FileZilla 等工具连接:

  • 主机:服务器公网 IP
  • 端口:21
  • 用户名 / 密码:之前创建的ftpuser
  • 模式:选择被动模式(PASV)

六、自动化脚本示例

1. 批量上传文件

#!/bin/bash
HOST="your_ftp_server.com"
USER="ftpuser"
PASSWORD="your_password"
FILES=$(ls /local/path/*.txt)ftp -n $HOST <<END_SCRIPT
user $USER $PASSWORD
binary
prompt
mput $FILES
bye
END_SCRIPT

2. 定时备份任务

通过crontab实现每日备份:

0 2 * * * /bin/bash /scripts/ftp_backup.sh

七、常见问题排查

  1. 连接超时:检查防火墙规则和被动端口范围
  2. 530 Login incorrect:确认密码正确,检查/etc/vsftpd.user_list配置
  3. 无法上传文件:验证目录权限和 SELinux 策略

八、总结与建议

通过本文的步骤,您已成功搭建了一个安全的 FTP 服务器。需注意:

  • FTP 协议不加密,敏感数据建议使用 SFTP
  • 定期更新系统和vsftpd组件
  • 监控日志文件/var/log/xferlog
  • 生产环境建议使用虚拟用户模式(需额外配置 PAM 认证)

如需进一步优化,可参考阿里云 / 腾讯云官方文档或《Linux 就该这么学》等权威资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/39124.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用 pytorch 从零开始创建大语言模型(六):对分类进行微调

用 pytorch 从零开始创建大语言模型&#xff08;六&#xff09;&#xff1a;对分类进行微调 6 微调用于分类6.1 微调的不同类别6.2 准备数据集6.3 创建数据加载器6.4 使用预训练权重初始化模型6.5 添加分类头部6.6 计算分类损失和准确率6.7 在监督数据上微调模型6.8 使用LLM进…

阿里云对象存储教程

搜“对象存储->免费试用” 选择你的心仪产品&#xff0c;我使用的是第一个 创建后获得三个实例&#xff1a; 点击右上角自己的账号可以进入到AccessKey管理界面 回到对象存储控制台创建Bucket实例 在以下文件中替换自己Bucket的信息即可美美使用~ package com.kitty.blog…

基于Python的智慧金融风控系统的设计与实现

指导途径&#xff08;&#x1f6f0;&#xff09;&#xff1a;NzqDssm16 1立题依据 1.1毕业论文&#xff08;设计&#xff09;的研究背景 随着金融行业数字化转型加速&#xff0c;智能风控系统成为防范金融风险的核心支撑。传统风控手段存在数据处理效率低下、模型更新滞后、人…

分布式算法:Paxos Raft 两种共识算法

1. Paxos算法 Paxos算法是 Leslie Lamport&#xff08;莱斯利兰伯特&#xff09;在 1990 年提出的一种分布式系统共识算法。也是第一个被证明完备的共识算法&#xff08;前提是不存在恶意节点&#xff09;。 1.1 简介 Paxos算法是第一个被证明完备的分布式系统共识算法。共识…

Day20-前端Web案例——部门管理

目录 部门管理1. 前后端分离开发2. 准备工作2.1 创建Vue项目2.2 安装依赖2.3 精简项目 3. 页面布局3.1 介绍3.2 整体布局3.3 左侧菜单 4. Vue Router4.1 介绍4.2 入门4.3 案例4.4 首页制作 5. 部门管理5.1部门列表5.1.1. 基本布局5.1.2 加载数据5.1.3 程序优化 5.2 新增部门5.3…

信创-人大金仓数据库创建

一. 官文 资源下载地址 https://download.kingbase.com.cn/xzzx/index.htm 下载安装文件 下载授权文件 产品文档地址&#xff1a;https://help.kingbase.com.cn/v8/index.html 二. 概念 2.1 体系结构 ‌ 实例结构 ‌&#xff1a;由数据库文件和 KingbaseES 实例组成。数据…

[ACTF2020 新生赛]BackupFile-3.23BUUCTF练习day5(1)

[ACTF2020 新生赛]BackupFile-3.23BUUCTF练习day5(1) 解题过程 打开题目环境 看题目意思应该是让我找备份文件 备份文件一般的后缀名为 .rar .zip .7z .tar.gz .bak .swp .txt .html .bak 直接扫描一下 在url中输入/index.php.bak 弱类型比较 为弱相等&#xff0c;即当…

【嵌入式Linux】基于ArmLinux的智能垃圾分类系统项目

目录 1. 功能需求2. Python基础2.1 特点2.2 Python基础知识2.3 dict嵌套简单说明 3. C语言调用Python3.1 搭建编译环境3.2 直接调用python语句3.3 调用无参python函数3.4 调用有参python函数 4. 阿里云垃圾识别方案4.1 接入阿里云4.2 C语言调用阿里云Python接口 5. 香橙派使用摄…

css的背景

css背景属性&#xff0c;可以给页面元素添加背景样式。 一.背景颜色 二.背景图片 语法 backgroud-image &#xff1a;none || url(图像地址) 三.背景平铺 既可以添加背景颜色也可以添加背景图片&#xff0c;只不过背景图片会压住背景颜色 四.背景位置 1.方位名词 如果只指定…

macOS Sequoia 15.3 一直弹出“xx正在访问你的屏幕”

&#x1f645; 问题描述 macOS 系统升级后&#xff08;15.2或者15.3均出现过此问题&#xff09;&#xff0c;不管是截图还是开腾讯会议&#xff0c;只要跟捕捉屏幕有关&#xff0c;都一直弹出这个选项&#xff0c;而且所有软件我都允许访问屏幕了&#xff0c;这个不是询问是否…

高德终端技术总结:高可用架构如何练成?

前言 高德地图作为国民级应用&#xff0c;特别是出行场景的独特性&#xff0c;要确保在线导航高并发和交通安全级的超稳定性&#xff0c;这对技术团队提出异乎寻常的高要求&#xff0c;无论是终端、云端&#xff0c;还是“终端-云端”之间的连接&#xff0c;都必须实现“高可用…

UDP套接字编程(代码)

什么是socket套接字编程&#xff1f; 通过Ip地址 端口号这种方式定位一台主机&#xff0c;这样的方式我们就叫做socket套接字。 Udp Socket 接口介绍 这些案列我们使用的接口基本都是一样的&#xff0c;所以在这里我先把接口介绍完&#xff0c;具体的细节后面在说明。 创…

C# 调用 VITS,推理模型 将文字转wav音频net8.0 跨平台

一、系统环境 操作系统&#xff1a;win10&#xff0c;win11 运行环境&#xff1a;dotnet8 工具:命令行&#xff0c;powershell 开源库:sherpa-onnx 二、工具和源码下载 开源库:https://k2-fsa.github.io/sherpa/onnx/index.html 运行环境下载 https://dotnet.microsoft.c…

【AI学习笔记】Coze平台实现将Excel文档批量导入数据库全过程

背景前摇&原视频教程&#xff1a; 最近看到很多同学都在用Coze平台操作数据&#xff0c;我也想了解一下工作流的搭建和数据处理过程&#xff0c;但是一下子又看不懂太复杂的逻辑&#xff0c;于是上B站搜索相关的基础教程。 Coze官方教程&#xff1a; 之前有看过Coze平台…

Certd自动化申请和部署SSL证书并配置https

服务器使用的华为云&#xff0c;之前SSL证书通过配置Cloudflare的DNS实现的&#xff0c;最近华为云备案提示需修改解析至境内华为云IP&#xff0c;若解析境外IP&#xff0c;域名无需备案&#xff0c;需注销或取消接入备案信息&#xff0c;改为使用Certd自搭建证书管理工具&…

AI基础01-文本数据采集

本篇文章是学习文本数据的采集&#xff0c;作为人工智能训练师或者数据分析师有时需要先获取数据&#xff0c;然后进行数据清洗、数据标注。很明显数据采集是后续步骤的基础。 1&#xff09;数据采集定义 数据采集&#xff1a;data acquisition&#xff0c;DAQ 又称为数据获取…

生活电子常识-deepseek-r1本地化部署+ui界面搭建

前言 deepseek-r1 14b模型&#xff0c;32b模型部署在本地电脑上也能实现非常好的性能。 因此有兴趣研究了下如何在本地部署。 同时最新流行mauns工作流&#xff0c;他们提供一句话实现网页端任意应用的能力。实际上&#xff0c;你也可以用本地的模型来实现离线的ai工作流功能。…

vue3+ts中 .vue文件引入报错:找不到模块或其相应的类型声明

新创建的vue3项目在vscode打开出现报错&#xff1a;找不到模块或其相应的类型声明 解决&#xff1a;在env.d.ts文件添加配置&#xff1a; declare module *.vue {import type { DefineComponent } from vue// eslint-disable-next-line typescript-eslint/no-explicit-any, …

Ubuntu 22.04 二进制安装单节点 MySQL

Ubuntu 22.04 二进制安装 MySQL LTS&#xff08;长期支持版&#xff09;完整教程 MySQL LTS 版本选择&#xff1a; 目前 MySQL 8.4.4 是长期支持&#xff08;LTS&#xff09;版本&#xff0c;持续更新并保持稳定。 下载版本&#xff1a; 你也可以在 MySQL 官方网站确认最新稳…

安装和管理最新的Python3环境(以Mac为例)

背景&#xff1a; 随着大模型技术的快速发展&#xff0c;各种基于AI的测试技术也层出不穷&#xff0c;有些场景需要在较高版本的Python3环境下实现&#xff0c;否则可能会出现兼容性问题。另外考虑自己对于Python3的各个版本环境的管理和使用其实一直都不是特别的清楚&#xf…