传输文件协议FTP与LFTP

目录

一.简介

二. 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 +29anon_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.txt2.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.hqwc.cn/news/701450.html

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

相关文章

导航app为什么知道还有几秒变绿灯?

在使用地图导航app行驶至信号灯的交叉路口时,这些应用程序会贴心地告知用户距信号灯变化还有多少秒,无论是即将转为绿灯还是红灯。这一智能化提示不仅使得驾驶员能适时做好起步或刹车的准备,有效缓解了因等待时间不确定而产生的焦虑情绪&…

“Linux”的vi / vim目录编辑器

在前面中我们了解到Linux中的基础命令,20多个命令每个记住格式是:命令 选项 参数或者文件名,下面在了解一下最后两个命令:tree命令和find命令 一、补充的命令 (1)tree 作用:以竖状显示文件…

蓝鹏测控:扩大出口,勇拓海外市场

蓝鹏测控自2012年成立以来,始终专注于工业测量仪器的研发、生产与销售。公司坚持经验与创新并存,长期与华北电力大学、河北大学等多所知名院校深度合作,拥有一支技术力量雄厚的研发团队。经过多年的努力,蓝鹏测控已研发出多款具有…

数据库的存储过程、函数与触发器

使用下面的场景来引入 1.创建表 CREATE DATABASE staff; USE staff; CREATE TABLE employee(id INT NOT NULL AUTO_INCREMENT,userName VARCHAR(255),birthDate DATE,idCard VARCHAR(255),loginName VARCHAR(255),PASSWORD VARCHAR(255),mobile VARCHAR(255),email VARCHAR(2…

AI大模型日报#0514:OpenAI GPT-4o震撼发布、我是如何赢得GPT-4提示工程大赛冠军的

导读:欢迎阅读《AI大模型日报》,内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了今日要点以及每条资讯的摘要。《AI大模型日报》今日要点:OpenAI在春季新品发布会上推出全能模型GPT-4o及桌面App,颠覆科技界。GPT-4o…

鸿蒙OS开发:【Stage模型应用程序包结构】

Stage模型应用程序包结构 为了让开发者能对应用程序包在不同阶段的形态更有清晰的认知,分别对开发态、编译态、发布态的应用程序结构展开介绍。 开发态包结构 在DevEco Studio上[创建一个项目工程],并尝试创建多个不同类型的Module。根据实际工程中的…

BUUCTF-Crypto 刷题记录

主要使用的在线解密工具:CTF在线工具http://www.hiencode.com/ 一眼就解密 题目: 下面的字符串解密后便能获得flag:ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30 注意:得到的 flag 请包上 flag{} 提交 解题思路: base64…

深入学习Linux内核之v4l2驱动框架(一)

一,概述 V4L2(Video for Linux 2)是Linux操作系统中用于支持摄像头和视频设备的框架。它提供了一组API和驱动程序接口,用于在Linux系统中进行视频采集、视频流处理和视频播放等操作。 V4L2的设计目标是支持多种设备,…

关于配置深度学习虚拟环境(conda)的一些概念和常用命令

一、概念 下面介绍显卡驱动(例NVIDIA GeForce)、CUDA、cuDNN 的概念和联系。 显卡驱动 显卡驱动是封装成软件的程序,硬件厂商根据操作系统编写的配置文件。安装成功后成为操作系统中的一小块代码。它是硬件所对应的软件,计算机有…

记nrm管理仓库以及发布npm包

前言 记一次在公司创建私有库以及发布npm包,留下个脚印 一、nrm是什么? nrm是 npm 镜像源管理工具,用于快速地在不同的 npm 源之间切换。 二、使用步骤 1.全局安装nrm 代码如下(示例): npm install -…

GPIO输出速度(ARM-GD32)

单片机输出速度对GPIO硬件的影响 如果T为100ns 那么2/3*100ns 67ns 那么tr tf 38 ns (也就是不能超过32ns) tr 和tf和什么东西有关如何去控制 CL 是一个电容,电容会改变和影响电压变化的速率,输出高低电平也就是对电容进行充电…

国产银河麒麟V10SP1系统安装Qt和MySql步骤

安装软件:准备好Kylin-Desktop-V10-SP1-Release-hwe-2107-x86_64.iso和qt-opensource-linux-x64-5.14.2.run 安装步骤: 1、VMWare软件中新建一个虚拟机并安装Kylin-Desktop-V10-SP1-Release操作系统,安装时候输入密码的地方记得要用英文&am…