首页 > 系统相关 >centos7一键搭建ftp

centos7一键搭建ftp

时间:2023-12-25 16:59:49浏览次数:37  
标签:ftp vsftpd db 一键 echo centos7 etc user

前言

可参考:https://www.linuxprobe.com/ftp-deployment-authentication.html

因为手动敲代码太慢了,所以我总结了一份脚本,方便快速安装。

准备工作

安装之前的准备工作

yum -y install vsftpd

systemctl start vsftpd

systemctl enable vsftpd

一键安装脚本

#!/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

标签:ftp,vsftpd,db,一键,echo,centos7,etc,user
From: https://www.cnblogs.com/guowenrui/p/17926426.html

相关文章

  • linux&windows通过脚本下载ftp文件
    windows@echooffREM登陆ftp下载文件setftpUser=test_usersetftpPass=123456setftpIP=192.168.1.205setftpFolder=/setLocalFolder=C:/Users/Administrator/DesktopsetftpFile=%temp%/TempFTP.txt>"%ftpFile%"(echo,%ftpUser%echo,%ftpPass%......
  • CentOS7系统升级最新内核
    查看系统当前版本cat/etc/redhat-release查看系统内核版本uname-sr查看内核启动顺序yuminstall-ygrub2-pcgrub2-editenvlist#查看可用内核版本及启动顺序#CentOS7系统默认版本为3.10.0sudoawk-F\''$1=="menuentry"{printi++":"$2}'/boot/gr......
  • Centos7.4 安装jdk1.8
    1.下载镜像dockerpullprimetoninc/jdk:1.82.查看镜像 dockerimages3.启动容器 dockerrun-it--namejdk1.8-dprimetoninc/jdk:1.84.查看容器 dockerps 5.进入jdk安装目录sudodockerexec-itjdk1.8/bin/bash6.查看jdk版本java-version退出......
  • centos7编译安装php8
    参考推荐:https://blog.csdn.net/zzz1502/article/details/120157436 首先安装需要的依赖和第三方库#yuminstall-y--setopt=protected_multilib=falsegcGcgcc-c++makecmakeautomakeautoconfgdfilebisonpatchmlocateflexdiffutilszlibzlib-develpcrepcre-d......
  • centos7安装nginx
    首先安装nginx所需要的第三方库和编译工具# yuminstall-ygccgcc-c++autoconfautomakemake# yuminstallzlibzlib-developensslopenssl-develpcrepcre-develwgethttpd-toolsvim-ynginx官网:https://nginx.org/进入download页面下载稳定版本Stableversion:下......
  • Unity最新一键清理Prefab中所有MissingComponent
    因为老的API Properties.DeleteArrayElementAtIndex(propertyIndex);提示没权限修改,而unity提供了新的API GameObjectUtility.RemoveMonoBehavioursWithMissingScript(go);更方便移除丢失的组件,需要遍历物体下面所有子节点,否则无法移除子节点的丢失组件。于是重新整理了下......
  • centos7_mysql_删除
    CentOS7中的MySQL是使用以下命令进行安装的:sudoyuminstallmysql-server以下是如何完全卸载MySQL的步骤:步骤1:停止MySQL服务sudosystemctlstopmysqld.service步骤2:禁用MySQL服务,使它不会在系统重启时启动sudosystemctldisablemysqld.service步骤3:卸......
  • Bert-vits2-2.3-Final,Bert-vits2最终版一键整合包(复刻生化危机艾达王)
    近日,Bert-vits2发布了最新的版本2.3-final,意为最终版,修复了一些已知的bug,添加基于WavLM的Discriminator(来源于StyleTTS2),令人意外的是,因情感控制效果不佳,去除了CLAP情感模型,换成了相对简单的BERT融合语义方式。事实上,经过2.2版本的测试,CLAP情感模型的效果还是不错的,关于2.......
  • CentOS7开启Firewalld防火墙日志记录获取被拦截的IP
    问题场景:在实际生产环境时使用该方法进行ES数据库白名单访问控制,但遇到业务侧反馈无法访问到ES数据库端口,需要加入到白名单,但业务侧用的IP业务侧无法准确给出于是通过如下面的方法解决这个问题1、firewalld的默认配置是不记录日志firewall-cmd--get-log-denied可以看到默认是off......
  • CentOS7下安装著名商业漏洞扫描工具Nexpose_6.6.156
    Nexpose简单介绍Nexpose是Rapid7出品,一款著名的、极佳的商业漏洞扫描工具。跟一般的扫描工具不同,Nexpose自身的功能非常强大,可以更新其漏洞数据库,以保证最新的漏洞被扫描到。漏洞扫描效率非常高,对于大型复杂网络,可优先考虑使用;可以给出哪些漏洞可以被MetasploitExploit,哪些漏......