CentOS 环境下 VSFTP 的安全更新与升级指南
一、更新前准备
cp -r /etc/vsftpd /root/backup/vsftpd-$(date +%F) 与 cp -p /etc/pam.d/vsftpd /root/backup/vsftpd.pam-$(date +%F)。systemctl status vsftpd;如有业务,安排在维护窗口操作。yum check-update vsftpd(或 dnf check-update vsftpd)。rpm -q vsftpd,并保留一份可快速恢复的配置文件与二进制。二、方法一 使用包管理器更新(推荐)
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.baksudo yum update vsftpdsudo dnf update vsftpdsudo systemctl restart vsftpdsystemctl status vsftpdrpm -q vsftpd 或 vsftpd -vsudo yum downgrade vsftpd-<已保存版本号>(或 dnf downgrade)并恢复备份配置。三、方法二 源码编译升级(仓库版本过旧或需特定版本时)
sudo yum install -y gcc make libcap-devel openssl-devel pam-devel tcp_wrappers-develtar -zxvf vsftpd-3.0.5.tar.gz
cd vsftpd-3.0.5
make
sudo make install
默认二进制安装到 /usr/local/sbin/vsftpd。sed -i 's#/etc/vsftpd.#/etc/vsftpd/#g' tunables.c 与 sed -i 's#/etc/vsftpd.conf#/etc/vsftpd/vsftpd.conf#g' defs.h)。chown root:root /etc/vsftpd.conf。cat >/etc/systemd/system/vsftpd.service <<'EOF'
[Unit]
Description=Vsftpd ftp daemon
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now vsftpd
systemctl status vsftpd、vsftpd -v、ps aux | grep vsftpd。四、更新后的验证与回滚
ftp localhost(或使用 FileZilla 等客户端测试登录、上传/下载、目录切换)。tail -n 50 /var/log/vsftpd.log 或 tail -n 50 /var/log/xferlog,确认无报错与异常断开。rpm -q vsftpd(包管理安装)或 vsftpd -v(源码安装)。sudo yum downgrade vsftpd-<旧版本>(或 dnf downgrade),并恢复备份配置。/usr/sbin/vsftpd),或切回系统提供的 vsftpd 包。五、注意事项与常见问题
rpm -e vsftpd,以免误删依赖与配置;如必须替换,请先停服务并准备回滚。setsebool 调整;同时确认 firewalld/iptables 已放行 21/20 端口与相关被动端口范围。