8、ftp使用教程

ftp使用教程

  • 1、FTP概述:
  • 2、ftp主动模式和被动模式
  • 3、配置说明
  • 4、多用户配置
  • 5、异常
  • 6、ftp命令
  • 附录

1、FTP概述:

​ FTP是文件传输协议(File Transfer Protocal)的简写,主要完成与远程计算机的文件传输。
FTP采用客户/服务器模式,客户机与服务器之间利用TCP建立连接,客户可以从服务器上下载文件,也可以把本地文件上传至服务器。
FTP服务器有匿名的和授权的两种。匿名的FTP服务器向公众开放,用户可以用“ftp”或“anonymous”为帐号,用电子邮箱地址为密码登录服务器;授权的FTP服务器必须用授权的账户名和密码才能登录服务器。通常匿名的用户权限较低,只能下载文件,不能上传文件。

可参考阿里、腾讯文档
步骤1:安装 vsftpd
1. 执行以下命令,安装 vsftpd。
yum install -y vsftpd
2. 执行以下命令,设置 vsftpd 开机自启动。
systemctl enable vsftpd
3. 执行以下命令,启动 FTP 服务。
systemctl start vsftpd
4. 执行以下命令,确认服务是否启动。
netstat -antup | grep ftp步骤2:配置 vsftpd
1. 执行以下命令,为 FTP 服务创建一个 Linux 用户,本文以 ftpuser 为例。
useradd ftpuser
2. 执行以下命令,设置 ftpuser 用户的密码。
passwd ftpuser
输入密码后请按 Enter 确认设置,密码默认不显示,本文以 tf7295TFY 为例。
3. 执行以下命令,创建 FTP 服务使用的文件目录,本文以 /var/ftp/test 为例。
mkdir /var/ftp/test
4. 执行以下命令,修改目录权限。
chown -R ftpuser:ftpuser /var/ftp/test
5. 执行以下命令,打开 vsftpd.conf 文件。
vim /etc/vsftpd/vsftpd.conf

2、ftp主动模式和被动模式

参考:https://zhuanlan.zhihu.com/p/93190903
FTP只通过TCP连接,但不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口)。通常21端口是命令端口,20端口是数据端口。然而混入主动/被动模式的概念时,又有所不同。数据连接并不是永久性存在的,一旦传输完毕就会将这个连接关闭掉,但是控制连接不会关闭,除非将客户端关闭了,控制连接才会随之关闭。控制连接是随客户端一起存在的,而数据连接是短暂存在的,只要文件传输或者列表传输完成,数据连接就关闭了。

  • 主动(PORT)模式:
    PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条控制连接。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。
Vsftp主动模式修改默认端口
修改命令端口:
listen_port=21 ,如果需要改成其他的端口比如1121,首选需要改这个端口
注意:该信息默认没有,使用的话,需要用户自己添加。默认是21。修改主动模式数据端口:
connect_from_port_20=YES 主动模式端口为20(该项配置文件默认已经添加)
ftp_data_port=20 指定主动模式的端口
  • 被动(PASV)模式:
    ftp服务器动态申请一个端口(一般大于1024)然后告诉客户端,我在这个端口上等待你的连接,客户端收到以后便向服务器的这个端口发起连接,数据连接建立以后,数据传输就可以开始了。
#开启被动模式。
pasv_enable=YES
#本示例中为轻量应用服务器的公网IP地址。
pasv_address=39.105.xx.xx
#设置被动模式下,建立数据传输可使用的端口范围的最小值。
#建议您把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性。
pasv_min_port=50000
#设置被动模式下,建立数据传输可使用的端口范围的最大值。
pasv_max_port=50010

3、配置说明

#1、socket设置
#socket设置,ipv4和ipv6只能设置一个,ipv4开启listen即可
#监听IPv4sockets。
#此时用standalone模式比较合适,大量的客户端连接ftp,服务端也不会卡死
listen=YES
#listen_ipv6=YES#2、模式设置#主动模式修改默认端口
#port_enable=YES
#打开主动模式
listen_port=21
#修改命令端口
connect_from_port_20=YES
#主动模式端口为20(该项配置文件默认已经添加)
ftp_data_port=20
#修改主动模式数据端口#被动模式
pasv_enable=YES
#pasv_enable=YES被动模式,pasv_enable=NO主动模式
pasv_address=101.43.104.154
#请修改为您的Linux云服务器公网IP
pasv_min_port=40000
pasv_max_port=40500
#建议您把端口范围设置在一段比较高的范围内,
#例如50000~50010,有助于提高访问FTP服务器的安全性。#3、权限设置
write_enable=YES
#是否启用写入权限
download_enable=YES
#是否允许下载文件
pam_service_name=vsftpd
#这个是pam模块的名称,我们放置在/etc/pam.d/vsftpd,认证用
secure_chroot_dir=/var/run/vsftpd/empty
#这个设置指定了一个空目录,这个目录不容许ftp user写入。在vsftpd不希望文件系统被访问时,目录为安全的虚根所使用。#4、本地用户权限控制
local_enable=YES
#允许本地用户登录FTP服务器。
local_root=/var/ftp/test
#设置本地用户登录后所在目录。
#local_umask=022
#本地用户所上传文件的权限掩码
chroot_local_user=YES
#local和chroot,禁止用户访问上级目录#例外用户
chroot_list_enable=YES
#启用例外用户名单。
chroot_list_file=/etc/vsftpd/chroot_list
#指定例外用户列表文件,列表中用户不被锁定在主目录。
allow_writeable_chroot=YES
#表示让家home目录下可写#多用户指定各自单独文件夹
user_config_dir=/etc/vsftpd/userconfig#少用
#使用允许登录的名单,在/etc/vsftpd/user_list文件中添加新建的用户ftpuser
#userlist_enable=YES
#限制允许登录的名单,前提是userlist_enable=YES,其实这里有点怪,禁止访问名单在/etc/vsftpd/ftpusers
#userlist_deny=NO#5、匿名用户
anonymous_enable=YES
#启用匿名访问
anon_umask=022
#匿名用户所上传文件的权限掩码
anon_root=/var/ftp
#匿名用户的FTP根目录
anon_world_readable_only=YES
#允许匿名下载
anon_upload_enable=YES
#允许上传文件
anon_other_write_enable=YES
#开放其他写入权#6、日志
#进入某个目录的时候,是否在客户端提示一下
dirmessage_enable=YES
use_localtime=YES
#当设定为YES时,使用者上传与下载日志都会被记录起来
xferlog_enable=YES
#日志成为std格式
xferlog_std_format=YES
#上传与下载日志存放路径
xferlog_file=/var/log/xferlog
ftpd_banner=WelcometoblahFTPservice.
#配置欢迎信息#7、安全
#编码格式,关于系统安全的设定值:
#ascii_download_enable=YES(NO)
#如果设定为YES,那么client就可以使用ASCII格式下载档案
#一般来说,由于启动了这个设定项目可能会导致DoS的攻击,因此预设是NO
#ascii_upload_enable=YES(NO)
#与上一个设定类似的,只是这个设定针对上传而言,预设是NO
#ascii_upload_enable=NO
#ascii_download_enable=NO#SSL
#ThisoptionspecifiesthelocationoftheRSAcertificatetouseforSSL
#encryptedconnections.
#rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
#ssl_enable=NO#开启ssl证书功能
ssl_enable=NO
#ssl的证书文件存放位置
rsa_cert_file=/etc/vsftpd/.ssl/vsftpd.crt
#ssl的私钥文件存放位置
rsa_private_key_file=/etc/vsftpd/.ssl/vsftpd.key

1.默认配置:
1>允许匿名用户和本地用户登陆。
anonymous_enable=YES
local_enable=YES
2>匿名用户使用的登陆名为ftp或anonymous,口令为空;匿名用户不能离开匿名用户家目录/var/ftp,且只能下载不能上传。
3>本地用户的登录名为本地用户名,口令为此本地用户的口令;本地用户可以在自 己家目录中进行读写操作;本地用户可以离开自家目录切换至有权限访问的其他目录,并在权限允许的情况下进行上传/下载。
write_enable=YES
4>写在文件/etc/vsftpd.ftpusers中的本地用户禁止登陆。

2.配置文件格式:
vsftpd.conf 的内容非常单纯,每一行即为一项设定。若是空白行或是开头为#的一行,将会被忽略。内容的格式只有一种,如下所示
option=value
要注意的是,等号两边不能加空白。
详细配置参考:
https://blog.csdn.net/ws379374000/article/details/78661650
https://cshihong.github.io/2018/10/25/FTP%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%90%AD%E5%BB%BA%E5%92%8C%E9%85%8D%E7%BD%AE/

4、多用户配置

1、单用户或全部用户只访问同一目录
若配置全部用户只访问同一目录,比如用户ming1和用户ming2都默认访问/home/ming的目录,则需要添加配置
local_root=/home/ming/
并建立对应的目录给予权限
mkdir /home/ming
chmod -R 777 /home/ming
以上也适用单个用户的配置

2、每个用户默认只访问自己对应的home目录
若每个用户默认只访问自己对应的目录,home目录下默认每个用户对自己的目录拥有权限,比如用户ming1只访问/home/ming1目录,用户ming2只访问/home/ming2的目录,则需要删除local_root或在前面加#注释掉即可。
在这里插入图片描述

3、多用户,访问各自独立的文件夹
如果有多个用户要指定不同目录,在user_config_dir路径下创建一个和用户同名的文件,使用local_root=/dir 来指定目录。主要添加了一行:user_config_dir=/etc/vsftpd/user_conf_dir
例如:

创建用户
sudo adduser guest1
sudo adduser guest2
1、修改配置文件/etc/vsftpd.conf, 添加以下内容
chroot_local_user=YES
user_config_dir=/etc/vsftpd_user_list/
allow_writeable_chroot=YES2. 创建用户列表文件夹
sudo mkdir /etc/vsftpd_user_list/3. 在/etc/vsftpd_user_list/下创建多用户配置文件
新建文件/etc/vsftpd_user_list/guest1,并增加以下内容
local_root=/home/guest1
write_enable=YES
新建文件/etc/vsftpd_user_list/guest2,并增加以下内容
local_root=/home/guest2
write_enable=YES4. 重启vsftpd.service
sudo systemctl restart vsftpd.service
参考链接:https://blog.csdn.net/hgq522/article/details/121260381

4、禁止用户访问上级目录
将允许访问上级目录的用户名放在/etc/vsftpd.chroot_list中,一行一个用户名,不在该文件中的用户将无法访问上级目录,若没有该文件则需要新建一个,否则登录会报错

#禁止返回上一级
chroot_local_user=YES
chroot_list_enable=YES
#允许返回上级目录的用户放在/etc/vsftpd.chroot_list中,一行一个用户名,若没有/etc/vsftpd.chroot_list,则需要新建一个,否则登录会报错
chroot_list_file=/etc/vsftpd.chroot_list

错误1
客户端登录后可以访问Home 文件夹的上层文件夹
原因是chroot_local_user=NO 没改成 ‘YES’

5、异常

1.vsftpd 启动异常 (code=exited, status=2)
vsftpd.conf 的内容非常单纯,每一行即为一项设定。若是空白行或是开头为#的一行,将会被忽略。内容的格式只有一种,如下所示
option=value
要注意的是,等号两边不能加空白。

2.权限异常
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
chown用法:用来更改某个目录或文件的用户名和用户组。
chmod用法:用来修改某个目录或文件的访问权限。
查看改变:ls -l 或者 ll

2.window连接异常
window连接时还要开放ftp防火墙
在这里插入图片描述

6、ftp命令

参考:https://docs.openeuler.org/zh/docs/22.03_LTS/docs/Administration/%E6%90%AD%E5%BB%BAFTP%E6%9C%8D%E5%8A%A1%E5%99%A8.html
1.连接服务器
ftp [hostname | ip-address]
其中hostname为服务器名称,ip-address为服务器IP地址。

$ ftp ip-address

2.本地和远程
!退出(返回本地),在命令行前面加!代表本地命令,不加为远程命令

ls #查看远程目录下文件
!ls #查看本地目录

pwd、lcd

3、下载文件
通常使用get或mget命令下载文件。
示例:获取服务器上/home/openEuler/目录下的所有文件,命令如下:
ftp> cd /home/openEuler/
ftp> mget .

4、上传文件
通常使用put或mput命令上传文件。
示例:将本地当前目录下所有htm文件上传到服务器/home/openEuler/下,命令如下:
ftp> cd /home/openEuler/
ftp> mput *.htm

5.删除文件
通常使用delete或mdelete命令删除文件。
示例:删除远程服务器上/home/openEuler/下的openEuler.htm文件,命令如下:
ftp> cd /home/openEuler/
ftp> delete openEuler.htm

附录

参考:
https://help.aliyun.com/zh/simple-application-server/use-cases/build-an-ftp-server-on-a-windows-instance
https://cloud.tencent.com/document/product/213/10912
https://zhuanlan.zhihu.com/p/93190903
https://blog.csdn.net/lzgonline/article/details/115918699
https://cshihong.github.io/2018/10/25/FTP%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%90%AD%E5%BB%BA%E5%92%8C%E9%85%8D%E7%BD%AE/
https://blog.csdn.net/weixin_45688268/article/details/126337169
https://blog.csdn.net/qq_38265137/article/details/83388101

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

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

相关文章

【Unity动画系统】详解Root Motion动画在Unity中的应用(一)

Root Motion动画与普通动画的区别 普通动画:动画文件里记录的是物体的绝对坐标和方向,在播放动画时,Unity会根据Animation中记录的值,直接修改游戏对象的坐标和方向,每一帧的坐标和方向都是通过插值计算得出来的&…

TouchGFX 总结

文章目录 使用中文字体多屏幕间交换数据UI to MCUMCU to UI API文档参考横竖屏切换 使用中文字体 添加一个textArea,默认的英文文本可见,输入中文字体后就看不见了,是因为这个默认的字体不支持中文,改一下字体就可以了&#xff1…

『大模型笔记』Code Example: Function Calling with ChatGPT

Code Example: Function Calling with ChatGPT 文章目录 一. Code Example: Function Calling with ChatGPT二. 参考文献一. Code Example: Function Calling with ChatGPT from openai import OpenAI from dotenv import load_dotenv import json# --------------------------…

【软件开发规范篇】JAVA后端开发编码格式规范

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…

定制开发AI智能名片商城小程序:玩转积分制度的成功案例

在数字化浪潮席卷而来的今天,企业营销方式不断创新,力求在众多竞争对手中脱颖而出。其中,积分制度以其直观、有效的特点,成为了众多企业的营销利器。某时尚品牌“潮流前线”便是其中的佼佼者。他们通过定制一款AI智能名片商城小程…

Unity涂鸦纹理实现

文章目录 前言实现过程UV坐标和UI坐标对齐修改像素代码 前言 心血来潮实现下场景中提供一张纹理进行涂鸦的功能。 最终实现效果: 实现过程 UV坐标和UI坐标对齐 这里的纹理使用了UGUI的Canvas进行显示,所以这里使用一张RawImage。 因为Unity的视口坐标是以左下角…

2024最新AIBotPro开源码AI Web 应用支持GPT-4全模型

2024最新AIBotPro开源码AI Web 应用支持GPT-4全模型, 支持AI绘画/插件联网/自定义插件/AI知识库等等。 内有详细的图文搭建教程

2024年第二十一届 五一杯 (C题)大学生数学建模挑战赛 | 多目标优化问题,深度学习分析 | 数学建模完整代码解析

DeepVisionary 每日深度学习前沿科技推送&顶会论文&数学建模与科技信息前沿资讯分享,与你一起了解前沿科技知识! 本次DeepVisionary带来的是五一杯的详细解读: 完整内容可以在文章末尾全文免费领取&阅读! 首先&…

Springboot+Vue+小程序+基于微信小程序电影票网购系统

Java电影票购买管理系统,Maven管理工具,MyBatis数据库操作,idea平台开发,后台的前端为Vue,前台客户端为小程序,功能丰富,还有电影周边购买功能,请在最下方二维码处联系我即可&#x…

windows下安装onlyoffice

文章目录 1、 安装ErLang2、 安装rabbitmq3、 安装postgresql4、 安装onlyoffice(社区版) 1、 安装ErLang 下载地址:https://erlang.org/download/otp_win64_24.2.exe opt_wind64_24.2.exe 直接运行,一步一步安装 2、 安装rabbitmq 下载地址&#xf…

【C++】初识string类

一、熟悉string类 1.1 string类的由来: C语音中的字符串需要我们自己管理底层空间,容易内存泄露。而C是面向对象语音,所以它把字符串封装成一个string类。 C中对于string的定义为:typedef basic_string string; 也就是说C中的str…

公共 IP 地址与私有 IP 地址区别有哪些?

​  IP 地址是分配给互联网上每个设备的唯一数字 ID。 IP 地址可以在 Internet 上公开使用,也可以在局域网 (LAN)上私有使用。本文,我们主要探讨公共 IP 地址和私有 IP 地址之间的区别。 公共IP地址:公共IP地址是用于访问Internet的向外的I…