0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FTP文件传输协议的工作模式

马哥Linux运维 来源:博客园 2025-02-06 10:09 次阅读

FTP文件传输协议

FTP(File Transfer Protocol)文件传输协议,基于C/S架构,支持文件的上传和下载功能

FTP使用2个端口,都是基于TCP进行传输连接,分别是20和21

20端口为数据传输端口,上传和下载文件使用此端口

21端口为命令传输端口,客户端和服务端之间的命令交互使用此端口


工作模式

主动模式:Client向Server的20端口发送数据连接请求,服务器主动连接,然后传输文件数据
 
 
被动模式:Client向Server发送请求,Server随机开放一个端口和Client连接传输文件
[root@dns named]# netstat -tunpla|grep -w 21
tcp6       0      0 :::21                   :::*                    LISTEN      4946/vsftpd         
tcp6       0      0 192.168.5.101:21        192.168.5.8:62972       ESTABLISHED 7208/vsftpd   #命令传输端口
tcp6       0      0 192.168.5.101:18502     192.168.5.102:52025     TIME_WAIT   -       #数据传输端口             

 FTP支持三种认证模式:
 ➢ 匿名用户:任何人无需验证即可访问和使用ftp
 ➢ 本地用户:使用Linux系统本地用户认证来使用ftp
 ➢ 虚拟用户:通过创建虚拟用户来访问ftp,虚拟用户只用于ftp而不会登录Linux系统

wget工具下载文件

wget ftp://user1:123@192.168.5.101/1.txt

本地模式

1.安装好ftp后启动服务
[root@web01 ~]# systemctl restart vsftpd.service 
2.创建用户
useradd user1 
3.设置用户不能登录
4.给用户设置密码

5.客户端登录
[root@localhost ~]# lftp 192.168.5.101
lftp 192.168.5.101:~> user user1
Password: 
lftp user1@192.168.5.101:~> ls
lftp user1@192.168.5.101:~> pwd
ftp://user1@192.168.5.101/%2Fhome/user1
lftp user1@192.168.5.101:~> 


6.上传,拉取文件
lftp 192.168.5.101:~> user user1
Password: 
lftp user1@192.168.5.101:~> put /etc/passwd
2546 bytes transferred                         
lftp user1@192.168.5.101:~> exit

lftp user1@192.168.5.101:~> get passwd
2546 bytes transferred

匿名模式登录ftp

服务端修改配置文件参数
[root@dns ~]#  cat /etc/vsftpd/vsftpd.conf |grep -v ^#
anonymous_enable=YES

客户端登录
[root@dns2 ~]# ftp 192.168.5.101
Connected to 192.168.5.101 (192.168.5.101).
220 (vsFTPd 3.0.3)
Name (192.168.5.101 anonymous   
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.


#客户端匿名登录之后的目录为/var/ftp/pub
[root@web01 user1]# cat /etc/passwd|grep ftp
ftp14FTP User:/var/ftp:/sbin/nologin
[root@web01 user1]# ls /var/ftp/
pub

匿名上传ftp

匿名上传拒绝
[root@localhost ~]# lftp 192.168.5.101
lftp 192.168.5.101:~> ls
drwxr-xr-x    2 0        0               6 Nov 16  2020 pub
lftp 192.168.5.101:/> put passwd 
put: Access failed: 550 Permission denied. (passwd)

1.修改文件夹权限
不能将根目录权限改为777
[root@web01 ~]# chmod 777 /var/ftp/pub

2.修改配置文件
[root@web01 pub]# cat /etc/vsftpd/vsftpd.conf |grep -v ^#
anonymous_enable=YES
anon_upload_enable=YES


2.进入pub目录上传文件
lftp 192.168.5.101:/> cd pub
lftp 192.168.5.101:/pub> put passwd 
2546 bytes transferred
lftp 192.168.5.101:/pub>




匿名删除文件

lftp 192.168.5.101:/pub> rm passwd
rm: Access failed: 550 Permission denied. (passwd)
lftp 192.168.5.101:/pub> 


1.配置文件中添加行
anon_mkdir_write_enable=YES  ---可以创建文件夹
anon_other_write_enable=YES  ---可以删除文件

2.测试
lftp 192.168.5.101:/pub> mkdir test
mkdir ok, `test' created
lftp 192.168.5.101:/pub> ls
-rw-------    1 14       50           2546 Nov 21 10:54 passwd
drwx------    2 14       50              6 Nov 21 13:58 test
lftp 192.168.5.101:/pub> rm passwd 
rm ok, `passwd' removed
lftp 192.168.5.101:/pub> rm -fr test/
rm ok, `test/' removed
lftp 192.168.5.101:/pub> ls

修改本地用户和匿名登录的位置

配置文件加入这段
cat /etc/vsftpd/vsftpd.conf |grep -v ^#
anon_root=/mnt
local_root=/mnt

修改目录的权限
[root@web01 ~]# chmod 777 /mnt/data/

下载ftp里面的文件

修改umask值可以下载自己上传的文件
anon_umask=022

[root@localhost ~]# lftp 192.168.5.101
lftp 192.168.5.101:~> cd data/
lftp 192.168.5.101:/data> get passwd 
2546 bytes transferred
lftp 192.168.5.101:/data> 

本地用户参考匿名用户

仅允许user1登录

配置文件中加上
userlist_enable=YES
userlist_deny=NO

在文件中加入用户名
[root@dns vsftpd]# cat /etc/vsftpd/user_list 
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
user1


不在ftpusers文件中  在user_list文件中才能登录

允许用户跳出和不能跳出根目录

添加配置文件
chroot_local_user=YES   ###所有人都不能跳出根目录  FTP根目录
chroot_list_enable=YES   ###如果需要指定用户可以跳出FTP根目录,则需要开启以下内容
chroot_list_file=/etc/vsftpd/chroot_list

[root@dns vsftpd]# cat chroot_list   仅允许user1可以跳出目录
user1

vsftp配置虚拟用户

[root@web01 ~]# cd /usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS
[root@node4 ~]# vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vuser666
allow_writeable_chroot=YES  #允许用户在其 chroot 目录中进行写操作
anon_upload_enable=YES  #允许匿名用户上传文件
[root@node4 vsftpd]# vim /etc/vsftpd/logins.txt 
zhangsan
redhat
lisi
redhat
[root@node4 vsftpd]# useradd -d /data/upload/ vuser666
[root@node4 ~]# chmod 755 /data/upload/
[root@node4 vsftpd]# db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/user.db
[root@node4 ~]# vim /etc/pam.d/vsftpd
####该文件仅保留两行,其他均删除
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/user
account required pam_userdb.so db=/etc/vsftpd/user
[root@node4 ~]# lftp 192.168.6.4
lftp 192.168.6.4:~> user zhangsan
Password: 
lftp zhangsan@192.168.6.4:~> cd redhat/
lftp zhangsan@192.168.6.4:/redhat> ls
-rw-------    1 1002     1002         1025 Jul 25 19:04 group.1
-rw-r--r--    1 0        0            2689 Jul 25 18:31 passwd
lftp zhangsan@192.168.6.4:/redhat> put /etc/profile
2123 bytes transferred
lftp zhangsan@192.168.6.4:/redhat> exit

上传的文件在vuser666的家目录中

链接:https://www.cnblogs.com/cloudwangsa/p/18563731

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FTP
    FTP
    +关注

    关注

    0

    文章

    112

    浏览量

    40889
  • 传输协议
    +关注

    关注

    0

    文章

    79

    浏览量

    11560
  • 文件传输
    +关注

    关注

    0

    文章

    37

    浏览量

    8365

原文标题:FTP

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    相关推荐

    如何高效实现文件传输

    服务器提供文件传输功能,需要将磁盘上的文件读取出来,通过网络协议发送到客户端。如果需要你自己编码实现这个文件传输功能,你会怎么实现呢?
    发表于 08-01 16:16 653次阅读
    如何高效实现<b class='flag-5'>文件传输</b>

    第35章 FTP文件传输协议基础知识

    转帖 本章节为大家讲解FTP(File Transfer Protocol,文件传输协议)的基础知识,方便后面章节的实战操作。(本章的知识点主要整理自网络)35.1 初学者重要提示35.2 F
    发表于 12-14 11:29

    浅析Linux的ftp文件传输协议

    FTP 是 File Transfer Protocol (文件传输协议)的英文简称,而中文简称为“文传协议”。
    发表于 07-18 08:19

    RK3399网络工具应用-SSH网络登入、FTP文件传输

    RK3399网络工具应用-SSH网络登入、FTP文件传输本文硬件平台以飞凌嵌入式OK3399-C开发板为基础进行讲解,其它RK3399产品,由于各个厂家设置不同会有所差异,请参考使用。飞凌
    发表于 02-21 10:25

    文件传送协议,文件传送协议是什么意思

    文件传送协议,文件传送协议是什么意思 FTP是一种Internet文件传输服务,它在Inter
    发表于 03-20 15:29 5136次阅读

    实现CFDP协议延时NAK模式文件传输

    CFDP协议,其数据丢失与错误检测重传机制可以有效解决该问题。本文结合航天工程经验搭建空间数据管理系统,采用软硬件协同机制在空间数据传输链路中设计实现了CFDP协议延时NAK模式
    发表于 11-05 11:33 2次下载
    实现CFDP<b class='flag-5'>协议</b>延时NAK<b class='flag-5'>模式</b><b class='flag-5'>文件传输</b>

    基于嵌入式的FTP服务器的设计、结构与工作模式介绍

    FTP文件传输协议)是一种用于从网络中一台主机向另外一台主机传输文件协议,属于Interne
    的头像 发表于 12-04 09:11 2900次阅读
    基于嵌入式的<b class='flag-5'>FTP</b>服务器的设计、结构与<b class='flag-5'>工作</b><b class='flag-5'>模式</b>介绍

    Linux教程之文件传输FTP工作原理和FTP的安装与配置方法

    本文档的主要内容详细介绍的是Linux教程之文件传输FTP工作原理和FTP的安装与配置方法。文件传输是指用户通过网络从远程计算机上下载或上
    发表于 11-06 17:33 15次下载
    Linux教程之<b class='flag-5'>文件传输</b><b class='flag-5'>FTP</b>的<b class='flag-5'>工作</b>原理和<b class='flag-5'>FTP</b>的安装与配置方法

    FTP服务构成及FTP服务器介绍

    FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。
    的头像 发表于 08-22 14:22 5801次阅读

    基于UDP的简单文件传输协议TFTP设计

    前面我们已经实现了UDP的回环客户端和回环服务器的简单应用,接下来我们实现一个基于UDP的简单文件传输协议TFTP。
    的头像 发表于 12-14 15:06 2670次阅读
    基于UDP的简单<b class='flag-5'>文件传输</b><b class='flag-5'>协议</b>TFTP设计

    一般会如何实现文件传输?零拷贝如何提升文件传输性能?

    服务器提供文件传输功能,需要将磁盘上的文件读取出来,通过网络协议发送到客户端。
    的头像 发表于 07-26 14:43 1154次阅读
    一般会如何实现<b class='flag-5'>文件传输</b>?零拷贝如何提升<b class='flag-5'>文件传输</b>性能?

    中文应用笔记《利用 MPLAB® Harmony v3 TCP/IP 协议栈在SAM E54 MCU上实现文件传输协议

    利用 MPLAB Harmony v3 TCP/IP 协议栈 在SAM E54 MCU上 实现文件传输协议 简介 文件传输协议(File T
    的头像 发表于 09-26 17:30 8047次阅读
    中文应用笔记《利用 MPLAB® Harmony v3 TCP/IP <b class='flag-5'>协议</b>栈在SAM E54 MCU上实现<b class='flag-5'>文件传输</b><b class='flag-5'>协议</b>》

    FTP、SFTP、TFTP文件传输协议之间的主要区别

    FTP(File Transfer Protocol,文件传输协议)是用于在计算机网络中传输文件的标准
    的头像 发表于 11-15 09:04 7830次阅读
    <b class='flag-5'>FTP</b>、SFTP、TFTP<b class='flag-5'>文件传输</b><b class='flag-5'>协议</b>之间的主要区别

    FTP连接被重置问题的解决方法与技巧!FTP服务器连接修复!

    FTP连接被重置问题的解决方法与技巧!FTP服务器连接修复! FTP文件传输协议)是用于在计算机网络环境中进行
    的头像 发表于 01-12 16:00 1.2w次阅读

    MTP协议FTP协议的比较分析

    在计算机网络中,文件传输协议FTP)和媒体传输协议(MTP)是两种不同的数据传输
    的头像 发表于 01-03 10:34 335次阅读