概述
本章教程讲述Centos9搭建FTP文件上传服务,并用Python通过ftplib库实现图片的上传
步骤
1、安装 vsftpd
服务器上执行 sudo dnf install vsftpd -y,如图

2. 启动并启用服务
分别执行如下命令
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
如图

3. 配置 vsftpd
找到 /etc/vsftpd/vsftpd.conf 文件,然后在文件末尾添加如下内容
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
# 允许用户登录后进入根目录(重要)
chroot_local_user=YES
allow_writeable_chroot=YES
# 设置上传目录(可选)
# local_root=/uploads
# 被动模式(用于外网连接)
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
注意local_root是你期望上传的目录,如图

4. 创建专用 FTP 用户
添加 /sbin/nologin 到 /etc/shells
echo "/sbin/nologin" | sudo tee -a /etc/shells
创建用户,家目录指向 /uploads,禁止 shell 登录
sudo useradd -d /uploads -s /sbin/nologin ftp_user
设置密码
sudo passwd ftp_user
# 输入密码,例如:your_ftp_password
如图

5.设置 /uploads 目录权限
我这里是上传到服务器根目录下的uploads目录
# ftp_user是上一步创建的用户
sudo chown -R ftp_user:ftp_user /uploads
sudo chmod -R 755 /uploads
如图

6.如果以下端口没开放还需额外开放
# 主动模式端口
sudo firewall-cmd --permanent --add-port=21/tcp
# 被动模式端口范围
sudo firewall-cmd --permanent --add-port=40000-50000/tcp
# 重新加载
sudo firewall-cmd --reload
7.重启 vsftpd
执行命令如下
sudo systemctl restart vsftpd
8.python上传图片代码
from ftplib import FTP
import os
# FTP 服务器配置
host = '' #你的服务器 IP
port = 21
username = 'ftp_user'
password = '' #设置的密码
# 本地图片路径
local_file = r'C:\Users\AW\Pictures\LW\图片 1.webp' # 修改为你的本地图片路径
remote_filename = os.path.basename(local_file) # 提取文件名
# 连接 FTP
ftp = FTP()
ftp.connect(host, port)
ftp.login(username, password)
print("✅ FTP 登录成功")
# 切换到目标目录(可选,如果是用户根目录可省略)
# ftp.cwd('/uploads')
# 上传文件
with open(local_file, 'rb') as f:
ftp.storbinary(f'STOR {remote_filename}', f)
print(f"✅ 图片已上传到服务器: /uploads/{remote_filename}")

结语
如上为幽络源的Centos9搭建FTP文件上传服务-Python通过ftplib上传图片教程,我们的QQ群307531422
THE END
