#!/bin/bash
#2017-8-21 10:03:18
#author guojunwei
#descrption
FTP_CONF_DIR="/etc/vsftpd"
VIR_USR="$*"
SYS_USER="ftpuser"
LOGIN_DB="vsftpd_login"
#######################################################################
if [[ $# -eq 0 ]];then
echo -e "\033[31m please user $0: /bin/bash $0 user1 user2 | user1 \033[0m"
exit 0
fi
if [[ ! -f $FTP_CONF_DIR/vsftpd.conf ]];then
yum install -y vsftpd* db4*
fi
####################### 检查配置文件是否有用户 ###################
i=1
while [[ i -le $# ]]
do
eval PARAM=\$$i
grep "$PARAM" ${FTP_CONF_DIR}/${SYS_USER}s.txt
if [[ $? -ne 0 ]];then
cat >> $FTP_CONF_DIR/${SYS_USER}s.txt <<EOF
$PARAM
pwd_$PARAM
EOF
fi
((i++))
done
########################### 生成加密文件和认证 ######################
db_load -T -t hash -f ${FTP_CONF_DIR}/${SYS_USER}s.txt $FTP_CONF_DIR/${LOGIN_DB}.db
chmod 700 ${FTP_CONF_DIR}/${SYS_USER}s.txt
chmod 700 $FTP_CONF_DIR/${LOGIN_DB}.db
grep "$FTP_CONF_DIR/${LOGIN_DB}" /etc/pam.d/vsftpd
if [[ $? -ne 0 ]];then
cat > /etc/pam.d/vsftpd << EOF
auth sufficient /lib64/security/pam_userdb.so db=$FTP_CONF_DIR/$LOGIN_DB
account sufficient /lib64/security/pam_userdb.so db=$FTP_CONF_DIR/$LOGIN_DB
EOF
useradd -s /sbin/nologin $SYS_USER
fi
############################ 处理配置文件 ###########################
grep "guest" $FTP_CONF_DIR/vsftpd.conf
if [[ $? -ne 0 ]];then
cat >> $FTP_CONF_DIR/vsftpd.conf<<EOF
guest_enable=YES
guest_username=$SYS_USER
pam_service_name=vsftpd
user_config_dir=$FTP_CONF_DIR/vsftpd_user_conf
virtual_use_local_privs=YES
EOF
fi
############################ 生成用户家目录 ##############################
j=1
while [[ j -le $# ]]
do
eval PARAM=\$$j
if [[ ! -d $FTP_CONF_DIR/vsftpd_user_conf ]];then
mkdir -p $FTP_CONF_DIR/vsftpd_user_conf
fi
cat > $FTP_CONF_DIR/vsftpd_user_conf/$PARAM <<EOF
local_root=/home/$SYS_USER/$PARAM
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
EOF
if [[ ! -d /home/$SYS_USER/$PARAM ]];then
mkdir -p /home/$SYS_USER/$PARAM
fi
chown -R $SYS_USER.$SYS_USER /home/$SYS_USER
((j++))
done
service vsftpd restart