Linux---FTP文件服务器搭建及实战

news2024/9/29 11:32:50

一、FTP简介

FTP: File Transfer Protocol文件传输协议

FTP是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供。

在FTP的使用当中,用户经常遇到两个概念:下载(Download)和上传(Upload)。

下载文件就是从远程主机拷贝文件至自己的计算机上,上传文件就是将文件从自己的计算机中拷贝至远程主机上。

FTP协议:文件传输协议(File Transfer Protocol)

  • 协议定义了一个在远程计算机系统和本地计算机系统之间传输文件的一个标准

  • FTP运行在OSI模型的应用层,并利用传输协议TCP在不同的主机之间提供可靠的数据传输

  • FTP 在文件传输中还支持断点续传功能,可以大幅度减少CPU网络带宽的开销

用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件,由于FTP的文件传输是明文方式,具有一定危险性,所以就诞生了一种更加安全的传输方式vsftp。

1.1 VSFTP特点

VSFTP是一个比FTP更安全的软件具有以下特点:

  1. vsftp一般以普通用户运行,降低了进程的权限,提高了安全性

  2. 任何需要执行较高权限的指令都需要上层程序的许可

  3. ftp的命令都被整合到了vsftp中,不需要系统额外提供命令

  4. 用于chroot功能,可以改变用户的根目录,限制用户只能在自己的家目录

  5. vsftpd是一个基于GPL发布的FTP服务器软件。其中的vs是" Very Secure"的缩写,由此名称缩写可以看出,本服务器的初衷就是服务的安全性。

  6. vsftpd是RedHat Linux默认使用的ftp服务端软件。

  7. vsftpd不再依赖于xinetd服务

  8. vsftpd可同时允许匿名( anonymous )与本地用户(local)访问,还可以支持虚拟用户。

1.2 VSFTP连接类型

控制连接:TCP21,用于发送FTP命令信息

数据连接:TCP20,用于上传、下载数据

1.3 Vsftp工作模式

FTP协议有两种工作方式:PORT方式和PASV方式,主动式和被动式

  • PORT(主动模式):服务端从20端口主动向客户端发起连接

    • 客户端连接到ftp服务端的信息端口(默认是20),并向其发送用户名和密码。

    • 若客户端想要下载或上传文件,客户端随即开放一个端口(1024以上),发送PORT命令倒ftp服务端,告知ftp服务端采用主动模式并开放数据端口(默认是ftp服务端的信息端口-1,也就是20)。

    • 随后ftp服务端会通过数据端口和客户端开发的端口进连接,从而传输文件信息。

  • PASV(被动模式):服务端在指定范围内某个端口被动等待客户端连接

    • 客户端连接到ftp服务端的信息端口(默认是21),并向其发送用户名和密码。

    • 若客户端想要下载或上传文件,客户端发送PASV命令倒ftp服务端,告知ftp服务端采用被动模式,服务器在本地随即开放一个端口(自己配置范围),然后将开放的端口告诉客户端。

    • 客户端连接服务器这个开放的端口,从而上传或下载文件。

模式的不同:

  • PORT:需要客户端开放端口给服务器进行文件的上传和下载,但不同客户端自身防火墙规则不同,可能出现不能传输文件的情况。

  • PASV:服务器开放端口给客户端进行文件的上传和下载,防火墙可控,因此较为推荐。

1.4 FTP用户的类型

匿名用户:anonymous或ftp

本地用户:计算机操作系统的用户名和密码,帐号名称、密码等信息保存在passwd/shadow文件中

虚拟用户:使用独立的帐号/密码数据文

二、VSFTPD安装

2.1 服务介绍

  • 服务包:vsftpd

  • 服务类型:由Systemd启动的守护进程

  • 配置单元: /usr/lib/systemd/system/vsftpd.service

  • 守护进程: /usr/sbin/vsftpd

  • 端口: 21(ftp) , 20(ftp‐data)

  • 主配置文件: ==/etc/vsftpd/vsftpd.conf==

  • 用户访问控制配置文件: /etc/vsftpd/ftpusers /etc/vsftpd/user_list

  • 日志文件: /etc/logrotate.d/vsftpd

2.2 配置文件参数

参数作用
listen=NO是否以独立运行的方式监听服务
listen_address=ip地址设置要监听的IP地址
listen_port=21设置FTP服务的监听端口
download_enable=YES是否允许下载文件
userlist_enable=YES设置用户列表为"允许"
userlist_deny=YES设置用户列表为"禁止"
max_clients=0最大客户端连接数,0为不限制
max_per_ip=0同一IP地址的最大连接数,0为不限制
anonymous_enable=YES是否允许匿名用户访问
anon_upload_enable=YES是否允许匿名用户上传文件
anon_umask匿名用户上传文件的umask权限
anon_root=/var/ftp匿名用户的ftp根目录
anon_mkdir_write_enable=YES是否允许匿名用户创建目录
anon_other_write_enable=YES是否开放匿名用户的其他写入权限(重命名、删除等)
anon_max_rate=0匿名用户的最大传输速率,0为不限制
local_enable=yes是否允许本地用户登录
local_umask=022本地用户上传文件的umask值
local_root=/vat/ftp本地用户的ftp根目录
chroot_local_user=YES是否将用户权限禁锢在ftp目录,以确保安全
local_max_rate=0本地用户的最大传输速率,0为不限制

2.3 关闭selinux

关闭防火墙

修改之后需要执行命令reboot重启Linux服务

reboot 

2.4 安装VSFP

使用yum安装vsfp 

yum -y install vsftpd

三、允许匿名用户上传文件

3.1 找到配置文件进行修改

cd /etc/vsftpd/

将下面这些添加进去

# 匿名用户上传文件的umask值

anon_umask=022

# 匿名用户允许上传文件

anon_upload_enable=YES

# 匿名用户允许创建文件夹

anon_mkdir_write_enable=YES

# 匿名用户允许写文件

anon_other_write_enable=YES

3.2 重启(开启)服务

#开启

systemctl  start vsftpd 

#重启

systemctl  restart vsftpd 

3.3 找到pub文件修改权限 

3.4 客户端访问ftp 

访问

随便上传一个文件 

在虚拟机里查看是否上传成功

四、搭建图片资源服务器 

1.禁止匿名用户访问

cd /etc/vsftpd

保存之后重启服务

systemctl restart vsftpd 

2.添加本地用户

useradd testftp

修改密码

 passwd  dys1234..

这里就是刚才创建的用户的家目录 上传就在家目录里面 在家目录里面创建一个文件夹名字必须和下面资源服务的 /名字/ 相同

mkdir images

给这个文件夹里上传一张图片

  

3.搭建资源服务

修改Linux配置文件

cd /opt/nginx/nginxserver/conf

4. 给创建的家目录权限

 找到 /home 给刚才创建的用户的家目录赋值777权限

chmod 777 testftp

5. 浏览器访问

⚠️ 启动nginx

可以访问到就说明配置生效了 

6.非匿名客户端访问

在关闭匿名用户访问之后 再通过客户端访问ftp就需要登录了 

账号密码为上面设置的账号密码使用登录即可

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

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

相关文章

紫金大数据平台架构之路(一)----大数据任务开发和调度平台架构设计

一、总体设计 初来公司时,公司还没有大数据,我是作为大数据架构师招入的,结合公司的线上和线下业务,制定了如下的大数据架构路线图。 二、大数据任务开发和调度平台架构设计 在设计完总体架构后,并且搭建完hadoop/ya…

ArkUI-布局(四)

ArkUI-布局 轮播部分属性及方法循环播放及自动轮播导航点样式页面切换方式轮播方向每页显示多个子页面自定义切换动画 选项卡使用方式部分属性及方法顶部导航和底部导航侧边导航限制导航栏的滑动固定导航栏和滚动导航栏自定义导航栏切换至指定页签 轮播 Swiper组件提供滑动轮播…

大语言模型从零开始训练全面指南:预训练、Tokenizer训练、指令微调、奖励模型、强化学习

在这篇文章中,我们将尽可能详细地梳理一个完整的 LLM 训练流程。包括模型预训练(Pretrain)、Tokenizer 训练、指令微调(Instruction Tuning)、奖励模型(Reward Model)和强化学习(RLH…

SprinBoot+Vue线上教学平台的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质…

基于yolov8的雾天行人车辆检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的雾天行人车辆检测系统是一种高效且先进的解决方案,专门用于在恶劣的雾天条件下检测和识别道路上的行人和车辆。YOLOv8作为最新的YOLO系列模型,自2023年推出以来,在目标检测领域展现了卓越的性能。该系统利用YOLOv8…

Java 入门指南:Java NIO —— Buffer(缓冲区)

NIO 的引入 在传统的 Java I/O 模型(BIO)中,I/O 操作是以阻塞的方式进行的。当一个线程执行一个 I/O 操作时,它会被阻塞直到操作完成。这种阻塞模型在处理多个并发连接时可能会导致性能瓶颈,因为需要为每个连接创建一…

Java-数据结构-时间和空间复杂度 (ಥ_ಥ)

目录: 一、算法效率: 1、我们如何衡量一个算法的好与坏: 2、算法效率: 二、时间复杂度: 1、概念: 2、大O的渐进表示法: 3、推导大O渐进方法: 4、时间复杂度的举例&#xff1…

【推荐】Linux 推荐软件

【推荐】Linux 推荐软件 星火应用商店 Spark-Store: 专注Linux应用适配的应用商店 专注Linux应用适配的应用商店 微信 基于wine工具;wine中的windows涉及很多DLL需要配置,可以借助winetricks、Q4wine,另外还需要一个windwos系统,用来复制其中…

私人诊所|基于SprinBoot+vue的私人诊所管理系统(源码+数据库+文档)

私人诊所管理系统 基于SprinBootvue的私人诊所管理系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员功能实现 患者功能实现 医生功能实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&am…

el-table自定义合并表格

前沿 : 为了更好的展示数据,很多地方用到表格合并,但是element文档里面没有好的合并方法,只能自定义合并表格来解决需求。于是乎,写了以下方法,方面以后拿来即用。 自定义合并表格 表格数据 tableData: [{i…

图片怎么裁剪中间部分?这几种裁剪方法每个人都学的会!

图片怎么裁剪中间部分?在数字生活的广阔图景中,图片裁剪作为一项基本技能,其重要性日益凸显,这一操作不仅是对图像边界的精准界定,更是通往个性化表达与标准化应用的桥梁。从日常社交媒体的瞬间分享,到专业…

多模态工业异常检测算法整理

本文统计了MVTec 3D-AD上的多个多模态异常检测算法,仅对比其I-AUROC指标。数据的来源为多模态工业异常检测Benchmark | Ziuch の Blog,这位博主经常分享很多工业异常检测的优秀博文,质量很高。 MVTec 3D-AD相关的异常检测算法包含3大类&#…

智慧公厕系统,重塑公共卫生间新生态@卓振思众

在快节奏的现代生活中,公共卫生间作为城市基础设施的重要组成部分,其管理效率和使用体验直接关系到市民的生活质量。近年来,随着科技的飞速发展,智慧卫生间系统应运而生,以其智能化、便捷化的特点,正逐步改…

低代码用户中心的构建与应用

引言 在现代软件开发中,低代码平台因其高效、灵活、用户友好的特性而逐渐受到青睐。特别是在用户中心的构建方面,低代码平台能够显著提升开发效率,降低开发成本。本文将探讨如何利用低代码平台构建一个高效的用户中心,并分享一些…

树形dp + 位运算 + 差分,MC0362 异或

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 码题集OJ-异或 (matiji.net) 二、解题报告 1、思路分析 考虑每个结点u&a…

工作 6 年,@Transactional 注解用的一塌糊涂

接手新项目一言难尽,别的不说单单就一个 Transactional 注解用的一塌糊涂,五花八门的用法,很大部分还失效无法回滚。 有意识的在涉及事务相关方法上加Transactional注解,是个好习惯。不过,很多同学只是下意识地添加这个…

Redis的ZSet底层数据结构

一、ZSet底层数据结构 typedef struct zset{// 跳表zskiplist *zsl;// 字典dict *dic; }zset类型的底层数据结构是由压缩列表或跳表、**字典(哈希表)**实现的。 如果zset中元素个数小于128个,并且每个元素的值小于64字节时,redi…

Prompt提示词如何写才能发挥大语言模型LLM的最大潜力

提示词 提示工程学是一门相对较新的学科,用于开发和优化提示,以便高效地利用语言模型(LM)来进行各种应用和研究主题。提示工程技能有助于更好地了解大型语言模型(LLM)的能力和限制。研究人员使用提示工程来…

错误处理与日志记录:在自动化脚本中实施的有效策略

目录 引言 错误处理机制 1. 异常捕获与处理 2. finally子句 3. 异常信息的打印输出 日志记录 1. 使用logging模块 基本配置 日志级别 日志回滚 2. 自定义日志格式 3. 多处理器和过滤器 实践案例 自动化测试中的错误处理与日志记录 脚本示例 结论 在自动化测试领…

载流子的产生与复合

文章目录 前言有三种形式能够产生载流子 前言 半导体中能贡献导电作用的电子和空穴称为载流子 有三种形式能够产生载流子 热激发(本征激发):价带中的电子受到热激发可能会跃迁至导带,成为能够起导电作用的电子,同时对…