#!/bin/bash

# CentOS 6.X x86_64

 

rpm -q vsftpd

if [ $? -eq 0 ];then

    echo "vsftpd已经安装,请执行该命令rpm -e vsftpd卸载vsftpd"

    exit 1

fi

 

if [ -d "/etc/vsftpd" ];then

    mv /etc/vsftpd{,.$(date +%Y%m%d%H%M)}

fi

 

yum install -y vsftpd db4 db4-devel

mv /etc/vsftpd/vsftpd.conf{,.$(date +%Y%m%d%H%M)}

 

# 生成vsftpd配置文件

cat << 'EOF' >> /etc/vsftpd/vsftpd.conf

listen=YES

listen_port=21

local_enable=YES

write_enable=NO

anonymous_enable=NO

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

chroot_local_user=YES

guest_enable=YES

guest_username=ftp

user_config_dir=/etc/vsftpd/ftp

ftpd_banner=welcome vsftp!

pam_service_name=vsftpd.pam

vsftpd_log_file=/var/log/vsftpd.log

dual_log_enable=YES

xferlog_enable=YES

local_root=/var/ftp

EOF

 

# 生成vsftpd的认证文件

cat << 'EOF' >> /etc/pam.d/vsftpd.pam

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

EOF

 

# 生成vsftpd虚拟用户的账号和密码

USER=ftpuser

PASS=$(echo $RANDOM | md5sum | head -c 20)

echo -e "$USER\n$PASS" > /etc/vsftpd/logins.txt

mkdir /etc/vsftpd/ftp

 

# 为生成的用户添加一个独立的配置文件

cat << 'EOF' >> /etc/vsftpd/ftp/${USER}

write_enable=YES

anon_world_readable_only=NO

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

anon_upload_enable=YES

anon_umask=022

file_open_mode=0777

guest_enable=YES

guest_username=ftp

local_root=/tmp

EOF

 

# 每次填加新的虚拟用户后执行的命令

# /etc/vsftpd/logins.txt是记录虚拟用户的账号和密码

# 添加新的虚拟用户在文件末尾追加账号和密码就可以了,奇数是用户,偶数是密码

echo "db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/vsftpd_login.db" > /etc/vsftpd/cmd

chmod u+x /etc/vsftpd/cmd

/etc/vsftpd/cmd

chkconfig vsftpd on

/etc/init.d/vsftpd start

echo "####################################"

echo "####################################"

echo "####################################"

echo "####################################"

echo "Config Files: /etc/vsftpd/vsftpd.conf"

echo "Pam Files: /etc/pam.d/vsftpd.pam"

echo "Db Files: /etc/vsftpd/vsftpd_login.db"

echo "User/Password Files: /etc/vsftpd/logins.txt"

echo "Create User/Password Db Files Command: bash /etc/vsftpd/cmd"

echo "User/Password: $USER/$PASS"

echo "Vsftpd Install OK!"

echo "####################################"

echo "####################################"

echo "####################################"

echo "####################################"