centos7一键安装vsftpd脚本 ftp

12个月前 (05-10 15:30)阅读45回复0
administrator
administrator
  • 管理员
  • 注册排名1
  • 经验值775
  • 级别管理员
  • 主题155
  • 回复0
楼主

链接:https://blog.csdn.net/lgw_999/article/details/129418419?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171530652716800180637837%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=171530652716800180637837&biz_




553 operation failed问题

如果你改变了ftp的根目录(将local_root的值换成了其他路径比如改成/datadir/ftpdata),有可能存在操作文件失败问题,

此时要关闭Selinux,关闭方法如下:


sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config && setenforce 0


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!

1

4.执行sh脚本

sudo sh install_vsftpd.sh



0
回帖

centos7一键安装vsftpd脚本 ftp 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息