vftp centos 离线部署

install_ftp_offline.sh

#!/bin/bash
# Filename: install_ftp_offline.sh
# Description: CentOS 7 离线安装配置VSFTPD服务

# 检查root权限
if [[ $EUID -ne 0 ]]; then
   echo -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; then
    echo -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" ]]; then
        rpm -ivh ./vsftpd-3.0.2-29.el7.x86_64.rpm
    else
        echo -e "${RED}错误:未找到vsftpd离线安装包,请放置vsftpd-3.0.2-29.el7.x86_64.rpm在当前目录${NC}"
        exit 1
    fi
else
    echo -e "${GREEN}VSFTPD已安装,跳过安装步骤${NC}"
fi

# 步骤2:配置防火墙
echo -e "${YELLOW}[2/5] 配置防火墙...${NC}"
if systemctl is-active firewalld &>/dev/null; then
    firewall-cmd --permanent --add-service=ftp
    firewall-cmd --reload
    echo -e "${GREEN}防火墙已放行FTP服务${NC}"
else
    echo -e "${YELLOW}警告:firewalld未运行,跳过防火墙配置${NC}"
fi

# 步骤3:配置SELinux
echo -e "${YELLOW}[3/5] 配置SELinux...${NC}"
if getenforce | grep -q "Enforcing"; then
    setsebool -P ftpd_full_access on
    setsebool -P ftp_home_dir on
    echo -e "${GREEN}SELinux策略已更新${NC}"
else
    echo -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; then
    read -s -p "输入FTP用户密码: " FTP_PASS
    echo
    useradd -m -d /var/ftp/$FTP_USER -s /sbin/nologin $FTP_USER
    echo "$FTP_USER:$FTP_PASS" | chpasswd
    echo -e "${GREEN}FTP用户 $FTP_USER 创建成功${NC}"
    
    # 设置目录权限
    chmod 750 /var/ftp/$FTP_USER
    chown $FTP_USER: /var/ftp/$FTP_USER
    
    # 创建测试文件
    echo "这是FTP测试文件" > /var/ftp/$FTP_USER/test.txt
else
    echo -e "${YELLOW}用户 $FTP_USER 已存在,跳过创建${NC}"
fi

# 步骤5:配置VSFTPD
echo -e "${YELLOW}[5/5] 配置VSFTPD...${NC}"
cat > /etc/vsftpd/vsftpd.conf <> /etc/vsftpd/user_list

# 创建被动模式端口范围文件
touch /etc/vsftpd/chroot_list

# 启动服务
systemctl enable vsftpd
systemctl restart vsftpd

# 验证安装
if systemctl is-active vsftpd &>/dev/null; then
    echo -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}')"
else
    echo -e "\n${RED}FTP服务启动失败,请检查:${NC}"
    echo "1. 查看日志: journalctl -xe"
    echo "2. 检查配置: /etc/vsftpd/vsftpd.conf"
    echo "3. 手动启动: systemctl restart vsftpd"
fi

vftpcentos离线部署资源-CSDN下载

你可能感兴趣的:(centos,linux,运维)