当前位置: 首页 > news >正文

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

一、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就需要登录了 

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Unity URP支持多光源阴影
  • mpc_local_planner的编译问题
  • 搭建和使用OnFinality?
  • ML16_转移矩阵、平稳分布和详细平衡条件
  • uniapp插槽用法
  • 【出行计划 / 2】
  • 在SpringMVC中用fmt标签实现国际化/多语言
  • Express与SQLite集成教程:轻松实现数据库操作
  • 每周12600元奖金池,邀你与昇腾算力共舞,openMind开发者盛宴启幕!
  • 专利申请全攻略:一步一步详解申请流程
  • “Flash闪存”介绍 及 “SD NAND Flash”产品的测试含例程
  • 手撕Python之散列类型
  • n*n矩阵,输出矩阵中任意两点之间所有路径
  • 代码随想录第六天|454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和
  • Unity数据持久化 之 二进制存储法
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 30天自制操作系统-2
  • Electron入门介绍
  • fetch 从初识到应用
  • 番外篇1:在Windows环境下安装JDK
  • 前端路由实现-history
  • 容器服务kubernetes弹性伸缩高级用法
  • 使用权重正则化较少模型过拟合
  • 我是如何设计 Upload 上传组件的
  • 一起参Ember.js讨论、问答社区。
  • 在weex里面使用chart图表
  • 06-01 点餐小程序前台界面搭建
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 湖北分布式智能数据采集方法有哪些?
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​【已解决】npm install​卡主不动的情况
  • $(function(){})与(function($){....})(jQuery)的区别
  • (11)MSP430F5529 定时器B
  • (20050108)又读《平凡的世界》
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (4.10~4.16)
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (论文阅读40-45)图像描述1
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (四)图像的%2线性拉伸
  • (算法设计与分析)第一章算法概述-习题
  • (一)Linux+Windows下安装ffmpeg
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • ***利用Ms05002溢出找“肉鸡
  • .apk文件,IIS不支持下载解决
  • .net refrector
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖