vsftpd一键安装脚本
此脚本我线上环境一键安装脚本,可以直接在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 <<EOF >/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 <<EOF >/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
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.