#!/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