install_ftp_offline.sh
vsftpd-3.0.2-28.el7.x86_64.rpm
#!/bin/bash# 一鍵安裝配置vsftpd腳本(開放根目錄,禁用chroot)# 安裝vsftpd RPM包
echo "正在安裝vsftpd..."
rpm -ivh vsftpd-3.0.2-28.el7.x86_64.rpm
if [ $? -ne 0 ]; thenecho "安裝失敗!請檢查RPM包是否存在。"exit 1
fi# 創建FTP用戶組和用戶
echo "創建FTP用戶..."
groupadd ftp || true
useradd -g ftp ftp_root
if [ $? -ne 0 ]; thenecho "創建用戶失敗!"exit 1
fi# 設置FTP用戶密碼
echo "設置FTP用戶密碼..."
echo "syspass123" | passwd --stdin ftp_root
if [ $? -ne 0 ]; thenecho "設置密碼失敗!"exit 1
fi# 備份原始配置文件
echo "備份原始配置..."
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak# 創建chroot列表文件 - 僅占位作用
echo "ftp_root" > /etc/vsftpd/vsftpd.chroot_list# 配置vsftpd.conf(禁用chroot,完全開放)
cat > /etc/vsftpd/vsftpd.conf <<EOF
# 基礎配置
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES
pasv_enable=YES
# 設置被動模式端口范圍
pasv_min_port=30000
pasv_max_port=30010# 關鍵配置 - 完全禁用chroot限制
chroot_local_user=NO
chroot_list_enable=NO# 安全增強 - 允許寫入所有目錄
allow_writeable_chroot=YES# 核心配置 - 不限制根目錄(由前端完全控制)
# 未設置local_root參數,允許切換到任何目錄
EOF# 配置user_list文件
cat > /etc/vsftpd/user_list <<EOF
# vsftpd 用戶列表
root
ftp
ftpuser
ftp_root
EOF# 啟動并啟用服務
systemctl restart vsftpd
systemctl enable vsftpd# 配置SELinux(防止chroot錯誤)
setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on# 配置防火墻
if firewall-cmd --state &>/dev/null; thenecho "配置防火墻..."firewall-cmd --permanent --add-port=21/tcpfirewall-cmd --permanent --add-port=30000-30010/tcpfirewall-cmd --reload
elseecho "防火墻未運行,跳過防火墻配置"
fi# 驗證服務狀態
if systemctl is-active --quiet vsftpd; thenecho "--------------------------------------------"echo "vsftpd 安裝配置成功完成!"echo "FTP 用戶: ftp_root"echo "FTP 密碼: syspass123"echo "關鍵配置:"echo "1. 已禁用 chroot 限制"echo "2. 被動端口范圍:30000-30010"echo "3. 允許訪問系統任意目錄"echo "安全說明:"echo "- 此配置完全由前端控制訪問路徑"echo "- 請確保前端配置安全的路徑"echo "--------------------------------------------"# 簡單測試echo "測試FTP連接..."timeout 5 ftp -n 127.0.0.1 <<END_SCRIPTquote USER ftp_rootquote PASS syspass123quit
END_SCRIPTif [ $? -eq 0 ]; thenecho "FTP連接測試成功!"elseecho "警告: FTP連接測試失敗,請檢查日志!"fi
elseecho "vsftpd 服務啟動失敗,請檢查配置!"journalctl -xeu vsftpd --no-pager | tail -n 20exit 1
fi
vftpcentos離線部署資源-CSDN下載