此脚本我线上环境一键安装脚本,可以直接在Centos服务器上一键安装vsftpd服务并开通ftp账户。此脚本只供本人线上使用,放到此博文方便自己查阅。网友切不可直接复制到自己的线上直接套用,使用前一定要多测试。如有套用使用造成损失,与本博主无关。

#/bin/bash

###脚本使用说明
#bash   脚本名称          ftp账户  ftp密码   虚拟用户
#sh -x install-vsftpd.sh  xiaowu  xiaowu666  www
##01vsftpd用户
user=$1
pass=$2
codeuser=$3

##02安装和配置文件如下
/usr/bin/yum install vsftpd -y
cp /etc/vsftpd/vsftpd.conf  /etc/vsftpd/vsftpd.conf.bak
echo " " > /etc/vsftpd/vsftpd.conf  
cat << EOF >/etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
listen=YES
listen_port=2038
pasv_min_port=2037
pasv_max_port=2039
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
check_shell=YES
chroot_local_user=YES
guest_enable=YES
guest_username=$codeuser
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/extra
EOF

#03判断code用户是否存在,不存在创建
/usr/bin/id $3 >/dev/null
if [ $? -eq 1 ];then
     $(useradd ${codeuser} -s /sbin/nologin -M)
     sed -i "s#/home/$codeuser#/data/www#g" /etc/passwd
 else
    echo "user  have exsited" 
   sed -i "s#/home/$codeuser#/data/www#g" /etc/passwd
fi

##04创建用户权限
[ ! -d /etc/vsftpd/extra ]&&mkdir /etc/vsftpd/extra -p

cat << EOF >/etc/vsftpd/extra/$1
local_root=/data/www
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=3
max_per_ip=3
local_max_rate=500000

EOF

##05添加用户信息
cat </etc/vsftpd/vsftpd_login
$user
$pass
EOF

##06加密生成密码文件
/usr/bin/db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db

##07将密码文件写入pam.d认证文件中
cat </etc/pam.d/vsftpd
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

chown -R ${3}.${3} /data/www
##08启动vsftpd
/etc/init.d/vsftpd restart
##09 iptables 放开vsftpd访问权限
#/etc/init.d/iptables stop
modprobe nf_conntrack_ftp
/sbin/iptables -F -t filter
/sbin/iptables -F -t nat
/sbin/iptables -P OUTPUT ACCEPT

#Enable Native Network Transfer
/sbin/iptables -A INPUT -i lo -j ACCEPT
#Accept Established Connections
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 12570 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 39698 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m multiport --dports 2038,443,80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 2037:2050 -j ACCEPT
/sbin/iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 5/s --limit-burst 10 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 11.06.87.85,11.14.95.45,21.44.68.40 --dport 2038 -j ACCEPT
#ICMP
iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 5/s --limit-burst 10 -j ACCEPT
/etc/init.d/iptables save
/etc/init.d/iptables restart

/etc/init.d/vsftpd restart