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 # 启动服务
![](https://i-blog.csdnimg.cn/img_convert/16cbb34420debbb2a8245ff1d954af44.png)
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
![](https://i-blog.csdnimg.cn/img_convert/c6686bb791702bb25f5704243138e63c.png)
修改用户切换目录的权限
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
使用步骤:
- 在顶部的 "Host" 输入框中输入 FTP 服务器地址(例如:
192.168.0.118
) - 在 "用户名" 和 "密码" 中输入 FTP 用户名和密码,端口21(不输入默认21)
- 点击 "快速连接" 连接。
![](https://i-blog.csdnimg.cn/img_convert/6103e996355820094c44a4729e4c240e.png)
2. WinSCP (Windows专用)
WinSCP 是另一款非常强大的Windows平台FTP客户端,它支持 FTP、SFTP、SCP 等协议。
安装和使用:Windows : 下载 WinSCP
使用步骤:
- 启动 WinSCP,文件协议下拉选择ftp
- 在 "主机名" 处输入FTP 服务器地址(例如:
192.168.0.118
) - 输入 "用户名" 和 "密码"
- 点击 "登录" 连接
![](https://i-blog.csdnimg.cn/img_convert/c04bdeca3f8d4ac71be8326302f98641.png)
![](https://i-blog.csdnimg.cn/img_convert/88aeb7079843f60700267f6a87476641.png)
3.在 Windows 地址栏访问 FTP 服务器
如果没有设置身份验证,可以在 文件资源管理器 或 运行(Win + R) 中输入:
ftp://<FTP服务器IP地址>
如果 FTP 服务器需要身份验证,可使用以下格式:
ftp://用户名:密码@FTP服务器IP地址
例如:
ftp://ftpuser:pwd%402014@192.168.0.118
注意 :如果密码中包含特殊字符(如
@
),可能需要使用 URL 编码(如@
替换为%40
)。
![](https://i-blog.csdnimg.cn/img_convert/2dae8ced85c5fcf52d39ef99ccf85b17.png)