CentOS7 安装配置FTP服务

CentOS7 安装配置FTP服务

  • [CentOS7 安装配置FTP服务](#CentOS7 安装配置FTP服务)
    • [1. FTP简介](#1. FTP简介)
    • [2. 先行准备](#2. 先行准备)
      • [2.1 关闭防火墙](#2.1 关闭防火墙)
      • [2.2 关闭 SELinux](#2.2 关闭 SELinux)
    • 3.安装FTP软件包
    • [4. 创建 FTP 用户及目录](#4. 创建 FTP 用户及目录)
      • [4.1 创建 FTP 目录并设置权限](#4.1 创建 FTP 目录并设置权限)
      • [4.2 防止 FTP 用户登录 Linux 终端](#4.2 防止 FTP 用户登录 Linux 终端)
      • [4.3 创建 FTP 用户组及用户](#4.3 创建 FTP 用户组及用户)
      • [4.4 创建 FTP 可写目录](#4.4 创建 FTP 可写目录)
    • [5. 配置ftp服务器](#5. 配置ftp服务器)
    • [6. 重启并配置防火墙](#6. 重启并配置防火墙)
    • [7. 访问FTP](#7. 访问FTP)
      • [1. FileZilla](#1. FileZilla)
      • [2. WinSCP (Windows专用)](#2. WinSCP (Windows专用))
      • [3.在 Windows 地址栏访问 FTP 服务器](#3.在 Windows 地址栏访问 FTP 服务器)

CentOS7 安装配置FTP服务

1. FTP简介

FTP(File Transfer Protocol,文件传输协议)是一种用于在计算机之间传输文件的网络协议,基于 客户端-服务器 模式,运行在 TCP/IP 网络上。它主要用于在本地计算机和远程服务器之间上传和下载文件。


2. 先行准备

在安装和配置 FTP 服务器之前,建议先关闭防火墙和 SELinux,以避免端口受限或权限问题导致 FTP 服务无法正常运行。待搭建完成并测试无误后,再根据实际需求调整防火墙规则和 SELinux 设置。

2.1 关闭防火墙

执行以下命令检查防火墙状态,并关闭防火墙:

shell 复制代码
systemctl status firewalld    # 查看防火墙状态  
systemctl stop firewalld      # 停止防火墙服务  
systemctl disable firewalld   # 禁止防火墙开机自启  

2.2 关闭 SELinux

编辑 SELinux 配置文件,将其设置为 disabled,然后立即生效:

shell 复制代码
vim /etc/selinux/config  
# 找到 SELINUX=enforcing 并修改为 SELINUX=disabled  
SELINUX=disabled  

# 使修改即时生效  
setenforce 0  

3.安装FTP软件包

shell 复制代码
# 安装ftp服务器
yum install -y vsftpd
# 安装ftp客户端
yum install -y ftp lftp

启动ftp服务

shell 复制代码
systemctl start vsftpd         # 启动服务

vsftpd服务常用操作命令

shell 复制代码
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 目录并设置权限

shell 复制代码
# 创建 FTP 根目录  
mkdir -p /mnt/sdb/ftp/ftpuser  

# 赋予目录合适的权限(所有者可读写执行,其他用户可读执行)  
chmod -R 755 /mnt/sdb/ftp/ftpuser  

4.2 防止 FTP 用户登录 Linux 终端

为了限制 FTP 用户仅用于文件传输,不允许其 SSH 登录,可以将 /usr/bin/nologin 添加到系统 shell 允许列表:

shell 复制代码
echo /usr/bin/nologin >> /etc/shells  

4.3 创建 FTP 用户组及用户

shell 复制代码
# 创建 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 登录(如有需要)

shell 复制代码
usermod -s /bin/bash ftpuser  

4.4 创建 FTP 可写目录

由于 /mnt/sdb/ftp/ftpuser 目录默认归 root 所有,FTP 用户无法写入,因此需在其中创建一个 upload 目录供用户上传文件:

shell 复制代码
# 创建上传目录  
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服务器

shell 复制代码
# 备份配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
# 编辑配置文件
vim /etc/vsftpd/vsftpd.conf

替换为以下配置,注意目录FTP访问目录设置为自己的

shell 复制代码
############## 用户访问权限设置 ##############
# 是否开启匿名用户,默认 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

修改用户切换目录的权限

shell 复制代码
# 创建chroot_list
vim /etc/vsftpd/chroot_list
# 第二步:添加ftpuser用户
ftpuser

6. 重启并配置防火墙

shell 复制代码
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. 点击 "快速连接" 连接。

2. WinSCP (Windows专用)

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

安装和使用:Windows : 下载 WinSCP

使用步骤:

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

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

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

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

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

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

例如:

ftp://ftpuser:pwd%402014@192.168.0.118

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

相关推荐
哆啦A梦z5 分钟前
自动化飞书腾讯电子签
运维·自动化·飞书
彩虹糖_haha10 分钟前
Linux高并发服务器开发 第十七天(管道缓存区查询大小 管道的优劣 命名管道mkfifo 建立释放映射区mmap/munmap 匿名映射 进程间的通信)
linux·运维·服务器
安科瑞王可2 小时前
安科瑞光伏发电防逆流解决方案--守护电网安全,提升能源效率
运维·物联网·安全·自动化·能源
old_power2 小时前
linux 查看正在运行的进程 & 停止进程
linux·运维·服务器
qq_433618443 小时前
linux 下的termios读写
linux·运维·服务器
Watink Cpper3 小时前
[Linux] 信号(singal)详解(二):信号管理的三张表、如何使用coredump文件、OS的用户态和内核态、如何理解系统调用?
linux·运维·服务器·信号
手捧向日葵的话语3 小时前
Linux下的进程切换与调度
linux·运维·服务器
亿道电子Emdoor4 小时前
【ARM】解决ArmDS Fast Models 中部分内核无法上电的问题
arm开发·stm32·单片机
钡铼技术物联网关4 小时前
从 X86 到 ARM :工控机迁移中的核心问题剖析
大数据·linux·arm开发·人工智能·自动化