每次给不同的人配置ftp,都手工搞一次,决定简化这一步操作。
功能
1、自动安装vsftp
2、自动设置被动模式、并打开iptables端口
3、支持自动创建ftp目录 帐号 密码
4、安装后,以后每次运行脚本,都可以用于创建用户密码目录
*由于权限设置方法不同,需要自己在完成后设置ftp目录的写入权限
*适合系统 centos 6
效果:

ftp.png

ftp2.png

文件:下载后解压

ftp.sh.zip

脚本代码介绍

if [ ! -e "/etc/init.d/vsftpd" ];then

echo '是否需要安装vsftpd? 不需要请回n ,需要按任意键'
read inputvar

    if [ $inputvar != 'n' ];then

        yum -y install db4 db4-utils
        yum -y install vsftpd
        sed -i 's/anonymous_enable=YES/anonymous_enable=No/g' /etc/vsftpd/vsftpd.conf
        sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/g' /etc/vsftpd/vsftpd.conf
        sed -i 's/#ascii_upload_enable=YES/ascii_upload_enable=YES/g' /etc/vsftpd/vsftpd.conf
        sed -i 's/#ascii_download_enable=YES/ascii_download_enable=YES/g' /etc/vsftpd/vsftpd.conf
        sed -i 's/#xferlog_file=\/var\/log\/xferlog/xferlog_file=\/var\/log\/vsftpd.log/g' /etc/vsftpd/vsftpd.conf
        echo "guest_enable=YES" >> /etc/vsftpd/vsftpd.conf
        echo "guest_username=ftp" >> /etc/vsftpd/vsftpd.conf
        echo "user_config_dir=/etc/vsftpd/vuser_conf" >> /etc/vsftpd/vsftpd.conf
        touch /var/log/vsftpd.log
        touch /etc/vsftpd/chroot_list
        echo ftp >> /etc/vsftpd/chroot_list
        touch /etc/vsftpd/vuser_passwd.txt
        mkdir /etc/vsftpd/vuser_conf/
        echo "auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd" > /etc/pam.d/vsftpd
        echo "account required pam_userdb.so db=/etc/vsftpd/vuser_passwd" >>  /etc/pam.d/vsftpd

        echo "pasv_max_port=6666" >> /etc/vsftpd/vsftpd.conf
        echo "pasv_min_port=5555" >> /etc/vsftpd/vsftpd.conf

        /etc/init.d/vsftpd restart

        iptables -I INPUT -p tcp --dport 21 -j ACCEPT
        iptables -I INPUT -p tcp --dport 5555:6666 -j ACCEPT
        /etc/init.d/iptables save
        /etc/init.d/iptables start
    else
        echo '已取消安装vsftpd'

    fi

fi

echo '是否需要创建ftp目录 帐户 密码?'
read inputvar2

if [ $inputvar2 != 'n' ];then
    echo '请输入ftp目录'
    read ftppath
    if [ ! -d "$ftppath" ]; then
      mkdir -p $ftppath
    fi
    echo '请输入ftp帐号'
    read account
    echo '请输入ftp密码'
    read pwd
    echo $account >> /etc/vsftpd/vuser_passwd.txt
    echo $pwd >> /etc/vsftpd/vuser_passwd.txt
    db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
    touch /etc/vsftpd/vuser_conf/$account
    echo local_root=$ftppath >> /etc/vsftpd/vuser_conf/$account
    echo write_enable=YES >> /etc/vsftpd/vuser_conf/$account
    echo anon_umask=022 >> /etc/vsftpd/vuser_conf/$account
    echo anon_world_readable_only=NO >> /etc/vsftpd/vuser_conf/$account
    echo anon_upload_enable=YES >> /etc/vsftpd/vuser_conf/$account
    echo anon_mkdir_write_enable=YES >> /etc/vsftpd/vuser_conf/$account
    echo anon_other_write_enable=YES >> /etc/vsftpd/vuser_conf/$account
    service vsftpd restart
    
    echo '创建完成,请自行设置ftp目录的权限以保证ftp帐号连接时正常读写'
    
    
else
echo '已取消创建ftp目录帐号密码'
fi