CentOS7 安装配置FTP服务

news2025/2/21 8:46:21

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         # 启动服务

image-20250212092011602

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

image-20250211170020209

修改用户切换目录的权限

# 创建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

使用步骤:

  1. 在顶部的 “Host” 输入框中输入 FTP 服务器地址(例如:192.168.0.118
  2. 在 “用户名” 和 “密码” 中输入 FTP 用户名和密码,端口21(不输入默认21)
  3. 点击 “快速连接” 连接。

image-20250212095326547

2. WinSCP (Windows专用)

WinSCP 是另一款非常强大的Windows平台FTP客户端,它支持 FTP、SFTP、SCP 等协议。

安装和使用:Windows: 下载 WinSCP

使用步骤:

  1. 启动 WinSCP,文件协议下拉选择ftp
  2. 在 “主机名” 处输入FTP 服务器地址(例如:192.168.0.118
  3. 输入 “用户名” 和 “密码”
  4. 点击 “登录” 连接

image-20250212095614667

image-20250212095703157

3.在 Windows 地址栏访问 FTP 服务器

如果没有设置身份验证,可以在 文件资源管理器运行(Win + R) 中输入:

ftp://<FTP服务器IP地址>

如果 FTP 服务器需要身份验证,可使用以下格式:

ftp://用户名:密码@FTP服务器IP地址

例如:

ftp://ftpuser:pwd%402014@192.168.0.118

注意:如果密码中包含特殊字符(如 @),可能需要使用 URL 编码(如 @ 替换为 %40)。

image-20250212100335713

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

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

相关文章

【设计模式】03-理解常见设计模式-行为型模式(专栏完结)

前言 前面我们介绍完创建型模式和创建型模式&#xff0c;这篇介绍最后的行为型模式&#xff0c;也是【设计模式】专栏的最后一篇。 一、概述 行为型模式主要用于处理对象之间的交互和职责分配&#xff0c;以实现更灵活的行为和更好的协作。 二、常见的行为型模式 1、观察者模…

编程题-最大子数组和(中等-重点【贪心、动态规划、分治思想的应用】)

题目&#xff1a; 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组是数组中的一个连续部分。 解法一&#xff08;枚举法-时间复杂度超限&#xff09;&#xff1a; …

本地通过隧道连接服务器的mysql

前言 服务器上部署了 mysql&#xff0c;本地希望能访问该 mysql&#xff0c;但是又不希望 mysql 直接暴露在公网上 那么可以通过隧道连接 ssh 端口的方式进行连接 从外网看&#xff0c;服务器只开放了一个 ssh 端口&#xff0c;并没有开放 3306 监听端口 设置本地免密登录 …

2. grafana插件安装并接入zabbix

一、在线安装 如果不指定安装位置&#xff0c;则默认安装位置为/var/lib/grafana/plugins 插件安装完成之后需要重启grafana 命令在上一篇讲到过 //查看相关帮助 [rootlocalhost ~]# grafana-cli plugins --help //从列举中的插件过滤zabbix插件 [rootlocalhost ~]# grafana…

Linux第107步_Linux之PCF8563实验

使用PCF8563代替内核的RTC&#xff0c;可以降低功耗&#xff0c;提高时间的精度。同时有助于进一步熟悉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">车牌号码&#xff1a;</span><el-input clearable placeho…

[免费]SpringBoot公益众筹爱心捐赠系统【论文+源码+SQL脚本】

大家好&#xff0c;我是老师&#xff0c;看到一个不错的SpringBoot公益众筹爱心捐赠系统&#xff0c;分享下哈。 项目介绍 公益捐助平台的发展背景可以追溯到几十年前&#xff0c;当时人们已经开始通过各种渠道进行公益捐助。随着互联网的普及&#xff0c;本文旨在探讨公益事业…

ML.Net二元分类

ML.Net二元分类 文章目录 ML.Net二元分类前言项目的创建机器学习模型的创建添加模型选择方案训练环境的选择训练数据的添加训练数据的选择训练数据的格式要预测列的选择模型评估模型的使用总结前言 ‌ML.NET‌是由Microsoft为.NET开发者平台创建的免费、开源、跨平台的机器学习…

visutal studio 2022使用qcustomplot基础教程

编译 下载&#xff0c;2.1.1版支持到Qt6.4 。 拷贝qcustomplot.h和qcustomplot.cpp到项目源目录&#xff08;Qt project&#xff09;。 在msvc中将它俩加入项目中。 使用Qt6.8&#xff0c;需要修改两处代码&#xff1a; L6779 # if QT_VERSION > QT_VERSION_CHECK(5, 2, …

本地搭建自己的专属客服之OneApi关联Ollama部署的大模型并创建令牌《下》

这里写目录标题 OneApi1、渠道设置2、令牌创建 配置文件修改修改配置文件docker-compose.yml修改config.json到此结束 上文讲了如何本地docker部署fastGtp&#xff0c;相信大家也都已经部署成功了&#xff01;&#xff01;&#xff01; 今天就说说怎么让他们连接在一起 创建你的…

【C】初阶数据结构4 -- 双向循环链表

之前学习的单链表相比于顺序表来说&#xff0c;就是其头插和头删的时间复杂度很低&#xff0c;仅为O(1) 且无需扩容&#xff1b;但是对于尾插和尾删来说&#xff0c;由于其需要从首节点开始遍历找到尾节点&#xff0c;所以其复杂度为O(n)。那么有没有一种结构是能使得头插和头删…

小爱音箱控制手机和电视听歌的尝试

最近买了小爱音箱pro&#xff0c;老婆让我扔了&#xff0c;吃灰多年的旧音箱。当然舍不得&#xff0c;比小爱还贵&#xff0c;刚好还有一台红米手机&#xff0c;能插音箱&#xff0c;为了让音箱更加灵活&#xff0c;买了个2元的蓝牙接收模块Type-c供电3.5接口。这就是本次尝试起…

Kotlin Lambda

Kotlin Lambda 在探索Kotlin Lambda之前&#xff0c;我们先回顾下Java中的Lambda表达式&#xff0c;Java 的 Lambda 表达式是 Java 8 引入的一项强大的功能&#xff0c;它使得函数式编程风格的代码更加简洁和易于理解。Lambda 表达式允许你以一种更简洁的方式表示实现接口&…

Java 设计模式之备忘录模式

文章目录 Java 设计模式之备忘录模式概述UML代码实现 Java 设计模式之备忘录模式 概述 备忘录(Memento)&#xff1a;在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态。方便对该对象恢复到原先保存的状态。 UML Originnato…

vue3搭建实战项目笔记二

vue3搭建实战项目笔记二 2.1.git管理项目2.2.隐藏tabBar栏2.2.1 方案一&#xff1a;在路由元信息中设置一个参数是否显示tabBar2.2.2 方案二&#xff1a;通过全局设置相对定位样式 2.3.项目里封装axios2.3.1 发送网络请求的两种做法2.3.2 封装axios并发送网络请求2.3.2.1 对axi…

【原创】解决vue-element-plus-admin无法实现下拉框动态控制表单功能,动态显隐输入框

前言 目前使用vue-element-plus-admin想要做一个系统定时任务功能&#xff0c;可以选择不同的定时任务类型&#xff0c;比如使用cron表达式、周期执行、指定时间执行等。每种类型对应不同的输入框&#xff0c;需要动态显隐输入框才行&#xff0c;但是这个vue-element-plus-adm…

大疆无人机需要的kml文件如何制作kml导出(大疆KML文件)

大疆无人机需要的轨迹kml文件&#xff0c;是一种专门的格式&#xff0c;这个kml里面只有轨迹点&#xff0c;其它的属性信息都不需要。 BigemapPro提供了专门的大疆格式输出&#xff0c; 软件这里下载 www.bigemap.com 安装后&#xff0c;kml导入如下图&#xff1a; 然后选择…

免费deepseek的API获取教程及将API接入word或WPS中

免费deepseek的API获取教程: 1 https://cloud.siliconflow.cn/中注册时填写邀请码&#xff1a;GAejkK6X即可获取2000 万 Tokens; 2 按照图中步骤进行操作 将API接入word或WPS中 1 打开一个word&#xff0c;文件-选项-自定义功能区-勾选开发工具-左侧的信任中心-信任中心设置…

(三)Axure制作转动的唱片

效果图 属性&#xff1a; 图标库&#xff1a;iconfont-阿里巴巴矢量图标库 方形图片转为圆角图片&#xff0c;裁剪&#xff0c;然后加圆角&#xff0c; 唱片和底图是两个图片&#xff0c;点击播放&#xff0c;唱片在旋转。 主要是播放按钮和停止按钮&#xff0c;两个动态面板…

ASP.NET Core SixLabors.ImageSharp 位图图像创建和下载

从 MVC 控制器内部创建位图图像并将其发送到浏览器&#xff1b;用 C# 编写并与 Linux 和 Windows 服务器兼容。 使用从 ASP.NET MVC 中的控制器下载任何文件类型File。 此示例创建一个位图 (jpeg) 并将其发送到浏览器。它需要 NuGet 包SixLabors.ImageSharp v1.0.4。 另请参…