vsftpd安装脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vsftpd安装脚本相关的知识,希望对你有一定的参考价值。

#!/bin/bash
#write by ddcw
#使用说明:参数:-d 指定vsftpd分享目录;  -s  简单的vsftpd,即匿名vsftpd;   -u filename.txt 指定用户密码为filename.txt
#注意事项:若要有-d 选项,  -d 必须为第一个选项  若无-d 则默认vsftpd_share_dir="/tpftp/"   -i 表示安装vsftpd
#userlist.txt  单行为用户名,双行为密码
#例子: vsftp_install.sh -i -d /ftp -u userlist.txt
#      vsftp_install.sh -i -s
vsftpd_conf_dir="/etc/vsftpd/"
vsftpd_share_dir="/tpftp/"
usage_vsftpd(){
    echo "$0 -s                       install anonymous can login whith RW"
    echo "$0 -u userlist.txt          while create virtual user by userlist.txt"
    echo "$0 -d ftpshare_directory    set ftp share directory;if set,this is first must"
    exit;
}
intall_vsftpd(){
    rpm -qa | grep "vsftpd"
     vsftpd_state=$?
    if [ "${vsftpd_state}" -eq 0 ]
    then
        echo "vsftpd is install"
    else
        yum install vsftpd -y || echo "yum is error,you can run yum install vsftpd by yourself or hehe"
    fi
}
simple_vsftpd(){
    chmod -R 777 ${vsftpd_share_dir}
    bak_config
    sed -i "/anonymous_enable/canonymous_enable=YES" ${vsftpd_conf_dir}vsftpd.conf 2>&1
    sed -i "/anon_mkdir_write_enable/canon_mkdir_write_enable=YES" ${vsftpd_conf_dir}vsftpd.conf 2>&1
    sed -i "/anon_mkdir_write_enable/aanon_other_write_enable=YES" ${vsftpd_conf_dir}vsftpd.conf 2>&1 
    sed -i "/anon_upload_enable/canon_upload_enable=YES" ${vsftpd_conf_dir}vsftpd.conf 2>&1
    chmod 777 /var/vsftpd/pub
}
dbuser(){
    db_load -T -t hash -f $1 ${vsftpd_conf_dir}vuser.db || usage_vsftpd
    chmod 600 ${vsftpd_conf_dir}vuser.db
}
set_vsftpd(){
    [ -f /etc/pam.d/vsftpd.vu ] || touch /etc/pam.d/vsftpd.vu
    echo -e "auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser" > /etc/pam.d/vsftpd.vu
    grep superftp /etc/passwd || useradd  -s /sbin/nologin superftp
    bak_config
    sed -i "/anonymous_enable/canonymous_enable=NO" ${vsftpd_conf_dir}vsftpd.conf 2>&1
    sed -i "/local_enable/clocal_enable=YES" ${vsftpd_conf_dir}vsftpd.conf 2>&1
    sed -i "/pam_service_name/cpam_service_name=vsftpd.vu" ${vsftpd_conf_dir}vsftpd.conf 2>&1
    sed -i "/userlist_enable/cuserlist_enable=YES" ${vsftpd_conf_dir}vsftpd.conf 2>&1
    grep "user_config_dir" ${vsftpd_conf_dir}vsftpd.conf   &&  sed -i "/user_config_dir/cuser_config_dir=${vsftpd_conf_dir}vuser_dir" ${vsftpd_conf_dir}vsftpd.conf 2>&1 || sed -i "/userlist_enable/auser_config_dir=${vsftpd_conf_dir}vuser_dir" ${vsftpd_conf_dir}vsftpd.conf 2>&1
    [ -d /etc/vsftpd/vuser_dir ] || mkdir /etc/vsftpd/vuser_di
    for userdir in `cat  ${userlist} | awk ‘NR%2‘`
    do
        [ -f /etc/vsftpd/vuser_dir/${userdir} ] || touch /etc/vsftpd/vuser_dir/${userdir}
        [ -d ${vsftpd_share_dir}${userdir} ] || mkdir ${vsftpd_share_dir}${userdir}
        echo -e "guest_enable=YES
guest_username=superftp
local_root=${vsftpd_share_dir}${userdir}
write_enable=yes
pam_service_name=vsftpd.vu
anon_umask=022
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES" > /etc/vsftpd/vuser_dir/${userdir}
    done
    chmod -R 755 ${vsftpd_share_dir}
    chown -R superftp:superftp ${vsftpd_share_dir}
}
bak_config(){
    [ -d ${vsftpd_conf_dir}bak_config ] || mkdir ${vsftpd_conf_dir}bak_config
    cp ${vsftpd_conf_dir}vsftpd.conf ${vsftpd_conf_dir}bak_config/`date "+%s"`
}
#echo "this shell is beging;options is" [email protected]
[email protected]
option_shuzu=($option_vsftpd)
n=0
export flag=0
[ $# -eq 0 ] && usage_vsftpd || echo "this shell is begining...."
[ -f ${vsftpd_conf_dir}vsftpd.conf.bak ] || cp -nf ${vsftpd_conf_dir}vsftpd.conf ${vsftpd_conf_dir}vsftpd.conf.bak
for i in ${option_vsftpd}
do
    n=$((n+1))
    [ ${flag} -eq 1 ] && export flag=0 && continue
    case $i in
        -s|s)
            simple_vsftpd;;
        -u|u)
            export userlist=${option_shuzu[n]}
            echo $userlist
            dbuser ${option_shuzu[n]}
            set_vsftpd
            export flag=1;;
        -d|d)
            [ -d ${option_shuzu[n]} ]  ||  mkdir ${option_shuzu[n]}
            strt=${option_shuzu[n]}
            [ ${strt:${#strt}-1} == "/" ] || strt=${strt}"/"
            echo "${strt}"
            export vsftpd_share_dir=${strt}
            export flag=1;;
        -i|i)
            intall_vsftpd;;
        *)
            usage_vsftpd;;
    esac
done        
service vsftpd restart
echo "successful!"

以上是关于vsftpd安装脚本的主要内容,如果未能解决你的问题,请参考以下文章

vsftpd一键安装脚本

vsftpd 自动安装脚本

Centos6下Vsftpd自动化安装脚本

centos6.5 安装vsftpd

详解FTP服务之vsftpd(附三种用户安装脚本)

vsftpd服务搭建与配置脚本