Linux基础 - 使用 vsftpd 服务传输文件

零. 简介

文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的标准网络协议。

FTP 允许客户端和服务器之间进行文件的上传、下载、删除、重命名等操作。它基于客户端 - 服务器模型工作,通常使用 TCP 协议进行可靠的数据传输。

FTP 有两种工作模式:主动模式(PORT 模式)和被动模式(PASV 模式)。在主动模式下,客户端向服务器发送端口信息,服务器主动连接客户端的指定端口进行数据传输;在被动模式下,服务器向客户端告知可用的端口,客户端连接服务器指定的端口来进行数据传输。

FTP 的优点包括:

  1. 广泛支持:几乎所有操作系统和网络设备都支持 FTP 协议。
  2. 易于使用:有许多现成的 FTP 客户端软件可供选择,使用相对简单。

然而,FTP 也存在一些缺点:

  1. 安全性较低:数据传输通常是明文的,容易被窃取。
  2. 不适合大文件传输:在传输大文件时可能会出现性能问题。

随着技术的发展,一些更安全和高效的文件传输协议和方法逐渐出现,如 SFTP(SSH File Transfer Protocol)、FTPS(FTP over SSL/TLS)等,但 FTP 因其历史悠久和广泛的兼容性,仍然在许多场景中被使用。

vsftpd(Very Secure FTP Daemon)是一款运行在 Linux 操作系统上的功能强大且安全的 FTP 服务器软件。

vsftpd 具有以下一些显著特点和优势:

  1. 安全性高:它遵循了严格的安全标准,对访问控制、权限管理等方面进行了精心设计,减少了潜在的安全风险。
  2. 性能出色:能够处理大量并发连接,在高负载情况下仍能保持稳定和高效的文件传输。
  3. 配置简单:通过修改其配置文件 /etc/vsftpd.conf ,可以轻松地满足各种不同的需求和场景。
  4. 支持多种模式:例如匿名访问模式和本地用户访问模式等,具有较高的灵活性。
  5. 占用系统资源少:对服务器的资源消耗较低,不会对系统性能造成过大的负担。

vsftpd 常用于以下场景:

  1. 企业内部文件共享:为企业内部员工提供安全、高效的文件传输和共享服务。
  2. 网站文件更新:方便网站管理员上传和下载网站相关的文件。
  3. 数据备份与恢复:作为一种可靠的方式来备份和恢复重要的数据。

总的来说,vsftpd 是一款在 Linux 环境中广泛应用且备受好评的 FTP 服务器软件,能够为用户提供稳定、安全和高效的文件传输服务。

一. 安装vsftpd

  1. 安装 vsftpd 服务:
    在不同的 Linux 发行版中,安装命令可能有所不同。例如,在 Ubuntu 中,可以使用以下命令安装:

   sudo apt-get install vsftpd
  1. 配置 vsftpd :
    主要的配置文件是 /etc/vsftpd.conf 。可以根据需求修改一些常见的配置选项,例如:

    • 允许匿名用户访问:anonymous_enable=YES
    • 允许本地用户登录:local_enable=YES
    • 允许写入:write_enable=YES
  2. 启动 vsftpd 服务:
    不同的发行版启动服务的命令可能有所不同。在 Ubuntu 中,可以使用以下命令:

   sudo systemctl start vsftpd
  1. 设置防火墙规则(如果有防火墙):(我把防火墙全部关闭了)

  2. 确保防火墙允许 FTP 服务使用的端口(默认是 20 和 21 端口)的访问。

  3. 在客户端使用 FTP 客户端软件连接:
    可以使用诸如 FileZilla 等 FTP 客户端工具,输入服务器的 IP 地址、用户名和密码进行连接。

连接成功后,您就可以在客户端和服务器之间进行文件的上传和下载操作了

二. window连接ftp

1.下载ftp客户端

客户端 - FileZilla中文网

选择一个适合自己的版本

我下的绿色版,解压到本地

2.打开

3.配置

4. 连接成功

5.下载文件

选择文件,右键下载

6.下载成功

7.上传文件

打开配置文件

打开 write_enable = YES

修改完配置 重启

sudo /etc/init.d/vsftpd restart

直接鼠标左键拖进去即可

8.上传成功

三. 总结

在 Ubuntu 中安装vsftpd(Very Secure FTP Daemon)可以按照以下步骤进行:

打开终端,运行以下命令安装vsftpd

sudo apt-get update

sudo apt-get install vsftpd

安装完成后,启动VSFTPD服务:

sudo systemctl start vsftpd

(可选)创建用户主目录并设置权限(例如,创建/home/uftp作为用户主目录):

sudo mkdir /home/uftp

sudo chmod 775 /home/uftp

创建 FTP 用户并设置密码:

sudo adduser -m -d /home/uftp -s /bin/sh -g root uftp(添加用户,-m表示创建用户主目录,-d指定主目录路径,-s指定用户登录的 shell,-g指定用户所属的组)

sudo passwd uftp(设置用户密码)

修改vsftpd配置文件/etc/vsftpd.conf

sudo vi /etc/vsftpd.conf

一些重要的配置选项如下:

  • anonymous_enable=NO:禁止匿名登录 FTP 服务器(可选,根据需求决定是否禁止匿名访问)。
  • local_enable=YES:允许本地用户登录 FTP 服务器。
  • write_enable=YES:允许登录用户有写的权限(启用上传功能)。
  • 若要限制用户在主目录下,可使用以下配置:
    • chroot_local_user=YES
    • chroot_list_enable=YES
    • chroot_list_file=/etc/vsftpd.chroot_list
      /etc/vsftpd.chroot_list文件中列出的用户可以跳出主目录,未在文件中列出的用户不允许跳出主目录。

重启vsftpd服务,使配置生效:

sudo systemctl restart vsftpd

(可选)如果系统启用了防火墙(如ufw),需要打开 FTP 的数据端口:

sudo ufw allow 20/tcp

sudo ufw allow 21/tcp

在 Windows 端远程连接 Ubuntu 并进行文件上传下载,可以使用 FileZilla 等 FTP 客户端软件。具体步骤如下:

  1. 在 Windows 上下载并安装 FileZilla 客户端。

  2. 打开 FileZilla 软件,选择“文件”->“站点管理器”->点击“新增站点”,然后配置连接参数,包括主机(Ubuntu 服务器的 IP 地址)、用户名、密码、端口(默认为 21)等。

  3. 点击“连接”,如果连接成功,就可以看到 Ubuntu 服务器上的文件和目录。

  4. 要从 Windows 上传文件到 Ubuntu,直接在左侧把 Windows 下的目录文件拖到右侧 Ubuntu 中指定的目录即可;要从 Ubuntu 下载文件到 Windows,在右侧选择要下载的文件或目录,拖到左侧 Windows 的相应位置。

在实际操作过程中,可能会遇到一些问题,例如连接失败、权限问题或文件名乱码等。常见的解决方法包括:

  • 确保 Ubuntu 端的vsftpd服务已正确安装、配置并启动。
  • 检查网络连接,确保 Windows 能够ping 通 Ubuntu 服务器的 IP 地址。
  • 若文件名出现乱码,可在 FileZilla 的站点管理器中,选择对应的站点,在“字符集”选项中选中“强制 UTF-8”。
  • 如果遇到权限问题,检查/etc/vsftpd.conf文件中的权限设置,以及相关目录的权限。

另外,除了使用 FTP 方式,还可以通过 SSH 方式实现 Windows 与 Ubuntu 之间的远程连接和文件传输。但这种方式需要在 Ubuntu 上安装并配置 SSH 服务器,而 Windows 端也需要使用支持 SSH 的客户端软件。

需注意,在进行任何远程连接和文件传输操作时,确保你有足够的权限并且了解相关的安全风险。同时,保护好服务器的登录凭据,以防止未经授权的访问。

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

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

相关文章

Gradio官方教程一:Gradio生态系统、主要组件及Interface class简介

文章目录 一、快速开始1.1 创建第一个demo1.2 分享demo1.3 Interface Class1.4 Core Gradio Classes1.5 Gradio生态系统 二、Gradio的主要特点2.1 组件(Components)2.1.1 组件属性2.1.2 静态与交互式组件2.1.3 预处理和后处理 2.2 并发(Queui…

基于强化学习的目标跟踪论文合集

文章目录 2020UAV Maneuvering Target Tracking in Uncertain Environments Based on Deep Reinforcement Learning and Meta-LearningUAV Target Tracking in Urban Environments Using Deep Reinforcement Learning 2021Research on Vehicle Dispatch Problem Based on Kuhn-…

java中的Collections工具类

Collections类是java中提供的一个工具类,它和接口Collection乍一看非常相像,但是二者的区别是非常大的,最明显的就是它们一个是类,而另一个是接口了。Collections工具类的作用是对Set 、Map、 List这些容器提供辅助方法来对容器中…

编写一个基于其他系的linux系统并且把它打包为一个iso镜像思想

目录 前面写的一篇文章 前言 isolinux引导模式启动流程 为什么要initramdisk操作而不直接加载文件系统 编写系统的思想 可能问题 一般的iso镜像目前只支持最大4G的大小,需要怎么解决? 如何去找驱动 木木em哈哈想说的话(与本博文无光&…

尊重·理解·协同:论团队合作中的认知提升与信誉建设

零、背景 为什么写博客? 给自己灌输大道理—唠叨哲学 定期总结:反思这段时间内的生活、学习或工作中的得失,提炼出具有普适性的经验和教训。 紧跟热点新闻来有点流量 独特视角:尽量优先进行——人云亦云,先学某一…

开源 150 T 数据(2023年之前所有数据)

开源 150 T 数据(2023年之前所有数据) 开源 150 T 数据生成大规模、高质量训练数据集 生成巨量数据 数据清洗和过滤 混合数据源 多级别训练和模型评估 探索新的训练策略多级别训练和模型评估探索新的训练策略 万卡 H100 集群训练 开源 150 T 数据 …

二进制方式部署k8s集群

前置知识点 1、生产环境部署K8s集群的两种方式 • kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。 • 二进制包 从github下载发行版的二进制包,手动部署每个组件,组成Kub…

【perl】脚本编程的一些坑案例

引言 记录自己跳进的【perl】编程小坑,以己为鉴。 1、eq $str1 "12345\n"; $str2 "12345"; if ($str1 eq $str2) { print "OK" } 上述代码不会打印 OK。特别在读文件 ,匹配字符串时容易出BUG。 案例说明: 有…

[数据集][目标检测]游泳者溺水检测数据集VOC+YOLO格式8275张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):8275 标注数量(xml文件个数):8275 标注数量(txt文件个数):8275 标注…

中北大学算法课动态规划问题实验:题目1 数塔问题

目录 1.实验名称2.实验目的3.实验内容4.实验过程伪代码java代码 5.实验结论及心得代码运行截图心得 实验报告 1.实验名称 动态规划问题实验:题目1 数塔问题 2.实验目的 (1)掌握动态规划法的设计思想; (2)掌握数塔问题的具体实现过程; (3)熟…

评估大型语言模型生成文章的能力

1. AI解读 1.1. 总体概要 本文探讨了大型语言模型(LLMs)如GPT-4在生成特定领域(如计算机科学中的自然语言处理NLP)教育调查文章方面的能力和局限性。研究发现,尽管GPT-4能够根据特定指导生成高质量的调查文章&#x…

kafka consumer客户端消费逻辑解析

kafka consumer客户端消费逻辑解析 一、主要消费步骤二、提交策略【步骤2代码解析】【提交策略总结】 三、拉取策略(待补充)四、消费策略【代码解析】【消费策略总结】 一、主要消费步骤 这是kafka客户端拉取消息的入口,有4个主要部分 1、启…

苏东坡传-读书笔记三

苏东坡去世之后,一黄某获得苏东坡一珍贵的手稿,其中有苏东坡下列的名句: “处贫贱易,处富贵难。安劳苦易,安闲散难。忍痛易,忍痒难。人能安闲散,耐富贵,忍痒,真有道之士也…

详细分析Oracle修改默认的时间格式(四种方式)

目录 前言1. 会话级别2. 系统级别3. 环境配置4. 函数格式化5. 总结 前言 默认的日期和时间格式由参数NLS_DATE_FORMAT控制 如果需要修改默认的时间格式,可以通过修改会话级别或系统级别的参数来实现 1. 会话级别 在当前会话中设置日期格式,这只会影响…

uni-app (通过HBuilderX 和 VS Code 开发)详细连接过程教学。

使用 HBuilderX 创建 uni-app 项目 并编译到微信开发者工具。 uni-app 支持两种方式创建项目: 通过 HBuilderX 创建 通过命令行创建 首先我们需要先下载HBuilderX 下载链接地址:DCloud - HBuilder、HBuilderX、uni-app、uniapp、5、5plus、mui、wap2…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA的登山之旅01(100分)- 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 &#x1f…

《梦醒蝶飞:释放Excel函数与公式的力量》6.4 TODAY函数

第四节:6.4 TODAY函数 1)TODAY函数概述 TODAY函数是Excel中一个非常有用的内置函数,它返回当前的日期。与NOW函数不同,TODAY函数仅返回日期部分,时间部分默认为午夜(0:00)。 2)函…

[数据质量]手动实现 阿里云DataWorks 的数据质量监控告警功能

目录 手动实现 DataWorks 的数据质量监控告警功能1. 简介:2. 数据表准备2.1 tmp_monitor_tbl_info (数据监控信息表)2.2 tmp_monitor_rule_info (数据质量监控规则表)2.3 tmp_monitor_tbl_info_log_di (数据监控信息记录表) 3. 程序开发3.1 数据检查程序3.2 告警信息推送程序3.…

Jenkins教程-10-发送飞书测试报告通知

上一小节我们学习了发送企业微信测试报告通知的方法,本小节我们讲解一下发送飞书测试报告通知的方法。 1、自动化用例执行完后,使用pytest_terminal_summary钩子函数收集测试结果,存入本地status.txt文件中,供Jenkins调用 conft…

优化 C# 和 .NET Core Web API 中的 LINQ 查询

LINQ(语言集成查询)是 C# 中的一项强大功能,允许开发人员以可读且简洁的方式查询和操作数据。但是,LINQ 的使用效率低下可能会导致性能瓶颈,尤其是在处理 .NET Core Web API 中的大型数据集时。优化 LINQ 查询对于维护…