简单的Linux Ftp服务搭建

2024-09-05 10:28
文章标签 简单 linux 服务 搭建 ftp

本文主要是介绍简单的Linux Ftp服务搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简单的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.txtftp.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);}
}

在这里插入图片描述

这篇关于简单的Linux Ftp服务搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

IIS 7.0 及更高版本中的 FTP 状态代码

《IIS7.0及更高版本中的FTP状态代码》本文介绍IIS7.0中的FTP状态代码,方便大家在使用iis中发现ftp的问题... 简介尝试使用 FTP 访问运行 Internet Information Services (IIS) 7.0 或更高版本的服务器上的内容时,IIS 将返回指示响应状态的数字代

Linux CPU飙升排查五步法解读

《LinuxCPU飙升排查五步法解读》:本文主要介绍LinuxCPU飙升排查五步法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录排查思路-五步法1. top命令定位应用进程pid2.php top-Hp[pid]定位应用进程对应的线程tid3. printf"%

Linux下安装Anaconda3全过程

《Linux下安装Anaconda3全过程》:本文主要介绍Linux下安装Anaconda3全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录简介环境下载安装一、找到下载好的文件名为Anaconda3-2018.12-linux-x86_64的安装包二、或者通

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

《Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法》在Linux系统中,管理磁盘设备和分区是日常运维工作的重要部分,而lsblk命令是一个强大的工具,它用于列出系统中的块设备(blockde... 目录1. 查看所有磁盘的物理信息方法 1:使用 lsblk(推荐)方法 2:使用 fdisk -l(

Linux中的more 和 less区别对比分析

《Linux中的more和less区别对比分析》在Linux/Unix系统中,more和less都是用于分页查看文本文件的命令,但less是more的增强版,功能更强大,:本文主要介绍Linu... 目录1. 基础功能对比2. 常用操作对比less 的操作3. 实际使用示例4. 为什么推荐 less?5.

Windows Server 2025 搭建NPS-Radius服务器的步骤

《WindowsServer2025搭建NPS-Radius服务器的步骤》本文主要介绍了通过微软的NPS角色实现一个Radius服务器,身份验证和证书使用微软ADCS、ADDS,具有一定的参考价... 目录简介示意图什么是 802.1X?核心作用802.1X的组成角色工作流程简述802.1X常见应用802.

linux lvm快照的正确mount挂载实现方式

《linuxlvm快照的正确mount挂载实现方式》:本文主要介绍linuxlvm快照的正确mount挂载实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux lvm快照的正确mount挂载1. 检查快照是否正确创建www.chinasem.cn2.