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

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

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

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

相关文章

谷粒商城实战笔记-282~283-商城业务-订单服务-提交订单的问题

文章目录 一,282-商城业务-订单服务-提交订单的问题调试过程中出现的问题services面板介绍什么是 Services Panel?主要作用解决的痛点使用方法 二,283-商城业务-分布式事务-本地事务在分布式下的问题分布式事务问题解决方案分布式事务处理流程…

福建聚鼎:装饰画做起来一家店铺需要多久

在如今快节奏、高效率的社会环境中,许多人追求即时满足,希望所有事情都能迅速完成。然而,在艺术的世界里,时间往往是一个被精心雕琢的概念。今天,让我们来探讨一下,如果从零开始做起来一家装饰画店铺&#…

解决Selenium元素拖拽不生效Bug

前几天在使用Selenium进行元素拖拽操作时,发现Selenium自带的元素拖拽方法(dragAndDrop())不生效,网上的回答也是五花八门,比较混乱,尝试了以下几种方法均无法解决。 方案1:通过dragAndDrop()方…

Nucleus创建LocalServer后没有localhost

1.问题 在Omniverse平台上使用Nucleus模块时,需要本地创建一个Server,然后安装。安装完成后如下图所示。 会发现在Omniverse下是空的,没有localhost,需要点击Add Server,弹出如下所示。 然后输入创建之前的用户名和密码…

51单片机串口通信

一.通信 1.通信认识 随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指单片机与外部设备(传感器)或计算机与计算机之间的信息交换。通信有并行通信和串行通信两种方式。在多微机系统以及现代…

工作中常用的100个知识点

1. Permission deniedGit解决Permission denied, please try again问题_git permission denied, please try again.-CSDN博客 cd ~/.ssh/ 回车,进入.ssh路径下; 接下来在.ssh路径下配置全局的name和email,输入以下命令: git con…

sql-labs41-45关通关攻略

第41关 一.查询数据库 http://127.0.0.1/Less-41/?id-1%20union%20select%201,2,database()--http://127.0.0.1/Less-41/?id-1%20union%20select%201,2,database()-- 二.查表 http://127.0.0.1/Less-41/?id-1%20union%20select%201,2,(select%20group_concat(table_name)…

青岛实训day33(8/21)

1、配置一主二从mysql 1. mycat对mysql8不完全支持 2. mysql8主从问题不大get_pub_key1 3. gtids事务复制 4. 删除/etc/my.cnf 5. 同步data文件需要先停用mysql服务,删除data目录中的auto.cnf 6. gtid模式以及经典模式都需要锁表 flush tables with read lock;unlock tables;…

想学gis开发,java和c++哪个比较好?

java与C的应用场景不同,究竟选择谁,应该由开发者的兴趣方向来决定。 你选择Java,意味着以后的业务方向就是偏后台服务开发,如果你非得说我用java也可以写界面,对不起,别人不会。不管是从项目还是产品的角度…

【Redis】Redis 的消息队列 List、Streams—(六)

目录 一、消息队列二、List 方案三、Streams 方案 一、消息队列 我们一般把消息队列中发送消息的组件称为生产者,把接收消息的组件称为消费者,下图是一个通用的消息队列的架构模型: 消息队列在存取消息时,必须要满足三个需求&…

超详细超实用!!!java开发之IntelliJ IDEA下载与安装破解以及汉化教程(三)

云风网 云风笔记 云风知识库 一、安装包下载 1、官网下载 2、ideaIU-2024.2.0.2.exe 百度网盘资源 安装包下载完成后进行傻瓜式下一步安装就可以了 二、破解激活 由于IntelliJ IDEA可免费一个月,后续需要付费购买激活码,这里采用破解激活的方式 将…

从零上手CV竞赛Task2 # Datawhale AI夏令营

文章目录 平台参赛平台云平台 Task 1 从零上手CV竞赛下载baseline相关文件一键运行baseline!(大约需要25分钟)赛题解析数据集提交结果违法标准注意事项 下载生成的文件结果如图最后要记得关机 不然一直消耗算力 Task 2 建模方案解读与进阶物体…

从 0 到 1 的Prompt 教程,来自Claude 官方,不会写 prompt的看这个足够

Claude 的强大,最近得到了很多网友的验证,甚至效果上面大有超越 GPT的许多声音。 所以从优秀的 Claude 中学习,将会是一个很好的起点。 这里,Claude 的开发者们提供了一个相当详细的 Prompt Engineering 教程。 这个教程能够全面…

若依后端 MyBatis改为MyBatis-Plus

引用 1.引入MyBatis-Plus依赖 在总目录的pom.xml&#xff0c;导入依赖 <mybatis-plus.version>3.4.3</mybatis-plus.version> <!-- mybatis-plus 增强CRUD --> <dependency> <groupId>com.baomidou</groupId> <artifactId>…

计算机毕业设计选题推荐-医院门诊预约-医院预约挂号微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

Unity(2022.3.41LTS) - 着色器

目录 一、着色器的基本概念 二、表面着色器 一、着色器的基本概念 定义与作用&#xff1a; 着色器是一种在图形硬件上运行的程序&#xff0c;用于控制物体的颜色、纹理、光照、透明度等视觉属性。它通过对输入的几何数据&#xff08;如顶点位置、法线、纹理坐标等&#xff09…

项目:基于TCP的文件传输系统

项目介绍: 模拟FTP原理&#xff1a;客户端连接服务器后&#xff0c;向服务器发送一个文件。文件名可以通过参数指定&#xff0c;服务器端接收客户端传来的文件&#xff08;文件名随意&#xff09;&#xff0c;如果文件不存在自动创建文件&#xff0c;如果文件存在&#xff0c;…

代码随想录Day 23|回溯Part02,39.组合总和、40.组合总和Ⅱ、131.分割回文串

提示&#xff1a;DDU&#xff0c;供自己复习使用。欢迎大家前来讨论~ 文章目录 第七章 回溯算法part03一、题目题目一&#xff1a; 39. 组合总和解题思路&#xff1a;回溯三部曲剪枝优化小结&#xff1a; 题目二&#xff1a;40.组合总和Ⅱ解题思路&#xff1a;回溯三部曲 题目…

【项目源码】终于有人将打字游戏和编程英语结合起来啦!编程初学者的福音

Hello&#xff01;各位彦祖&#xff0c;亦菲们&#xff01;又是美好的一天&#xff01;今天给大家分享一个Java项目源码&#xff1a;Java打字游戏项目源码&#xff01; 看到这里&#xff0c;你可能会说&#xff01; 一个破打字游戏有什么可神气的&#xff01;&#xff01;&…

Leetcode面试经典150题-28.找出字符串第一个匹配项的下标

解法都在代码里&#xff0c;不懂就留言或者私信&#xff0c;比第一题稍微难点 用KMP解这个题简直就像大炮打蚂蚁&#xff0c;但是没办法&#xff0c;现在都是这么卷 package dataStructure.bigFactory;public class _28Strstr {public static int strStr(String s1, String s…