VSFTP在CentOS上的升级方法
一、升级前准备
- 备份关键数据与配置:优先备份 /etc/vsftpd/vsftpd.conf,以及虚拟用户目录(如 /etc/vsftpd/vuser_conf/)、证书目录(如 /etc/vsftpd/.sslkey/)等。
- 检查可用更新与仓库:先执行 sudo yum update -y 刷新索引;若仓库中版本偏旧,按需安装 EPEL 再尝试升级。
- 选择升级方式:优先使用 yum 在线升级;仅在仓库无所需版本或需特定功能时,再考虑源码编译。
- 维护窗口与回退方案:选择低峰时段操作,保留旧版可执行文件以便快速回退(如 /usr/sbin/vsftpd 备份)。
二、方法一 使用YUM在线升级(推荐)
- 备份配置:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
- 执行升级:
sudo yum update -y vsftpd
- 重启服务:
sudo systemctl restart vsftpd
- 验证版本与运行状态:
rpm -q vsftpd
vsftpd -v
systemctl status vsftpd
- 回退思路:若出现异常,可先恢复配置,再用 yum 降级到原版本(如 yum downgrade vsftpd-<原版本号>)。
三、方法二 源码编译升级(仓库无新版本或需定制功能时)
- 安装编译依赖(按需):
sudo yum groupinstall -y “Development Tools”
sudo yum install -y openssl-devel pam-devel libcap-devel tcp_wrappers-devel
- 获取并解压源码(示例版本,可按需替换):
wget https://vsftpd.beasts.org/releases/vsftpd-3.0.3.tar.gz
tar -zxvf vsftpd-3.0.3.tar.gz && cd vsftpd-3.0.3
- 配置与编译安装:
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
- 停止旧服务并安装新二进制:
sudo systemctl stop vsftpd
sudo make install
- 处理旧二进制与配置:
- 若系统原二进制在 /usr/sbin/vsftpd,可先备份:
sudo mv /usr/sbin/vsftpd /usr/sbin/vsftpd.bak
- 新版默认安装到 /usr/local/sbin/vsftpd,建议软链到系统路径:
sudo ln -sf /usr/local/sbin/vsftpd /usr/sbin/vsftpd
- 如需使用系统服务单元,确保与现有 systemd 单元(/usr/lib/systemd/system/vsftpd.service)中 ExecStart 路径一致。
- 启动与验证:
sudo systemctl daemon-reload
sudo systemctl start vsftpd
vsftpd -v && systemctl status vsftpd
- 回退思路:停止服务,恢复二进制与配置,重启服务。
四、升级后的验证与常见问题
- 版本与服务状态:
vsftpd -v
systemctl status vsftpd
- 客户端连通性:从客户端连接,验证登录、上传/下载、目录切换是否正常;如使用 TLS/SSL,选择“显式 FTP over TLS”。
- 防火墙与被动端口:若启用被动模式,放行对应端口(示例为 8888–8899/tcp):
sudo firewall-cmd --add-port=8888-8899/tcp --permanent
sudo firewall-cmd --reload
- SELinux:若使用家目录或虚拟用户,按需设置布尔值:
sudo setsebool -P ftp_home_dir=1
sudo setsebool -P allow_ftpd_full_access=1
- 配置语法与空格:若出现 500 OOPS: bad bool value 等,检查配置行尾空格并清理:
sed -ir ‘s/[ ]$//g’ /etc/vsftpd/vsftpd.conf
sed -ir 's/[ ]$//g’ /etc/vsftpd/vuser_conf/*
- 日志排查:查看 /var/log/vsftpd.log 与服务日志,确认无启动失败或认证错误。