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