#!/bin/bash
############################
#  安  装  vsftpd  服  务  #
############################
source $HOME/.bash_profile      #加载用户环境变量
Exit() {
        string="${1}"   #错误内容,不能包含空格
        code=$2         #错误代码,默认1
        code="${code:=1}"
        if [[ $string != "" ]];then
                echo_Red $string
        fi
        exit $code
}
#定义颜色输出,红色错误,蓝色警告,绿色正常
echo_Red() {
        string="$*"
        echo -e "\033[31m${string}\033[0m"
}

echo_Green() {
        string="$*"
        echo -e "\033[32m${string}\033[0m"
}

echo_Blue() {
        string="$*"
        echo -e "\033[34m${string}\033[0m"
}

ftpmulu="$1"
if [[ ${ftpmulu} == "" ]];then
	Exit "参数1:补丁目录(例：/data/www/html)，参数2:Ftp用户名，参数3:Ftp密码"
fi
username="$2"
if [[ ${username} == "" ]];then
	Exit "参数1:补丁目录(例：/data/www/html)，参数2:Ftp用户名，参数3:Ftp密码"
fi
password="$3"
if [[ ${password} == "" ]];then
	Exit "参数1:补丁目录(例：/data/www/html)，参数2:Ftp用户名，参数3:Ftp密码"
fi

if [ ! -d "${ftpmulu}" ];then
    mkdir -p ${ftpmulu}
fi
chown -R nginx:nginx ${ftpmulu}
echo "开始安装vsftpd......."
yum -y install vsftpd
cd /etc/vsftpd/
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
echo "修改配置文件......."
sed -i "s/anonymous_enable=YES/anonymous_enable=NO/" /etc/vsftpd/vsftpd.conf
sed -i "s/pam_service_name=vsftpd/pam_service_name=vsftpd.vu/" /etc/vsftpd/vsftpd.conf
grep anonymous_enable= /etc/vsftpd/vsftpd.conf
grep pam_service_name= /etc/vsftpd/vsftpd.conf
echo "userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
#开启虚拟用户
guest_username=nginx
##FTP 虚拟用户对应的系统用户
anon_umask=022
##虚拟用户新建的目录 权限是 755，文件的权限是 644
user_config_dir=/etc/vsftpd/vsftpd_user_conf
##FTP 虚拟用户配置文件存放位置
max_clients=100
##限制最大多少客户端可连接
max_per_ip=20
##限制单 IP 的最大连接数
pasv_enable=YES
##开启 VSFTP 服务为被动模式启动
pasv_min_port=30000
##指定被动模式下的最小随机端口
pasv_max_port=30999
##指定被动模式下的最大随机端口
listen_port=21
##指定 VSFTPD 服务连接端口号
allow_writeable_chroot=YES
" >> /etc/vsftpd/vsftpd.conf
echo "添加用户......."
echo "${username}
${password}" > /etc/vsftpd/login.txt
db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db
chmod 600 /etc/vsftpd/login.txt
chmod 600 /etc/vsftpd/login.db
echo "auth required pam_userdb.so db=/etc/vsftpd/login
account required pam_userdb.so db=/etc/vsftpd/login"  > /etc/pam.d/vsftpd.vu
mkdir -p /etc/vsftpd/vsftpd_user_conf
mkdir /home/nginx -p && chown -R nginx.nginx /home/nginx
echo "guest_username=nginx
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
local_root=${ftpmulu}
ftpd_banner=Welcome to FTPServer
anon_other_write_enable=yes"  > /etc/vsftpd/vsftpd_user_conf/${username}
echo "开始启动Ftp服务......."
system=$(cat /etc/redhat-release | awk '{print $4}' | awk -F '.' '{print $1}')
echo "此系统版本为: ${system}"
if [[ ${system} == 6 ]]; then
    service vsftpd start
    chkconfig vsftpd on
elif [[ ${system} == 7 ]]; then
    systemctl start vsftpd
    systemctl enable vsftpd
else
    echo "系统版本既不是6也不是7,请手动启动Ftp服务并设置开机自启."
    echo "vsftpd 安 装 完 成 !!!!!!!"
    exit
fi
echo "vsftpd 安 装 完 成 !!!!!!!"
