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哈哈想说的话(与本博文无光&…

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

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

ORC与Parquet列式存储的区别

ORC与Parquet列式存储 1、ORC与Parquet列式存储2、ORC与Parquet的区别 列式存储(Columnar Storage)是一种优化的数据存储方式,与传统的行式存储(Row Storage)相比,列式存储在数据压缩、查询性能、I/O效率等…

开源 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。 案例说明: 有…

python3.12.4 常用四个数据类型的各个函数详解

在完成目标前,我们最好审视自己到底有什么,有多远。 零、介绍 我打算详细了解一下常用的几种数据类型的各个接口,主要的来源是python shell中的 help(…)命令。python中基本的数据类型有四个 list, tuple, dict, set, 宽泛的讲,肯…

C++编程逻辑讲解step by step:存折和信用卡类。

题目 存折和信用卡类&#xff0c;信用卡是一种存折&#xff0c;可以透支&#xff0c;可以存款。 代码 #include<iostream> #include<string> using namespace std; class passbook {public: passbook(string nam,int n,float m) {namenam; numn; balancem; } vo…

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

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

python每日学20:一个更加实用的类

背景&#xff1a;今天继续学习《python学习手册》第28章《一个更加实际的示例》&#xff0c;今天学习本章前言&#xff0c;页码是803-808 本章要创建二个更加实际的类&#xff1a; Person: 一个创建并处理人员相关的信息的类 Manager: 一个定制化的Person,修改了所继承的行为。…

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

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

webpack 打包配置

主要实现功能 处理html、css、js、vue、jsx、图片等文件压缩处理好的文件分割压缩好的文件路由懒加载开启缓存和热更新开启多线程打包… 新建【webpack.config.js】 新建【webpack.dev.js】开发打包配置新建【webpack.prod.js】生产打包配置新建【webpack.config.js】&#…

Spring Boot中的事务管理策略

Spring Boot中的事务管理策略 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨在Spring Boot应用中的事务管理策略&#xff0c;以及如何通过合…

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

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

Pytorch中torch.cat()函数的使用及说明

如果你有两个形状为 (3, 4) 的tensor A 和 B&#xff0c;并且你想要在第一个维度上连接它们&#xff0c;你可以这样做&#xff1a; import torchA torch.randn(3, 4) B torch.randn(3, 4) C torch.cat([A, B], dim0) # dim0 表示在第一个维度上连接 此时 C 的形状将会是 …

kafka consumer客户端消费逻辑解析

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

【Rust】function和methed的区别

文章目录 functionmethedAssociated Functions 参考资料 一句话总结&#xff1a; function和methed很多都是相同的。 不同点在于&#xff1a; methed定义在结构体里面&#xff0c;并且它的第一个参数肯定是self&#xff0c;代表结构体实例。方法需要用实例名.方法名调用当然结…