传输文件协议FTP与LFTP

news2024/11/19 13:29:47

目录

一.简介

二. FTP基础

主动模式(Active Mode):

被动模式(Passive Mode):

三. Vsftp 服务器简介

四. Vsftpd配置

1. 安装vsftpd(ftp服务端)

2.编辑配置文件 (ftp服务端)

3. FTP Clinet(lftp客户端)

4. FTP配置本地用户登录

4.1 创建 zhangsan、lisi  密码都设置为 “123456”

4.2 配置本地用户ftp配置文件

4.3在客户端操作(lftp)


一.简介

FTP(File Transfer Protocol,文件传输协议)是一种用于在网络上传输文件的标准协议。它允许用户通过网络连接到FTP服务器,并在客户端和服务器之间传输文件。

LFTP是一个基于命令行的FTP客户端程序,它是FTP的一个实现。与标准的FTP客户端相比,LFTP提供了更多的功能和灵活性,包括支持多个连接、断点续传、脚本编程等。

以下是FTP和LFTP之间的一些区别和特点:

  1. 功能和灵活性

    • FTP是标准的文件传输协议,提供基本的文件传输功能,但在功能和灵活性方面受到一些限制。
    • LFTP是一个功能强大的FTP客户端程序,提供了许多高级功能,如多连接支持、断点续传、脚本编程等。它更适合于复杂的文件传输任务和自动化操作。
  2. 命令行界面

    • FTP客户端通常有图形用户界面(GUI)和命令行界面(CLI)两种版本。CLI版本通常使用命令行来执行文件传输操作。
    • LFTP是一个纯命令行的FTP客户端程序,所有操作都通过命令行执行。
  3. 使用场景

    • FTP通常用于简单的文件传输任务,如上传和下载文件。
    • LFTP更适用于复杂的文件传输需求,如需要同时传输多个文件或者需要使用脚本自动化文件传输操作的情况。

二. FTP基础

        FTP Server
        作用:提供文件共享服务,实现上传下载
        端口:
        21号,建立tcp连接  默认端口
        20号:传输数据

        软件包:        vsftpd
        FTP端口:       控制端口:21/tcp 
        配置文件:       /etc/vsftpd/vsftpd.conf

FTP协议中的主动模式(Active Mode)和被动模式(Passive Mode)是用于建立数据连接的两种不同方式。在FTP传输过程中,除了控制连接(用于发送命令和响应)外,还需要建立数据连接来传输文件和目录列表等数据。主动模式和被动模式主要影响了数据连接的建立方式。

  1. 主动模式(Active Mode)

    • 在主动模式中,FTP客户端向服务器的端口20发起连接,用于传输数据。
    • 在数据传输之前,FTP客户端会向FTP服务器的端口20发送一个PORT命令,其中包含了客户端用于数据传输的IP地址和端口号。
    • 服务器收到PORT命令后,会主动连接到客户端指定的IP地址和端口,然后进行数据传输。
  2. 被动模式(Passive Mode)

    • 在被动模式中,FTP客户端向服务器的端口21发起连接,用于发送命令和控制连接。
    • 在数据传输之前,FTP客户端会向FTP服务器发送一个PASV命令,服务器在一个范围的高端口中选择一个端口并将其通知给客户端。
    • 客户端收到服务器返回的被动端口后,会建立一个新的数据连接,连接到服务器选择的端口上,然后进行数据传输。

主动模式和被动模式的区别在于数据连接的建立方式。在主动模式中,服务器主动连接到客户端指定的端口,而在被动模式中,客户端主动连接到服务器选择的端口。被动模式通常用于解决防火墙和网络地址转换(NAT)等环境下的问题,因为它可以减少对防火墙的配置要求。

三. Vsftp 服务器简介

vsftpd(Very Secure FTP Daemon)是一个开源的FTP服务器软件,它专注于安全性、性能和稳定性。vsftpd 服务器以其简单、轻量级和高性能而闻名,并且广泛用于Linux和Unix系统中。

以下是vsftpd服务器的一些特点和功能:

  1. 安全性

    • vsftpd致力于提供高级的安全功能,包括支持SSL/TLS加密、虚拟用户、限制用户访问权限等。
    • 通过SSL/TLS加密传输,vsftpd可以提供数据的加密传输,防止数据在传输过程中被窃听或篡改。
  2. 性能

    • vsftpd被设计为高性能的FTP服务器,具有较低的内存消耗和高效的文件传输速度。
    • 它支持异步I/O和多线程处理,能够处理大量的并发连接和高负载的FTP访问。
  3. 灵活性

    • vsftpd提供了丰富的配置选项,可以根据用户的需求进行灵活配置。
    • 它支持用户和组的管理,允许管理员创建虚拟用户、限制用户的访问权限、限制用户的上传和下载速度等。
  4. 轻量级

    • vsftpd是一个轻量级的FTP服务器软件,它的代码简洁、清晰,并且运行稳定。
  5. 易于部署和管理

    • vsftpd易于安装、配置和管理,可以快速部署一个安全、高性能的FTP服务器。
    • 它提供了丰富的文档和在线资源,以帮助管理员进行配置和管理。

四. Vsftpd配置

 
实验环境--准备两台机器,修改其主机名用来区分

#对192.168.226.100修改主机名
hostnamectl set-hostname ftp-server

#对192.168.226.130修改主机名
hostnamectl set-hostname client


都关闭防火墙和selinux

systemctl stop firewalld
systemctl disable firewalld    
setenforce 0

1. 安装vsftpd(ftp服务端)

[root@ftp-server ~]# yum install -y vsftpd           #下载
[root@ftp-server ~]# systemctl start vsftpd          #启动
[root@ftp-server ~]# systemctl enable vsftpd         #开机自启

FTP默认共享目录:/var/ftp 

[root@ftp-server ~]# mkdir /var/ftp/upload            #创建自己的共享目录
[root@ftp-server ~]# touch /var/ftp/upload/test.txt  #创建文件到共享目录
[root@ftp-server ~]# cd /var/ftp/
[root@ftp-server ftp]# ls
pub upload

#修改ftp目录下所有文件的属主与属组,当时ftp目录切记不能自己修改,只能修改ftp目录下的文件
[root@ftp-server ftp]# chown ftp.ftp * -R     
[root@ftp-server ftp]# ll
总用量 0
drwxr-xr-x 2 ftp ftp  6 6月  10 2021 pub
drwxr-xr-x 2 ftp ftp 22 5月  14 14:53 upload
  • 重点:改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而默认的属主属组是root。

  • 注意: - 修改完配置之后需要重启完服务才能生效
                - 还需要从新从客户端登陆,否则修改后的配置看不到效果。

2.编辑配置文件 (ftp服务端)

#找到下面的这些配置选项,取消注释,如果每找到就新增即可,但开启的参数避免重复引发报错
[root@ftp-server ftp]# vi /etc/vsftpd/vsftpd.conf +29

anon_umask=022                #添加匿名用户上传下载目录权限掩码,022 表示匿名用户上传的文件将会具有权限 rw-r--r--
anon_upload_enable=YES        #这个选项用于允许匿名用户上传文件到FTP服务器
anon_mkdir_write_enable=YES   #这个选项允许匿名用户在FTP服务器上创建目录(文件夹)
anno_other_write_enable=YES   #这个选项用于允许其他用户对匿名用户上传的文件进行写操作

 

#重启服务
[root@ftp-server ftp]# systemctl restart vsftpd

3. FTP Clinet(lftp客户端)

注意关闭防火墙和selinux

[root@client ~]# yum -y install lftp                            #安装客户端



1.get命令(下载,首先要开启下载功能

[root@client ~]# lftp 192.168.226.100
lftp 192.168.226.100:~> ls
drwxr-xr-x    2 14       50              6 Jun 09  2021 pub
drwxr-xr-x    2 14       50             22 May 14 06:53 upload
lftp 192.168.226.100:/> cd upload/
lftp 192.168.226.100:/upload> ls
-rw-r--r--    1 14       50              0 May 14 06:53 test.txt
lftp 192.168.226.100:/upload> get test.txt                       #下载
lftp 192.168.226.100:/upload> exit
[root@client ~]# ls                                           #会下载到当前目录
anaconda-ks.cfg  test.txt



2.put命令(上传命令,上传之前请在服务端进行配置,将上传功能打开)

[root@client ~]# touch /ceshi.txt              #创建测试文件
[root@client ~]# mkdir /yut/                   #创建测试目录
[root@client ~]# touch /yut/b.txt              #在测试目录下面创建测试文件

[root@client ~]# lftp 192.168.226.100
lftp 192.168.226.100:~> cd upload/
cd 成功, 当前目录=/upload
lftp 192.168.226.100:/upload> put /ceshi.txt                  #上传文件
lftp 192.168.226.100:/upload> ls
-rw-------    1 14       50              0 May 14 07:50 ceshi.txt
-rw-r--r--    1 14       50              0 May 14 06:53 test.txt
lftp 192.168.226.100:/upload> mirror -R /yut/                 #上传目录以及目录中的子文件
Total: 1 directory, 1 file, 0 symlinks
New: 1 file, 0 symlinks
2 bytes transferred
lftp 192.168.226.100:/upload> ls
-rw-r--r--    1 14       50              0 May 14 08:30 ceshi.txt
-rw-r--r--    1 14       50              0 May 14 06:53 test.txt
drwxr-xr-x    2 14       50             19 May 14 08:43 yut
lftp 192.168.226.100:/upload> mkdir tty                        #创建文件夹
mkdir 成功, 建立 `ty'
lftp 192.168.226.100:/upload> rm ceshi.txt                    #删除ceshi.txt
rm 成功, 删除 `ceshi.txt'
lftp 192.168.226.100:/upload> ls
-rw-r--r--    1 14       50              0 May 14 06:53 test.txt
drwxr-xr-x    2 14       50              6 May 14 08:28 tty
drwx------    2 14       50             19 May 14 08:19 yut
lftp 192.168.226.100:/upload> mirror yut/                    #下载目录
Total: 1 directory, 1 file, 0 symlinks
New: 1 file, 0 symlinks
2 bytes transferred
lftp 192.168.226.100:/upload> exit                            #退出



[root@client ~]# ll
总用量 4
-rw-------. 1 root root 1257 4月  30 23:34 anaconda-ks.cfg
-rw-r--r--  1 root root    0 5月  14 14:53 test.txt
drwxr-xr-x  2 root root   19 5月  14 16:45 yut
[root@client ~]# cd yut
[root@client yut]# ls
b.txt

4. FTP配置本地用户登录

4.1 创建 zhangsan、lisi  密码都设置为 “123456”
[root@ftp-server ~]# useradd zhangsan
[root@ftp-server ~]# useradd lisi
[root@ftp-server ~]# echo '123456' | passwd --stdin  zhangsan
更改用户 zhangsan 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@ftp-server ~]# echo '123456' | passwd --stdin  lisi
更改用户 lisi 的密码 。
passwd:所有的身份验证令牌已经成功更新。
4.2 配置本地用户ftp配置文件
[root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf 

#对如下参数找到并进行添加注释并修改

anonymous_enable=NO           #将允许匿名登录关闭
#anon_umask=022                #匿名用户所上传文件的权限掩码 
#anon_upload_enable=YES        #允许匿名用户上传文件
#anon_mkdir_write_enable=YES   #允许匿名用户创建目录
#anon_other_write_enable=YES    #是否允许匿名用户有其他写入权(改名,删除,覆盖)
103 chroot_list_enable=YES     #启用限制登陆用户在主目录里面
104 # (default follows)
105 chroot_list_file=/etc/vsftpd/chroot_list  #限制登陆的用户在这个文件列表中,一行一个用户

#需要添加的参数:
allow_writeable_chroot=YES  #允许限制的用户对目录有写权限
local_root=/home/zhangsan       # 设置本地用户的FTP根目录,一般为用户的家目录
local_max_rate=0                # 限制最大传输速率(字节/秒)0为无限制


[root@ftp-server ~]# vim /etc/vsftpd/chroot_list     #新增zhangsan
zhangsan
#重启服务
[root@ftp-server ~]# systemctl restart vsftpd
4.3在客户端操作(lftp)
[root@client ~]# lftp 192.168.226.100 -u zhangsan
口令: 
lftp zhangsan@192.168.226.100:~> ls       
lftp zhangsan@192.168.226.100:~> mkdir uuio
mkdir 成功, 建立 `uuio'
lftp zhangsan@192.168.226.100:~> mkdir tgh
mkdir 成功, 建立 `tgh'
lftp zhangsan@192.168.226.100:~> put /root/test.txt
lftp zhangsan@192.168.226.100:~> ls
-rw-------    1 1000     1000            0 May 14 09:25 test.txt
drwx------    2 1000     1000            6 May 14 09:29 tgh
drwx------    2 1000     1000            6 May 14 09:25 uuio
lftp zhangsan@192.168.226.100:~> rm -rf tgh
rm 成功, 删除 `tgh'
lftp zhangsan@192.168.226.100:~> ls
-rw-------    1 1000     1000            0 May 14 09:25 test.txt
drwx------    2 1000     1000            6 May 14 09:29 uuio



#现在切换回服务端查看有无刚刚在客户端上传和创建的文件
#服务器端查看

[root@ftp-server ~]# cd /home/zhangsan/
[root@ftp-server zhangsan]# ll
总用量 0
-rw------- 1 zhangsan zhangsan 0 5月  14 17:25 test.txt
drwx------ 2 zhangsan zhangsan 6 5月  14 17:25 uuio

4.4 lftp常用命令总结

get下载单个文件
mget下载多个文件
mirror下载目录
put上传单个文件
mput上传多个文件
mirror -R上传目录
mkdir创建目录
rm -rf删除文件或者目录

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

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

相关文章

StNet: Local and Global Spatial-Temporal Modeling for Action Recognition 论文阅读

StNet: Local and Global Spatial-Temporal Modeling for Action Recognition 论文阅读 Abstract1 Introduction2 Related Work3 Proposed Approach4 Experiments5 Conclusion 文章信息: 原文链接:https://ojs.aaai.org/index.php/AAAI/article/view/4…

九、e2studio VS STM32CubeIDE之const修饰BSP函数的形参

目录 一、概述/目的 二、通过串口发送函数对比 2.1 stm32 hal库 VS renesas FSP 2.2 const修改函数形参的作用 2.2.1 值传递-副本 2.2.2 指针传递(就近原则) 2.2.2.1 const修饰:*P 2.2.2.2 const修饰:指针变量P 2.2.2.3 …

python的标准数据类型

四、标准数据类型 1、为什么编程语言中要有类型 类型有以下几个重要角色: 对机器而言,类型描述了内存中的电荷是怎么解释的。 对编译器或者解释器而言,类型可以协助确保上面那些电荷、字节在程序的运行中始终如一地被理解。 对程序员而言…

NARUTO 复现记录

1 环境配置 下载项目,一定要 git 下载全项目,下载完后要检查third_parities 里面的coslam和neural_slam_eval 文件全不全。 git clone --recursive https://github.com/oppo-us-research/NARUTO.git 环境配置 注意 bash scripts/installation/conda…

【JavaEE】HTTP 协议

文章目录 一、HTTP 协议1、HTTP 是什么2、理解 "应用层协议"3、理解 HTTP 协议的工作过程4、HTTP 协议格式5、HTTP 请求 (Request)5.1 认识 URL 6、 二、HTTPS1、HTTPS是什么2、"加密" 是什么3、HTTPS 的工作过程3.1 对称加密3.2 非对称加密3.3 证书3.4 完…

用suno创作歌曲音乐的8个技巧

导读 Suno Ai可以将文本转化为高度逼真的音乐和语音。 该系统包括多种音乐风格,如电影、RAP、翻唱等,并提供了多语言和不同性别的播音员选择。 用户可以使用命令来生成音频并进行个性化设置。 用suno.ai所生成的歌曲质量非常高,而且完美支…

C++——超简单登录项目

程序入口文件 #include <QtWidgets/QApplication> // 包含登录页面头文件 #include "DlgLogin.h"int main(int argc, char *argv[]) {QApplication a(argc, argv);// 程序入口// 调页面起来//DlgMain w;//w.show();// 换成登录页面DlgLogin w;w.show();return…

kafka学习笔记04(小滴课堂)

Kafka的producer生产者发送到Broker分区策略讲解 Kafka核心API模块-producer API讲解实战 代码&#xff1a; ProducerRecord介绍和key的作用 Kafka核心API模块-producerAPI回调函数实战 producer生产者发送指定分区实战 我们设置5个分区。 我们指定分区。 重新指定一个分区&am…

猫吃普通猫粮会秃头?细数生骨肉冻干喂养是否智商税

鉴于科学养猫的理念日益深入人心&#xff0c;生骨肉冻干喂养逐渐成为养猫人的首选。生骨肉冻干喂养不仅符合猫咪的自然习性&#xff0c;更提供了均衡全面的营养&#xff0c;有助于维护猫咪的口腔健康及消化系统功能。普通猫粮的营养远不如生骨肉冻干&#xff0c;长期喂食生骨肉…

110份财务常用excel模板(个税、采购、报销、预算),超实用!

如果你还在为报表头疼&#xff0c;那你一定不能错过这篇干货满满的分享&#xff01; 个税报表 个人所得税&#xff0c;听起来就头大&#xff1f;别担心&#xff0c;掌握这些技巧&#xff0c;轻松搞定&#xff01; - 记录员工收入&#xff0c;确保数据准确无误 - 计算应纳税…

Verilog代码bug:一种特殊的组合逻辑环

Verilog代码bug&#xff1a;一种特殊的组合逻辑环 组合逻辑环&#xff08;Combinational Loop&#xff09;是什么&#xff0c;别的文章已经写的很多了&#xff0c;本文就不赘述了&#xff0c;本文主要记录遇到过的一种特殊的逻辑环&#xff1b; 代码如下所示&#xff1a; mo…

【STM32】状态机实现定时器按键消抖,处理单击、双击、三击、长按事件

目录 一、简单介绍 二、模块与接线 三、cubemx配置 四、驱动编写 状态图 按键类型定义 参数初始化/复位 按键扫描 串口重定向 主函数 五、效果展示 六、驱动附录 key.c key.h 一、简单介绍 众所周知&#xff0c;普通的机械按键会产生抖动&#xff0c;可以采取硬件…

卡片笔记写作法 精读笔记 01

元数据 卡片笔记写作法&#xff1a;如何实现从阅读到写作 书名&#xff1a; 卡片笔记写作法&#xff1a;如何实现从阅读到写作作者&#xff1a; 申克阿伦斯简介&#xff1a; 卢曼的“盒中笔记”通常很简短&#xff0c;因为这些只是他庞大繁杂研究中的索引&#xff0c;等需要时&…

[沫忘录]MySQL 锁

[沫忘录]MySQL 锁 锁能够协调多线程或多进程并发访问某资源产生的数据冲突与错乱。而在数据库中&#xff0c;锁也是协调数据库访问的有效工具。 全局锁 能够锁住当前服务器所有数据库及其表。后续所有事务都只能进行读操作&#xff0c;而不能进行写操作或表属性更改。 典型…

SwiftUI中三大渐变色的介绍

在SwiftUI中&#xff0c;渐变色是一种常用的视觉效果&#xff0c;用于创建平滑过渡的颜色变化。通过使用渐变色&#xff0c;我们可以实现丰富多彩的界面设计&#xff0c;增强用户体验。 1. 渐变色的种类和用途 种类&#xff1a; 线性渐变&#xff08;Linear Gradient&#x…

huggingface 笔记:pipeline

1 介绍 pipeline() 是使用预训练模型进行推理的最简单和最快速的方式。可以针对不同模态的许多任务直接使用 pipeline() 2 举例&#xff1a;情感分析 2.1 创建pipeline实例 from transformers import pipelineclassifier pipeline("sentiment-analysis") #首先创…

练习题(2024/5/13)

1移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5]示例 2&#xff1a; …

Zoho CRM企业成长的智能引擎,智能化销售自动化

数字化时代&#xff0c;客户体验已成为企业竞争的核心要素。卓豪Zoho CRM&#xff0c;作为全球领先的SaaS云端客户关系管理平台&#xff0c;正引领着一场企业运营模式的变革&#xff0c;助力超过25万家企业跨越180多个国家&#xff0c;实现客户互动与业务增长的无缝对接。让我们…

Taylor Francis科技期刊数据库文献去哪里获取

一、Taylor & Francis科技期刊数据库简介&#xff1a; Taylor & Francis 科技期刊数据库&#xff08;T&F ST Library&#xff09;提供超过520种经专家评审的高质量科学与技术类期刊, 其中超过85%的期刊被Web of Science收录&#xff0c;内容最早至1997年。该科技期…

Windows快捷命令

Windows 操作系统提供了大量的快捷命令&#xff0c;用于快速访问系统设置和管理工具。这些命令在各个版本的 Windows 中基本都适用&#xff0c;可以帮助用户快速进入各类管理工具&#xff0c;方便系统的配置和管理。如果你需要使用这些工具&#xff0c;只需按 Win R 键&#x…