• Centos7上vsftp脚本--> sh vsftp.sh 用户名 密码 --> sh vsftp.sh install


    #!/bin/bash
    #vsftp install 
    
    . /etc/rc.d/init.d/functions
    
    users=/etc/vsftpd/vftpuser.txt    
    login=/etc/vsftpd/vftpuser.db    
    generate_db="db_load -T -t hash -f $users $login"
    virtual_user_config=/etc/vsftpd/vuser_conf
    virtual_user_home=/data/www
    guest_username=www    
    
    fanghuoqiang(){
    firewall-cmd --permanent --zone=public --add-service=ftp
    firewall-cmd --reload
    }
    
    touch /etc/vsftpd/vftpuser.txt
    
    install_vsftpd(){
    setenforce 0
    yum -y install db4-utils
    yum -y install vsftpd
    systemctl enable vsftpd
    
    useradd -s /sbin/nologin ${guest_username}
    
    mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
    cat >/etc/vsftpd/vsftpd.conf<<EOF
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    pasv_enable=YES
    pasv_min_port=60000
    pasv_max_port=61000
    xferlog_std_format=YES
    listen=YES
    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES
    
    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list
    
    pam_service_name=vsftpd
    guest_enable=YES
    guest_username=${guest_username}
    user_config_dir=/etc/vsftpd/vuser_conf
    allow_writeable_chroot=YES
    EOF
    
    mkdir /etc/vsftpd/vuser_conf
    mkdir /etc/vsftpd/chroot_list
    
    echo 'auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser' > /etc/pam.d/vsftpd
    echo 'account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser' >> /etc/pam.d/vsftpd
    
    touch /etc/vsftpd/vftpuser.txt
    
    systemctl restart vsftpd
    [ $? -eq 0  ]&&action $"Install vsftp:" /bin/true||action $"Install vsftp:" /bin/false
    iptables -A INPUT -p tcp --dport 60000:61000 -j ACCEPT
    iptables-save >/etc/sysconfig/iptables
    }
    
    add_user(){
    mkdir -p /data/www/$1 
    not_enough_parameter=56
    retval=0
    
    if [ "$#" -ne 2 ]; then
        echo "usage:`basename $0` <useradd> <user_name> <password>."
        exit $not_enough_parameter
    fi
    
    if grep -q "$1" "$users"; then
       passwd=$(sed -n "/$1/{n;p;}" "$users")
       if [ "$passwd" = "$2" ]; then
           echo "the user $1 already exists."
           exit $retval
       else
           echo "updating $1's password ... "
           sed -i "/$1/{n;s/$passwd/$2/;}" "$users"
           eval "$generate_db"
           exit $retval
       fi
    fi
    
    for i in "$1" "$2"
    do
        echo "$i" >> "$users"
    done
    
    eval "$generate_db"
    
    cat >> "$virtual_user_config"/"$1" <<EOF
    local_root=$virtual_user_home/$1
    write_enable=YES
    download_enable=YES
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    local_umask=022
    EOF
    
    mkdir "$virtual_user_home"/"$1"
    chown $guest_username "$virtual_user_home"/"$1"
    
    echo "==========$users============"
    cat $users
    }
    
    case "$1" in
        'install')
          install_vsftpd
    echo '----------------------------'
    echo '----------------------------'
    rpm -q vsftpd
    echo " "
    whereis vsftpd
            ;;
        'useradd')
          add_user $2 $3
    echo '----------------------------'
    echo '----------------------------'
    rpm -q vsftpd
    echo " "
    whereis vsftpd
            ;;
        *)
        echo "usage: $0 {install|useradd}"
        exit 1
            ;;
    esac

     

  • 相关阅读:
    STDMETHOD_,STDMETHOD,__declspec(novtable)和__declspec(selectany)
    __stdcall 与 __cdecl
    winows 进程通信的实例详解
    Windows 下多线程编程技术
    MFC/VC++ UI界面美化技术
    VC++中 wstring和string的互相转换实现
    VS2010项目转化为VS2008项目
    VC++ 响应回车键的2种方法
    高效 告别996,开启java高效编程之门 2-4实战:单一条件参数化
    高效 告别996,开启java高效编程之门 2-3实战:硬编码业务逻辑
  • 原文地址:https://www.cnblogs.com/new-journey/p/10118328.html
Copyright © 2020-2023  润新知