前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vsftpd安装脚本

vsftpd安装脚本

原创
作者头像
大大刺猬
修改2019-03-04 14:43:44
1.6K0
修改2019-03-04 14:43:44
举报
文章被收录于专栏:大大刺猬
代码语言:javascript
复制
#!/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\naccount 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\nguest_username=superftp\nlocal_root=${vsftpd_share_dir}${userdir}\nwrite_enable=yes\npam_service_name=vsftpd.vu\nanon_umask=022\nanon_world_readable_only=YES\nanon_upload_enable=YES\nanon_mkdir_write_enable=YES\nanon_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" $@
option_vsftpd=$@
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!"

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档