CentOS7 安装配置FTP服务
CentOS7 安装配置FTP服务
- CentOS7 安装配置FTP服务
- 1. FTP简介
- 2. 先行准备
- 2.1 关闭防火墙
- 2.2 关闭 SELinux
- 3.安装FTP软件包
- 4. 创建 FTP 用户及目录
- 4.1 创建 FTP 目录并设置权限
- 4.2 防止 FTP 用户登录 Linux 终端
- 4.3 创建 FTP 用户组及用户
- 4.4 创建 FTP 可写目录
- 5. 配置ftp服务器
- 6. 重启并配置防火墙
- 7. 访问FTP
- 1. FileZilla
- 2. WinSCP (Windows专用)
- 3.在 Windows 地址栏访问 FTP 服务器
CentOS7 安装配置FTP服务
1. FTP简介
FTP(File Transfer Protocol,文件传输协议)是一种用于在计算机之间传输文件的网络协议,基于 客户端-服务器 模式,运行在 TCP/IP 网络上。它主要用于在本地计算机和远程服务器之间上传和下载文件。
2. 先行准备
在安装和配置 FTP 服务器之前,建议先关闭防火墙和 SELinux,以避免端口受限或权限问题导致 FTP 服务无法正常运行。待搭建完成并测试无误后,再根据实际需求调整防火墙规则和 SELinux 设置。
2.1 关闭防火墙
执行以下命令检查防火墙状态,并关闭防火墙:
systemctl status firewalld # 查看防火墙状态
systemctl stop firewalld # 停止防火墙服务
systemctl disable firewalld # 禁止防火墙开机自启
2.2 关闭 SELinux
编辑 SELinux 配置文件,将其设置为 disabled,然后立即生效:
vim /etc/selinux/config
# 找到 SELINUX=enforcing 并修改为 SELINUX=disabled
SELINUX=disabled # 使修改即时生效
setenforce 0
3.安装FTP软件包
# 安装ftp服务器
yum install -y vsftpd
# 安装ftp客户端
yum install -y ftp lftp
启动ftp服务
systemctl start vsftpd # 启动服务

vsftpd服务常用操作命令
systemctl stop vsftpd # 停止服务
systemctl restart vsftpd # 重启服务
systemctl status vsftpd # 查看服务状态
systemctl enable vsftpd # 设置开机自启动vsftpd服务
systemctl disable vsftpd # 禁用开机自启动vsftpd服务
4. 创建 FTP 用户及目录
在 FTP 服务器上,需要创建一个专用用户 ftpuser 以及对应的 FTP 目录 /mnt/sdb/ftp/ftpuser,并进行必要的权限配置。
4.1 创建 FTP 目录并设置权限
# 创建 FTP 根目录
mkdir -p /mnt/sdb/ftp/ftpuser # 赋予目录合适的权限(所有者可读写执行,其他用户可读执行)
chmod -R 755 /mnt/sdb/ftp/ftpuser
4.2 防止 FTP 用户登录 Linux 终端
为了限制 FTP 用户仅用于文件传输,不允许其 SSH 登录,可以将 /usr/bin/nologin 添加到系统 shell 允许列表:
echo /usr/bin/nologin >> /etc/shells
4.3 创建 FTP 用户组及用户
# 创建 FTP 用户组
groupadd ftp # 创建 FTP 用户 ftpuser,并设置:
# -g ftp :加入 ftp 组
# -d /mnt/sdb/ftp/ftpuser :指定 FTP 目录为主目录
# -M :不自动创建主目录(因为已手动创建)
# -s /usr/bin/nologin :禁止 SSH 登录,仅允许 FTP 访问
useradd -g ftp -d /mnt/sdb/ftp/ftpuser -M -s /usr/bin/nologin ftpuser # 设置 FTP 用户密码(用于登录 FTP)
echo "pwd@2014" | passwd --stdin ftpuser
恢复 FTP 用户 SSH 登录(如有需要)
usermod -s /bin/bash ftpuser
4.4 创建 FTP 可写目录
由于 /mnt/sdb/ftp/ftpuser 目录默认归 root 所有,FTP 用户无法写入,因此需在其中创建一个 upload 目录供用户上传文件:
# 创建上传目录
mkdir -p /mnt/sdb/ftp/ftpuser/upload # 修改目录所有者为 ftpuser 用户和 ftp 组
chown ftpuser:ftp /mnt/sdb/ftp/ftpuser/upload # 赋予权限(所有者可读写执行,组和其他用户只能读执行)
chmod 755 /mnt/sdb/ftp/ftpuser/upload
5. 配置ftp服务器
# 备份配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
# 编辑配置文件
vim /etc/vsftpd/vsftpd.conf
替换为以下配置,注意目录FTP访问目录设置为自己的
############## 用户访问权限设置 ##############
# 是否开启匿名用户,默认 NO(匿名不安全)
anonymous_enable=NO# 允许本机账号登录 FTP
local_enable=YES# 允许本地用户进行写操作
write_enable=YES# 本地用户创建文件或目录的权限掩码
local_umask=022# 限制用户只能在自己的目录活动
chroot_local_user=YES
chroot_list_enable=NO
chroot_list_file=/etc/vsftpd/chroot_list# 允许受限制的用户拥有写权限,避免 "500 OOPS" 错误
allow_writeable_chroot=YES# 使用允许登录的用户名单
userlist_enable=YES
userlist_deny=NO############## 日志设置 ##############
# 进入目录时是否提示信息
dirmessage_enable=YES# 启用 FTP 传输日志
xferlog_enable=YES
xferlog_std_format=YES# 日志存储路径
xferlog_file=/var/log/xferlog############## 连接模式设置 ##############
# 允许主动模式连接
port_enable=YES# 启动被动模式
pasv_enable=YES# 被动模式端口范围(建议自定义)
pasv_min_port=64000
pasv_max_port=65000# 开放主动模式的 20 端口连接
connect_from_port_20=YES############## 服务器监听设置 ##############
# 监听 IPv4 端口(独立运行)
listen=NO# 监听 IPv6 端口
listen_ipv6=YES############## ASCII 传输模式 ##############
# 是否允许 ASCII 模式上传/下载(一般禁用,防止 DoS 攻击)
ascii_upload_enable=NO
ascii_download_enable=NO############## 认证及安全设置 ##############
# 认证使用 PAM 模块
pam_service_name=vsftpd# 启用 TCP Wrappers 进行访问控制
tcp_wrappers=YES############## 其他设置 ##############
# FTP 访问的根目录
local_root=/mnt/sdb/ftp/ftpuser
允许新建用户登录FTP
vim /etc/vsftpd/user_list

修改用户切换目录的权限
# 创建chroot_list
vim /etc/vsftpd/chroot_list
# 第二步:添加ftpuser用户
ftpuser
6. 重启并配置防火墙
systemctl enable firewalld # 防火墙开机自启动
systemctl restart firewalld # 重启防火墙服务firewall-cmd --permanent --zone=public --add-service=ftp # 防火墙开通ftp服务
firewall-cmd --permanent --zone=public --add-port=21/tcp # 开通ftp服务21命令控制端口# 主动模式下数据传输端口等于命令控制端口-1 ======> 21 - 1 = 20
# 开通ftp服务主动模式的20数据传输端口
firewall-cmd --permanent --zone=public --add-port=20/tcp
# 开通ftp服务被动模式的数据端口范围
firewall-cmd --permanent --zone=public --add-port=64000-65000/tcp
# 刷新防火墙,重新载入
firewall-cmd --reload # 设置关闭SELinux对ftp的限制
setsebool -P ftpd_full_access on
sed -i s#enforcing#disabled#g /etc/sysconfig/selinux
setenforce 0 && getenforce
getenforce# 重启FTP服务使得设置生效
systemctl restart vsftpd
7. 访问FTP
1. FileZilla
FileZilla 是一个跨平台的、非常流行的FTP客户端,支持 FTP、SFTP 和 FTPS 等协议
安装和使用:Windows: 下载 FileZilla
使用步骤:
- 在顶部的 “Host” 输入框中输入 FTP 服务器地址(例如:
192.168.0.118) - 在 “用户名” 和 “密码” 中输入 FTP 用户名和密码,端口21(不输入默认21)
- 点击 “快速连接” 连接。

2. WinSCP (Windows专用)
WinSCP 是另一款非常强大的Windows平台FTP客户端,它支持 FTP、SFTP、SCP 等协议。
安装和使用:Windows: 下载 WinSCP
使用步骤:
- 启动 WinSCP,文件协议下拉选择ftp
- 在 “主机名” 处输入FTP 服务器地址(例如:
192.168.0.118) - 输入 “用户名” 和 “密码”
- 点击 “登录” 连接


3.在 Windows 地址栏访问 FTP 服务器
如果没有设置身份验证,可以在 文件资源管理器 或 运行(Win + R) 中输入:
ftp://<FTP服务器IP地址>
如果 FTP 服务器需要身份验证,可使用以下格式:
ftp://用户名:密码@FTP服务器IP地址
例如:
ftp://ftpuser:pwd%402014@192.168.0.118
注意:如果密码中包含特殊字符(如
@),可能需要使用 URL 编码(如@替换为%40)。

相关文章:
CentOS7 安装配置FTP服务
CentOS7 安装配置FTP服务 CentOS7 安装配置FTP服务1. FTP简介2. 先行准备2.1 关闭防火墙2.2 关闭 SELinux 3.安装FTP软件包4. 创建 FTP 用户及目录4.1 创建 FTP 目录并设置权限4.2 防止 FTP 用户登录 Linux 终端4.3 创建 FTP 用户组及用户4.4 创建 FTP 可写目录 5. 配置ftp服务…...
几款dxf文件转Gcode的开源软件
以下是一些常用的开源软件,可以将DXF文件转换为Gcode: 1. **Inkscape with Gcode Tools** - **Inkscape** 是一款开源的矢量图形编辑器,支持DXF文件导入。通过安装 **Gcode Tools** 插件,可以将矢量图形转换为Gcode。 - 官网: [Inkscape](https://inkscape.org/) …...
【设计模式】03-理解常见设计模式-行为型模式(专栏完结)
前言 前面我们介绍完创建型模式和创建型模式,这篇介绍最后的行为型模式,也是【设计模式】专栏的最后一篇。 一、概述 行为型模式主要用于处理对象之间的交互和职责分配,以实现更灵活的行为和更好的协作。 二、常见的行为型模式 1、观察者模…...
【计算机网络】传输层数据段格式
在计算机网络中,数据段(Segment) 是传输层协议(如 TCP 或 UDP)使用的数据单元。TCP 和 UDP 的数据段格式有所不同,以下是它们的详细说明: 1. TCP 数据段格式 TCP(传输控制协议&…...
编程题-最大子数组和(中等-重点【贪心、动态规划、分治思想的应用】)
题目: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 解法一(枚举法-时间复杂度超限): …...
网络将内网服务转换到公网上
当然,以下是根据您提供的描述,对内网端口在公网上转换过程的详细步骤,并附上具体例子进行说明: 内网端口在公网上的转换过程详细步骤 1. 内网服务配置 步骤说明: 在内网中的某台计算机(我们称之为“内网…...
本地通过隧道连接服务器的mysql
前言 服务器上部署了 mysql,本地希望能访问该 mysql,但是又不希望 mysql 直接暴露在公网上 那么可以通过隧道连接 ssh 端口的方式进行连接 从外网看,服务器只开放了一个 ssh 端口,并没有开放 3306 监听端口 设置本地免密登录 …...
跳跃游戏 II - 贪心算法解法
问题描述: 给定一个长度为 n 的 0 索引整数数组 nums,我们从数组的第一个元素 nums[0] 开始。每个元素 nums[i] 表示从索引 i 可以跳跃的最大长度,换句话说,从位置 i,你可以跳到位置 i j,其中 0 < j &…...
2. grafana插件安装并接入zabbix
一、在线安装 如果不指定安装位置,则默认安装位置为/var/lib/grafana/plugins 插件安装完成之后需要重启grafana 命令在上一篇讲到过 //查看相关帮助 [rootlocalhost ~]# grafana-cli plugins --help //从列举中的插件过滤zabbix插件 [rootlocalhost ~]# grafana…...
Linux第107步_Linux之PCF8563实验
使用PCF8563代替内核的RTC,可以降低功耗,提高时间的精度。同时有助于进一步熟悉I2C驱动的编写。 1、了解rtc_time64_to_tm()和rtc_tm_to_time64() 打开“drivers/rtc/lib.c” /* * rtc_time64_to_tm - Converts time64_t to rtc_time. * Convert seco…...
功能说明并准备静态结构
功能说明并准备静态结构 <template><div class"card-container"><!-- 搜索区域 --><div class"search-container"><span class"search-label">车牌号码:</span><el-input clearable placeho…...
pip 与 conda 的故事
pip 换源 pip 官方源 -i https://pypi.python.org/simple pip 清华源 -i https://pypi.tuna.tsinghua.edu.cn/simple pip 阿里源 -i https://mirrors.aliyun.com/pypi/simple PyTorch 安装 pip3 install torch torchvision torchaudio pip3 install torch torchvision torchaud…...
【05】RUST错误处理
文章目录 错误处理panic代码运行 ResutResult中的一些方法介绍传播错误?运算符 错误处理 建议是尽量用Result由调用者自行决定是否恢复,不恢复也可直接在Err中调用panic。代码分支不可能走的分支可panic。 需要panic的情况: 有害状态&#x…...
[免费]SpringBoot公益众筹爱心捐赠系统【论文+源码+SQL脚本】
大家好,我是老师,看到一个不错的SpringBoot公益众筹爱心捐赠系统,分享下哈。 项目介绍 公益捐助平台的发展背景可以追溯到几十年前,当时人们已经开始通过各种渠道进行公益捐助。随着互联网的普及,本文旨在探讨公益事业…...
算法【动态规划中使用观察优化枚举】
动态规划的问题中,已经写出了记忆化搜索的版本,还要写出严格位置依赖的版本,意义在于不仅可以进行空间压缩优化;关键还在于,很多时候通过进一步观察,可以优化枚举,让时间复杂度更好。优化枚举的…...
ML.Net二元分类
ML.Net二元分类 文章目录 ML.Net二元分类前言项目的创建机器学习模型的创建添加模型选择方案训练环境的选择训练数据的添加训练数据的选择训练数据的格式要预测列的选择模型评估模型的使用总结前言 ML.NET是由Microsoft为.NET开发者平台创建的免费、开源、跨平台的机器学习…...
visutal studio 2022使用qcustomplot基础教程
编译 下载,2.1.1版支持到Qt6.4 。 拷贝qcustomplot.h和qcustomplot.cpp到项目源目录(Qt project)。 在msvc中将它俩加入项目中。 使用Qt6.8,需要修改两处代码: L6779 # if QT_VERSION > QT_VERSION_CHECK(5, 2, …...
本地搭建自己的专属客服之OneApi关联Ollama部署的大模型并创建令牌《下》
这里写目录标题 OneApi1、渠道设置2、令牌创建 配置文件修改修改配置文件docker-compose.yml修改config.json到此结束 上文讲了如何本地docker部署fastGtp,相信大家也都已经部署成功了!!! 今天就说说怎么让他们连接在一起 创建你的…...
c#自动更新-源码
软件维护与升级 修复漏洞和缺陷:软件在使用过程中可能会发现各种漏洞和缺陷,自动更新可以及时推送修复程序,增强软件的稳定性和安全性,避免因漏洞被利用而导致数据泄露、系统崩溃等问题。提升性能:通过自动更新&#x…...
SIP中常见的服务器类型
在SIP(Session Initiation Protocol)网络中,除了B2BUA(Back-to-Back User Agent)、路由代理和媒体服务器外,还有其他类型的服务器。以下是所有类型的服务器及其作用、示例和其他相关信息的表格:…...
【C】初阶数据结构4 -- 双向循环链表
之前学习的单链表相比于顺序表来说,就是其头插和头删的时间复杂度很低,仅为O(1) 且无需扩容;但是对于尾插和尾删来说,由于其需要从首节点开始遍历找到尾节点,所以其复杂度为O(n)。那么有没有一种结构是能使得头插和头删…...
小爱音箱控制手机和电视听歌的尝试
最近买了小爱音箱pro,老婆让我扔了,吃灰多年的旧音箱。当然舍不得,比小爱还贵,刚好还有一台红米手机,能插音箱,为了让音箱更加灵活,买了个2元的蓝牙接收模块Type-c供电3.5接口。这就是本次尝试起…...
Kotlin Lambda
Kotlin Lambda 在探索Kotlin Lambda之前,我们先回顾下Java中的Lambda表达式,Java 的 Lambda 表达式是 Java 8 引入的一项强大的功能,它使得函数式编程风格的代码更加简洁和易于理解。Lambda 表达式允许你以一种更简洁的方式表示实现接口&…...
动态库与静态库:深入解析与应用
在软件开发中,库(Library)是预编译的代码集合,用于在多个程序之间共享功能。根据链接方式的不同,库主要分为两种类型:静态库(Static Library) 和 动态库(Dynamic Library…...
List对象进行排序
目录 一、List对象中某个值进行排序 代码示例 注意事项 二、List.sort 和 Collections.sort 异同 1. 方法所属 2. 使用方式 3. 是否修改原列表 4. 泛型支持 5. 性能 6. 适用场景 7. 示例代码对比 使用 testList.sort 使用 Collections.sort 8. 总结 三、为对象多…...
Java 设计模式之备忘录模式
文章目录 Java 设计模式之备忘录模式概述UML代码实现 Java 设计模式之备忘录模式 概述 备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。方便对该对象恢复到原先保存的状态。 UML Originnato…...
vue3搭建实战项目笔记二
vue3搭建实战项目笔记二 2.1.git管理项目2.2.隐藏tabBar栏2.2.1 方案一:在路由元信息中设置一个参数是否显示tabBar2.2.2 方案二:通过全局设置相对定位样式 2.3.项目里封装axios2.3.1 发送网络请求的两种做法2.3.2 封装axios并发送网络请求2.3.2.1 对axi…...
【原创】解决vue-element-plus-admin无法实现下拉框动态控制表单功能,动态显隐输入框
前言 目前使用vue-element-plus-admin想要做一个系统定时任务功能,可以选择不同的定时任务类型,比如使用cron表达式、周期执行、指定时间执行等。每种类型对应不同的输入框,需要动态显隐输入框才行,但是这个vue-element-plus-adm…...
大疆无人机需要的kml文件如何制作kml导出(大疆KML文件)
大疆无人机需要的轨迹kml文件,是一种专门的格式,这个kml里面只有轨迹点,其它的属性信息都不需要。 BigemapPro提供了专门的大疆格式输出, 软件这里下载 www.bigemap.com 安装后,kml导入如下图: 然后选择…...
前端知识速记--css篇:CSS3中的常见动画及实现方式
前端知识速记–css篇:CSS3中的常见动画及实现方式 常见的CSS3动画 1. 过渡 (Transitions) 过渡是一种非常简单的动画效果,允许你在元素的状态变更时平滑过渡到新状态。 语法格式: transition: property duration timing-function delay;…...
