vftp centos 离线部署
install_ftp_offline.sh
#!/bin/bash
# Filename: install_ftp_offline.sh
# Description: CentOS 7 离线安装配置VSFTPD服务# 检查root权限
if [[ $EUID -ne 0 ]]; thenecho -e "\033[31m错误:请使用root权限运行此脚本!\033[0m" exit 1
fi# 定义颜色输出
RED='\033[31m'
GREEN='\033[32m'
YELLOW='\033[33m'
NC='\033[0m'# 检查系统版本
if ! grep -q "CentOS Linux release 7" /etc/centos-release; thenecho -e "${RED}错误:此脚本仅适用于CentOS 7系统${NC}"exit 1
fi# 步骤1:安装VSFTPD(离线方式)
echo -e "${YELLOW}[1/5] 安装VSFTPD服务...${NC}"
if ! rpm -qa | grep -q "vsftpd"; then# 检查是否提供离线包if [[ -f "./vsftpd-3.0.2-29.el7.x86_64.rpm" ]]; thenrpm -ivh ./vsftpd-3.0.2-29.el7.x86_64.rpmelseecho -e "${RED}错误:未找到vsftpd离线安装包,请放置vsftpd-3.0.2-29.el7.x86_64.rpm在当前目录${NC}"exit 1fi
elseecho -e "${GREEN}VSFTPD已安装,跳过安装步骤${NC}"
fi# 步骤2:配置防火墙
echo -e "${YELLOW}[2/5] 配置防火墙...${NC}"
if systemctl is-active firewalld &>/dev/null; thenfirewall-cmd --permanent --add-service=ftpfirewall-cmd --reloadecho -e "${GREEN}防火墙已放行FTP服务${NC}"
elseecho -e "${YELLOW}警告:firewalld未运行,跳过防火墙配置${NC}"
fi# 步骤3:配置SELinux
echo -e "${YELLOW}[3/5] 配置SELinux...${NC}"
if getenforce | grep -q "Enforcing"; thensetsebool -P ftpd_full_access onsetsebool -P ftp_home_dir onecho -e "${GREEN}SELinux策略已更新${NC}"
elseecho -e "${YELLOW}SELinux未启用,跳过配置${NC}"
fi# 步骤4:创建FTP用户和目录
echo -e "${YELLOW}[4/5] 创建FTP用户...${NC}"
read -p "输入要创建的FTP用户名(默认:ftpuser): " FTP_USER
FTP_USER=${FTP_USER:-ftpuser}if ! id -u $FTP_USER &>/dev/null; thenread -s -p "输入FTP用户密码: " FTP_PASSechouseradd -m -d /var/ftp/$FTP_USER -s /sbin/nologin $FTP_USERecho "$FTP_USER:$FTP_PASS" | chpasswdecho -e "${GREEN}FTP用户 $FTP_USER 创建成功${NC}"# 设置目录权限chmod 750 /var/ftp/$FTP_USERchown $FTP_USER: /var/ftp/$FTP_USER# 创建测试文件echo "这是FTP测试文件" > /var/ftp/$FTP_USER/test.txt
elseecho -e "${YELLOW}用户 $FTP_USER 已存在,跳过创建${NC}"
fi# 步骤5:配置VSFTPD
echo -e "${YELLOW}[5/5] 配置VSFTPD...${NC}"
cat > /etc/vsftpd/vsftpd.conf <<EOF
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=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
tcp_wrappers=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_min_port=40000
pasv_max_port=45000
pasv_address=$(hostname -I | awk '{print $1}')
EOF# 添加用户到白名单
echo $FTP_USER >> /etc/vsftpd/user_list# 创建被动模式端口范围文件
touch /etc/vsftpd/chroot_list# 启动服务
systemctl enable vsftpd
systemctl restart vsftpd# 验证安装
if systemctl is-active vsftpd &>/dev/null; thenecho -e "\n${GREEN}FTP服务安装成功!${NC}"echo -e "服务器IP: $(hostname -I | awk '{print $1}')"echo -e "用户名: $FTP_USER"echo -e "主目录: /var/ftp/$FTP_USER"echo -e "测试文件路径: /var/ftp/$FTP_USER/test.txt"echo -e "\n连接命令:"echo -e "ftp $(hostname -I | awk '{print $1}')"
elseecho -e "\n${RED}FTP服务启动失败,请检查:${NC}"echo "1. 查看日志: journalctl -xe"echo "2. 检查配置: /etc/vsftpd/vsftpd.conf"echo "3. 手动启动: systemctl restart vsftpd"
fi
vftpcentos离线部署资源-CSDN下载