Ubuntu搭建FTP服务器

2024-08-28 06:52
文章标签 ubuntu 服务器 搭建 ftp

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

目录

1.ftp简介

2.vsftpd

2.1.介绍

2.2.安装与卸载

2.3.综合案例 - 本地用户模式  

2.4.1.创建FTP用户

2.4.2.配置vsftpd

2.4.3.配置防火墙

 


1.ftp简介

一般来讲,人们将计算机联网的首要目的就是获取资料,而文件传输是一种非常重要的获取资料的方式。

FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端口,其中端口20用于进行数据传输,端口21用于接受客户端发出的相关FTP命令与参数。

FTP服务器普遍部署于内网中,具有容易搭建、方便管理的特点,有些FTP客户端工具还可以支持文件的多点下载以及断点续传技术。

FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端则是向服务器发送连接请求,以建立数据传输链路的主机。FTP协议有下面两种工作模式:

主动模式:FTP服务器主动向客户端发起连接请求;

被动模式的工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输。  

2.vsftpd

2.1.介绍

vsftpd 的全称是 Very Secure FTP Daemon 的意思;安全性是它的一个最大的特点,vsftpd是一个UNIX类操作系统上运行的服务器的名称,它可以运行在LinuxBSDSolarisHP-UNIX等系统上面,是一个完全免费的、开放源码的ftp服务器软件,支持很多其他的FTP服务器所不支持的特征。

vsftpd 也支持 chroot 功能,chroot 顾名思义就是 change root directory 的意思,root 指的是根目录而非系统管理员;chroot可以将用户的某个特定的目录变成根目录(家目录),所以与该目录没有关系的其他目录就不会被访问了;

vsftpd 这个服务的启动者身份为一般用户,所以对于 Linux 系统的权限较低,对于 Linux 系统的危害就相对的减低了;绝大部分 ftp 会使用到的额外指令功能 (dir, ls, cd ...) 都已经被整合到 vsftpd 主程序当中了,因此理论上 vsftpd 不需要使用到额外的系统提供的指令,所以在 chroot 的情况下,vsftpd 不但可以顺利运作,且不需要额外功能对于系统来说也比较安全;

vsftpd作为更加安全的文件传输协议服务程序,允许用户以3种认证模式登录FTP服务器:

  • 匿名用户模式:任何人无需密码验证就可以直接登录到FTP服务器。这种模式最不安全,一般只用来保存不重要的公开文件,不推荐在生产环境中使用。

  • 本地用户模式:通过Linux系统本地账号进行验证的模式,相较于匿名用户模式更安全。

  • 虚拟用户模式:FTP服务器的专有用户。虚拟用户只能访问Linux系统为其提供的FTP服务,而不能访问Linux系统的其他资源,进一步增强了FTP服务器的安全性。

本次课将主要介绍被动模式下,使用本地用户访问FTP服务器的配置方法。

 

2.2.安装与卸载

安装vsftpd

# 更新apt软件包列表
sudo apt-get update 
# 安装vsftpd
sudo apt-get install vsftpd
# 检测是否安装
vsftpd -version   
# 设置FTP服务开机自启动。
sudo systemctl enable vsftpd.service
# 启动FTP服务
sudo systemctl start vsftpd.service

执行该命令时如果提示错误信息Job for vsftpd.service failed because the control process exited with error code,请排查是否存在下述问题:

  • 21端口被占用时,使用lsof -i:21命令查看是否存在进程,如果存在进程,使用kill -9 <进程号>命令杀掉进程。

  • 网络环境不支持IPv6时,在/etc/vsftpd.conf配置文件中,将listen_ipv6=YES修改为listen_ipv6=NO

  • MAC地址不匹配时,运行ifconfig命令查看MAC地址,并在/etc/sysconfig/network-scripts/ifcfg-xxx配置文件中新增或修改HWADDR=<MAC地址>

运行以下命令,查看FTP服务监听的端口:

# 安装netstate sudo apt install -y net-tools
# 查看FTP服务的端口 sudo netstat -antup | grep ftp

出现类似回显信息,表示FTP服务已启动,监听的端口号为21。

此时,vsftpd默认已开启本地用户模式,还需要继续进行配置才能正常使用FTP服务。

卸载vsftpd

# 卸载ftp服务,--purge:选项表示彻底删除改软件和相关文件
sudo apt-get remove --purge vsftpd   

2.3.综合案例 - 本地用户模式  

2.4.1.创建FTP用户

创建FTP用户及主目录。

# 创建FTP用户主目录
sudo mkdir /home/uftp
# 添加FTP用户uftp,指定用户主目录和所用shell
sudo useradd -d /home/uftp -s /bin/bash uftp
# 设置uftp的密码
sudo passwd uftp
# 输入密码:
# 再次输入密码:

-s /bin/bash表示允许用户与操作系统进行交互。

但是也有特殊需求,如希望设置的用户只能访问FTP,而不能直接登录系统。(可选)

# 将uftp用户的Shell修改为/sbin/nologin,它不允许用户登录系统
sudo usermod -s /bin/nologin uftp

更改/home/uftp/目录的拥有者为uftp

sudo chown -R uftp:uftp /home/uftp/

2.4.2.配置vsftpd

可以通过编辑/etc/vsftpd.conf文件来配置vsftpd服务器。大多数设置在配置文件中都有详细记录。有关所有可用选项,请访问官方vsftpd 页面。

编辑vsftpd.conf文件,命令如下:

# 在编辑之前先完成vsftpd.conf的备份
sudo cp vim /etc/vsftpd.conf /etc/vsftpd.conf.bak
# 编辑vsftpd.conf文件
sudo vim /etc/vsftpd.conf

禁止匿名登录FTP服务器,仅允许本地用户登录:

#禁止匿名登录FTP服务器。
anonymous_enable=NO
#允许本地用户登录FTP服务器。
local_enable=YES

在行首添加#注释掉以下参数,关闭监听IPv6 sockets,开启IPv4ipV4ipV6不能同时被监听):

# 启用IPv4
listen=YES
# 关闭监听IPv6 sockets
#listen_ipv6=YES

取消注释write_enable设置以允许对文件系统进行更改,例如上传和删除文件:

# 取消注释write_enable
write_enable=YES

开启FTP的被动模式,设置数据传输的端口范围:(添加在/etc/vsftpd.conf文件的最后)

# 开启被动模式。
pasv_enable=YES
#设置被动模式下,建立数据传输可使用的端口范围的最小值。
#建议您把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性。
pasv_min_port=50000
#设置被动模式下,建立数据传输可使用的端口范围的最大值。
pasv_max_port=50010

配置chroot,为防止FTP用户访问其主目录之外的任何文件:(添加在/etc/vsftpd.conf文件的最后)

# 全部用户被限制在主目录
chroot_local_user=YES
# 启用例外用户名单
chroot_list_enable=YES
# (default follows)
# 指定例外用户列表文件,列表中用户不被锁定在主目录
chroot_list_file=/etc/chroot_list

重要:没有例外用户时,也必须创建chroot_list文件,内容可为空。

创建chroot_list文件,按i,进入编辑模式。输入例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。

sudo vim /etc/chroot_list

如果有多个用户,则一行一个。

默认情况下,为了防止安全漏洞,启用chroot后,如果用户锁定的目录可写,则vsftpd将拒绝上传文件,在vsftpd配置文件中添加以下指令。

allow_writeable_chroot=YES

如果不配置,则FTP客户端连接时将提示:500 OOPS: vsftpd: refusing to run with writable root inside chroot()

重启FTP服务使配置生效

# 重启FTP服务
sudo systemctl restart vsftpd
# 查询FTP服务状态
sudo systemctl status vsftpd

2.4.3.配置防火墙

如果正在运行UFW防火墙,则需要允许FTP通信。

要打开端口21(FTP命令端口),端口20(FTP数据端口)和50000-50010(被动端口范围),请运行以下命令:

sudo ufw allow 20:21/tcp
sudo ufw allow 50000:50010/tcp

最后,可以使用不同的FTP客户端连接vsftpd服务器进行连接测试,例如:flashfxpfileZilla等等。

 

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



http://www.chinasem.cn/article/1114041

相关文章

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

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

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

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

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

Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

《Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题》:本文主要介绍Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录一、前言二、系统架构检测三、卸载旧版 Go四、下载并安装正确版本五、配置环境变量六、验证安装七、常见

使用Nginx配置文件服务器方式

《使用Nginx配置文件服务器方式》:本文主要介绍使用Nginx配置文件服务器方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 为什么选择 Nginx 作为文件服务器?2. 环境准备3. 配置 Nginx 文件服务器4. 将文件放入服务器目录5. 启动 N

Spring Cloud GateWay搭建全过程

《SpringCloudGateWay搭建全过程》:本文主要介绍SpringCloudGateWay搭建全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Spring Cloud GateWay搭建1.搭建注册中心1.1添加依赖1.2 配置文件及启动类1.3 测