简单的Linux Ftp服务搭建

news2024/11/15 18:52:21

简单的Linux FTP服务搭建

1.需求

公司有一个esb文件传输代理,其中我们程序有文件传输功能,需要将本地文件传输到esb文件代理服务器上,传输成功之后发送http请求,告知esb将固定文件进行传输到对应外围其他服务的文件目录中,整个过程我们使用到了FTP服务,此处记录一下方便后续复习使用。

2.简单概念

FTP(file Transfer Protocol,文件传输协议),是典型的C/S架构的应用层协议,由客户端软件和服务端软件两个部分共同实现文件传输功能,FTP客户端和服务器之间的连接时可靠的,面向连接的,为数据的传输提供了可靠的保证。

FTP 是TCP传输协议,主要使用20和21端口,20端口用来传输数据,21号端口用来传输FTP控制命令的。

FTP一共分为两种工作模式,分别为主动模式以及被动模式

  • 主动模式:FTP服务端接收下载控制命令后,会主动从tcp/20端口发送数据传输给客户端
    动模式下,客户端下载文件时,FTP服务会主动发起一个连接到客户端(通常是1024以上的端口)建立数据传输通道。
    服务器发送一个PORT命令给客户端,告诉客户端自己的IP地址和使用的端口号。
    客户端打开指定的端口等待接收来自服务器的数据连接。
  • 被动模式:FTP服务端接收下载控制命令后,会开启一个空闲端口被动等待客户端数据传输连接
    在被动模式下,当客户端请求从服务器下载文件时,FTP服务器不会直接连接到客户端的数据端口。
    相反,服务器会创建一个临时的端口[可以指定范围]并处于监听状态,然后通过PASV命令告诉客户端这个端口的信息。
    客户端主动连接到服务器提供的端口,从而建立数据传输通道。

这两种模式的选择主要取决于网络环境的限制,例如NAT或防火墙设置。在某些情况下,主动模式可能因为防火墙或NAT设备的限制而无法正常工作,此时就需要使用被动模式来绕过这些限制。

3.安装过程

我们使用的是 vsftpd服务,首先确认服务是否以前安装过

# 检查服务是否安装过
rpm -q vsftpd

在这里插入图片描述
执行安装命令

yum -y install vsftpd

在这里插入图片描述
进入到/etc/vsftpd目录,进行原有配置文件备份

cd /etc/vsftpd
cp vsftpd.conf vsftpd.conf.bak

在这里插入图片描述
编辑ftp的配置文件vsftpd.conf

vim /etc/vsftpd/vsftpd.conf

# 文件中具体修改信息
anonymous_enable=YES			# 开启匿名访问,默认开启
local_enable=YES				# 允许本地用户登录
write_enable=YES				# 是否开启ftp的写权限,上传使用
local_umask=022					# 使用本地用户上传文件,文件默认权限是多少 2 写权限
anon_umask=022                  # 设置匿名用户所上传数据权限
anon_upload_enable=YES          # 允许匿名用户上传文件。需取消注释
anon_mkdir_write_enable=YES     # 允许匿名用户创建(上传)目录,需取消注释
anon_other_write_enable=YES     # 允许删除、重命名、覆盖等操作,需要新增
anon_root=/var/ftp/				# 允许匿名用户上传目录,需要新增

编辑完成后重启vsftpd服务,关闭防火墙设置执行模式为宽容模式

systemctl restart vsftpd
systemctl stop firewalld
setenforce 0

在这里插入图片描述

注意:setenforce 0 这个 Linux 命令的作用是将 SELinux (Security-Enhanced Linux) 的执行模式设置为宽容模式(Permissive mode)。

  • Enforcing Mode(强制模式):SELinux 完全启用,并且会强制执行所有的安全策略规则。任何违反策略的行为都会被拒绝,并记录在日志中。
  • Permissive Mode(宽容模式):SELinux 启用,但是不会强制执行策略规则。虽然会检查所有安全策略规则,但是对于违反策略的行为只会记录日志,而不会阻止操作。
    Disabled(禁用):SELinux 完全不工作。

当你运行 setenforce 0 命令时,SELinux 会进入 Permissive 模式,在这种模式下,你可以观察到哪些操作会被 SELinux 阻止,但实际操作还是会继续执行。这对于调试 SELinux 的策略或者查看是否有 SELinux 引起的问题是非常有用的。

需要注意的是,更改 SELinux 的模式通常需要管理员权限。此外,对于系统的安全性来说,运行在 Enforcing 模式下比运行在 Permissive 或 Disabled 模式下更安全。如果你不确定 SELinux 对你的系统的影响,请谨慎操作。

我们上面配置匿名用户的访问目录为 /var/ftp,我们在此目录中随意新增一个jj.xx文件,然后使用windows客户端进行连接
在这里插入图片描述
在cmd中进行客户端匿名连接,使用anonymous/ftp用户登录,密码为空,则可以直接登录,观察到jj.xx文件存在于配置的目录中
在这里插入图片描述
使用get 以及 put 命令进行文件传输下载以及上传操作

get jj.xx
put jj2.xx

在这里插入图片描述

安全隐患:匿名用户权限过高,可靠性低。实际生产过程中,都会禁止匿名用户登录,开始配置

vim /etc/vsftpd/vsftpd.conf
local_enable=Yes                 # 启用本地用户
anonymous_enable=NO              # 关闭匿名用户访问
write_enable=YES                 # 开放服务器的写权限(若要上传,必须开启)
local_umask=077                  # 可设置仅宿主用户拥有被上传的文件的权限
chroot_local_user=YES			 # 将本地用户限制在其主目录内。这意味着当本地用户登录 FTP 服务器后,他们只能访问其主目录及其子目录,不能访问其他目录
allow_writeable_chroot=YES		 # 允许在 chroot 环境下的目录具有写入权限。如果设置了 chroot_local_user=YES,那么默认情况下,用户的主目录通常是只读的。此选项允许用户在他们的主目录内进行写入操作
local_root=/var/ftp/root		 # 指定本地用户的根目录。在这个例子中,所有本地用户的 FTP 访问都将被限制在 /var/ftp/root 目录内。
userlist_deny=NO				 # 当userlist_deny=NO时,用户列表中的用户将被允许登录FTP服务器。YES则相反,无法登录服务器

配置之后我们修改 user_list文件, 在最后添加可以登录ftp的用户信息,此处我们添加risk风险用户在这里插入图片描述
添加之后重启vsftpd服务

systemctl restart vsftpd

我们再使用risk用户进行登录,进行尝试
在这里插入图片描述

3.java客户端连接ftp测试

我们在服务器上随意添加一个目录以及文件,具体信息如下
在这里插入图片描述
我们使用java客户端进行连接,我们首先导入使用的hutool以及ftp包信息

<!-- ftp上传下载-->
<dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    <version>3.7</version>
</dependency>
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.5.7</version>
</dependency>

具体代码部分为:

package cn.git.ftp;

import cn.hutool.extra.ftp.Ftp;

import java.io.File;

/**
 * @description: ftp连接测试
 * @program: bank-credit-sy
 * @author: lixuchun
 * @create: 2024-05-04
 */
public class FTPTest {
    public static void main(String[] args) {
        // ftp连接信息
        Ftp ftp = new Ftp("192.168.138.129", 21, "risk", "101022li");
        File file = new File("D:\\test\\core_2024-09-04.txt");
        // 配置目录需要配置相对路径,相对于ftp服务器配置的根目录,当前我配置的为 /var/ftp/root
        // 实际最后获取文件真实地址为: /var/ftp/root/cus/local/batch/core/core_2024-09-04.txt
        ftp.download("/cus/local/batch/core/core_2024-09-04.txt", file);

        // 或者修改工作目录,再次进行下载
        ftp.cd("/cus/local/batch/core");
        ftp.download("core_2024-09-04.txt", file);

        // 修改工作目录上传文件
        File file2 = new File("D:\\test\\local_20240829154850006b2dx.txt");
        ftp.cd("/COMS");
        ftp.upload("./", file2);
    }
}

在这里插入图片描述

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

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

相关文章

【高阶数据结构】秘法(二)——图(一):图的基本概念和存储结构

前言&#xff1a; 今天我们要讲解的是数据结构中图的部分&#xff0c;这部分在我们实际生活中也是经常会碰到的&#xff0c;同时这部分也是数据结构中比较有难度的部分&#xff0c;这部分内容我会把它分为多章来进行讲解&#xff0c;今天我们先来讲解一下图的基本概念和存储结构…

Codeforces Round 920 (Div. 3)(A,B,C,D)

A 在二维坐标轴上有一个正方形&#xff0c;给你一个正方形的四个顶点坐标&#xff0c;求面积 知道一个边长&#xff0c;平方即可 for(int i0;i<4;i)x[i]x1; Arrays.sort(x); //1122 kMath.abs(x[2]-x[1]); System.out.println(k*k); B 操作1、2是添加和修改&#xff0c;操…

Windows系统下的Spark环境配置

一&#xff1a;Spark的介绍 Apache Spark 是一个开源的分布式大数据处理引擎&#xff0c;它提供了一整套开发API&#xff0c;包括流计算和机器学习。Spark 支持批处理和流处理&#xff0c;其显著特点是能够在内存中进行迭代计算&#xff0c;从而加快数据处理速度。尽管 Spark …

【专题】2024年8月中国企业跨境、出海、国际化、全球化行业报告汇总PDF合集分享(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p37584 在全球化浪潮汹涌澎湃的当下&#xff0c;中国企业积极探索海外市场&#xff0c;开启了出海跨境的新征程。本报告合集旨在全面梳理出海跨境全球化行业的发展态势&#xff0c;涵盖多个领域的深度洞察。 从游戏、快消品、医疗器…

Python行结构(逻辑行、物理行、显式拼接行、隐式拼接行、空白行)

Python行结构 &#xff08;逻辑行、物理行、显式拼接行、隐式拼接行、空白行&#xff09; 本文目录&#xff1a; 零、时光宝盒 一、Python PEP8 编码行规范 1.1、Maximum Line Length 行的最大长度 1.2、在二元运算符之前应该换行吗&#xff1f; 二、Python行结构 2.1、物…

电子设计-基础3-电感与二极管

电子设计-基础3-电感与二极管 电感电感简介电感的发展历史电感的原理结构电感的性质&#xff1a; 电流惯性电感性质的演示 电感的分类常用的几种电感&#xff1a;一体成型电感一、定义与结构二、特点 三、工作原理四、应用领域 五、优缺点屏蔽电感 CD系列电感&#xff1a;多用于…

网站安全问题整改

网站安全、政务云、第三方安全检测机构等评测出来的网站web安全问题整改&#xff0c;如果你也正需要做这方面&#xff0c;请联系我吧

【代码随想录训练营第42期 Day50打卡 - dfs入门 - 卡码网 98. 所有可达路径

目录 一、dfs基础 二、模板题 题目&#xff1a;98. 所有可达路径 题目链接 题解&#xff1a;dfs邻接矩阵 三、小结 一、dfs基础 dfs是按照一个方向搜索到尽头再搜索其他方向。怎样实现对其他方向的搜索呢&#xff1f;我们可以通过回溯&#xff0c;撤销最后一步&#xff0c…

JUC-无锁之CAS

问题提出 (应用之互斥) package cn.itcast; import java.util.ArrayList; import java.util.List; interface Account {// 获取余额Integer getBalance();// 取款void withdraw(Integer amount);/*** 方法内会启动 1000 个线程&#xff0c;每个线程做 -10 元 的操作* 如果初始…

2024全国大学省数学建模竞赛C题-优秀论文分析(2023)

​某商超蔬菜类商品动态定价与补货决策研究 摘 要 随着生鲜市场规模的持续扩大&#xff0c;蔬菜零售行业的竞争也愈加激烈。为帮助某商超 改善经营模式&#xff0c;本文基于题目所给数据信息&#xff0c;建立数学模型进行分析&#xff0c;从而制定合理 的蔬菜类商品动态定价与…

ARM发布新一代高性能处理器N3

简介 就在2月21日&#xff0c;ARM发布了新一代面向服务器的高性能处理器N3和V3&#xff0c;N系列平衡性能和功耗&#xff0c;而V系列则注重更高的性能。此次发布的N3&#xff0c;单个die最高32核&#xff08;并加入到CCS&#xff0c;Compute Subsystems&#xff0c;包含Core&a…

C语言函数不同个数、大小形参对执行速度的影响:以Cortex-M3为例从汇编角度分析原因

0 资料&工具 Cortex M3权威指南(中文).pdf keil5&#xff08;用于仿真查看汇编代码、栈变化&#xff09;1 C语言函数不同个数、大小形参对执行速度的影响&#xff1a;以Cortex-M3为例从汇编角度分析原因 C语言中有条不成文的规定&#xff1a;不建议函数的形参数量超过4个…

C8T6超绝模块--LED

C8T6超绝模块–LED 大纲 怎样点亮LED结构体分析代码流程 具体案例 怎样点亮LED 首先不同的芯片的接法不一样&#xff0c;需要自己查看自己的芯片的原理图&#xff0c;我使用的是C8T6&#xff0c;使用的PC13接入的LED 注意看&#xff1a;怎么才能使LED灯亮呢&#xff1f; …

flux 文生图大模型 自有数据集 lora微调训练案例

参考: https://github.com/ostris/ai-toolkit 目前 Flux 出现了 3 个训练工具 SimpleTuner https://github.com/bghira/SimpleTuner X-LABS 的https://github.com/XLabs-AI/x-flux ai-toolkit https://github.com/ostris/ai-toolkit 待支持:https://github.com/kohya-ss/sd-s…

RK3588平台开发系列讲解(显示篇)MIPI详解

文章目录 一、DSI和CSI二、初识MIPI2.1、框架2.2、参数2.3、接口三、设备树下CSI的配置沉淀、分享、成长,让自己和他人都能有所收获!😄 一、DSI和CSI DSI( Display Serial Interface ) :位于处理器和显示模组之间的显示串行接口CSI( Camera Serial Interface ) : 位于…

Linux 安装nodejs环境

文章目录 Node.js简介Node.js的核心特性Node.js的生态系统Node.js的模块系统 部署下载Node.js预编译二进制包上传到Linux服务器并解压配置环境变量验证安装 部署在下边&#xff0c;我先对nodejs进行一些介绍&#xff0c;大家了解一下 Node.js简介 Node.js是一个基于Chrome V8…

计算机毕业设计Spark+PyTorch知识图谱房源推荐系统 房价预测系统 房源数据分析 房源可视化 房源大数据大屏 大数据毕业设计 机器学习

《SparkPyTorch知识图谱房源推荐系统》开题报告 一、选题背景与意义 1.1 选题背景 随着互联网的快速发展和大数据技术的广泛应用&#xff0c;房地产行业特别是房屋租赁市场迎来了前所未有的变革。房源信息的海量增长使得用户在寻找合适的房源时面临巨大挑战。传统的房源推荐…

集成电路学习:什么是IDE集成开发环境

IDE&#xff1a;集成开发环境 IDE&#xff0c;全称“Integrated Development Environment”&#xff0c;即集成开发环境&#xff0c;是一种用于提供程序开发环境的应用程序。它集成了代码编写、分析、编译、调试等多种功能于一体的开发软件服务套&#xff0c;为开发者提供了一个…

集成电路学习:什么是MPU微处理器

一、MPU&#xff1a;微处理器 MPU&#xff0c;全称Microprocessor Unit&#xff0c;即微处理器单元&#xff0c;是计算机系统中的核心部件之一。MPU是一种集成了中央处理器&#xff08;CPU&#xff09;、内存、外设控制器和总线接口等功能的芯片&#xff0c;为电子设备提供强大…

Linux驱动(五):Linux2.6驱动编写之设备树

目录 前言一、设备树是个啥&#xff1f;二、设备树编写语法规则1.文件类型2.设备树源文件&#xff08;DTS&#xff09;结构3.设备树源文件&#xff08;DTS&#xff09;解析 三、设备树API函数1.在内核中获取设备树节点&#xff08;三种&#xff09;2.获取设备树节点的属性 四、…