一佳一

记录像1+1一样简洁的代码

导航

centos7一键安装vsftpd脚本

Posted on 2020-11-04 15:45  一佳一  阅读(1276)  评论(0编辑  收藏  举报

centos ftp 权限控制比较严格 手动配置非常麻烦,搞了一键脚本,方便大家快速配置

 

1.创建sh脚本文件

sudo vim /root/install_vsftpd.sh

2.贴入以下内容

#!/bin/bash
#此脚本目前只是为了方便centos7下安装vsftp,其他版本后期集成。
#ftp数据存放目录
# by liwentong 20191219
ftp_data=/home/ftp
chcek_friewalld(){
    echo "开始检查防火墙设置"
    systemctl status firewalld |grep runing & >/dev/null
    if [ $? -ne 0 ]
    then
        firewall-cmd --add-port=21/tcp --zone=public --permanent
        firewall-cmd --add-service=ftp
        firewall-cmd --reload
    fi
    if [ $? -eq 0 ]
    then
        echo "防火墙开启成功"
    fi
    useradd -s /sbin/nologin ftp
}
#搭建ftp
install_vsftp(){
    echo "开始安装vsftp 并且检查环境" 
    yum -y install vsftpd libdb-utils
    if [ $? -ne 0 ]
    then
        echo "请检查你的yum源情况,是否出现无法用,可单独在终端执行 yum makecache 测试"
        exit 1
    fi
    #检查防火墙,开放21端口
    chcek_friewalld
    echo "开始配置ftp"
    mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
    #配置数据写入到配置文件

    cat >/etc/vsftpd/vsftpd.conf<<LWT
listen=yes
anonymous_enable=no
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user=yes
guest_enable=YES
guest_username=ftp
user_config_dir=/etc/vsftpd/vsftpd_user_conf
pam_service_name=vsftpd.vu
allow_writeable_chroot=YES
local_enable=YES
LWT

    read -p "输入ftp用户:" ftp_user
    if [ ! -n "$ftp_user" ];then
        ftp_user=test
    fi
    read -p "输入ftp用户密码:" ftp_passwd
    if [ ! -n "$ftp_passwd" ];then
        ftp_passwd=123456
    fi
    cd /etc/vsftpd
    echo $ftp_user >/etc/vsftpd/user.txt
    echo $ftp_passwd >>/etc/vsftpd/user.txt
    db_load -T -t hash -f user.txt vsftpd_login.db
    chmod 600 /etc/vsftpd/vsftpd_login.db
    touch /etc/pam.d/vsftpd.vu
    echo "判断此系统是32位操作系统还是64位"
    #判断centos系统位64位还是32位
    xd=`getconf LONG_BIT`
    if [ $xd  -eq '64' ];then
        echo "此系统为64位"
        echo "auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login" >  /etc/pam.d/vsftpd.vu
        echo "account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login" >> /etc/pam.d/vsftpd.vu
    else
        echo "auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login" > /etc/pam.d/vsftpd.vu
        echo "account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login" >> /etc/pam.d/vsftpd.vu
    fi
    #限制用户切换工作目录
    touch /etc/vsftpd/chroot_list
    echo $ftp_user >>/etc/vsftpd/chroot_list
    #配置虚拟用户的配置文件
    mkdir -p /etc/vsftpd/vsftpd_user_conf
    cd /etc/vsftpd/vsftpd_user_conf
    #写入用户权限配置
    cat >$ftp_user <<LWT
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
LWT
    echo "local_root="$ftp_data/$ftp_user>>$ftp_user
    mkdir -p $ftp_data
    chown -R ftp:root $ftp_data
    chmod o+rw $ftp_data
    mkdir -p $ftp_data/$ftp_user
    chmod -R 777 $ftp_data/$ftp_user
    systemctl restart vsftpd.service
}
#创建虚拟用户
create_user(){
    ftp_passwd=123456
    read -p "输入你要创建的用户名:" ftp_user
    if [ ! -n  "$ftp_user" ];then
        echo "你没有输入用户名,退出"
        exit 1
    else
        read -p "输入密码:" ftp_pass
        if [ ! -n "$ftp_pass" ];then
            echo "密码没有输入,默认123456"
        else
            ftp_passwd=$ftp_pass
        fi
    fi
    cd /etc/vsftpd
    echo $ftp_user >>/etc/vsftpd/user.txt
    echo $ftp_passwd >>/etc/vsftpd/user.txt
    db_load -T -t hash -f user.txt /etc/vsftpd/vsftpd_login.db
    chmod 600 /etc/vsftpd/vsftpd_login.db
    echo $ftp_user >>/etc/vsftpd/chroot_list
    cd /etc/vsftpd/vsftpd_user_conf
    cat >$ftp_user<<LWT 
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
LWT
    echo "local_root="$ftp_data/$ftp_user>>$ftp_user
    mkdir -p $ftp_data/$ftp_user
    chmod -R 777 $ftp_data/$ftp_user
}


echo "输入你要操作的内容"
select var in install_vsftpd create_user quit
do
    
    case $var in 
    install_vsftpd)
        install_vsftp;
        ;;
    create_user)
        create_user
        ;;
    quit)
        exit 1
        ;;
    esac
done

3.保存

:wq!

4.执行sh脚本

sudo sh install_vsftpd.sh

5.安装并输入用户名

 

 

 

 登陆并上传测试