51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Linux批量创建VSFTPD虚拟用户脚本

这篇文章主要介绍为自动创建VSFTPD虚拟用户脚本,有需要的朋友可以参考下。

脚本内容如下:
文章源自小柒网-https://www.yangxingzhen.cn/1268.html

#!/bin/bash
#2017-5-20 13:14:00
#Author blog:
# https://www.yangxingzhen.cn
#Author site:
# https://www.yangxingzhen.cn/sitemap.html
#Author mirrors site:
# https://mirrors.yangxingzhen.com
#About the Author
# BY:、、、小柒
# QQ:675583110
#Create vsftpd virtual user(支持创建单个用户跟多个用户)
#This script applies to Centos 6.x and Centos 7.x

SYS_VERSION=`awk -F. '{print $1}' /etc/redhat-release |awk '{print $NF}'`
FTP_DIR="/etc/vsftpd"
PASSWD="yangxingzhen.com"
PAM_DIR="/etc/pam.d"
FTP_HOME="/home/ftpuser"
USER="$\*"


if \[ $# -eq 0 \];then
    echo -e "\\033\[32m Please enter the username that needs to be create \\033\[0m"
    echo -e "\\033\[33m Usage: sh $0 {admin\|admin123\|help} \\033\[0m"
    exit 0
elif \[\[ $USER == "help" \]\];then
    echo -e "\\033\[32m Please enter the username that needs to be create \\033\[0m"
    echo -e "\\033\[33m Usage: sh $0 {admin\|admin123\|help} \\033\[0m"
    exit 0
fi
if \[ $SYS_VERSION -eq 7 \];then
    echo -e "\\033\[32m Your system version is CentOS `awk '{print $(NF-1)}' /etc/redhat-release` \\033\[0m"
    if \[ ! -f $FTP_DIR/vsftpd.conf \];then
        yum -y install vsftpd pam\* libdb-utils libdb\*
    else
        echo -e "\\033\[33m This software has been installed \\033\[0m"
    fi
else
    echo -e "\\033\[32m Your system version is CentOS `awk '{print $(NF-1)}' /etc/redhat-release` \\033\[0m"
    if \[ ! -f $FTP_DIR/vsftpd.conf \];then
        yum -y install vsftpd db4\*
    else
        echo -e "\\033\[33m This software has been installed \\033\[0m"
    fi
fi
if \[ ! -f $FTP_DIR/ftpusers.txt \];then
    touch $FTP_DIR/ftpusers.txt
fi
for i in `echo $USER`
do
grep -qw "${i}" $FTP_DIR/ftpusers.txt
if \[ $? -ne 0 \];then
cat \>\>$FTP_DIR/ftpusers.txt \<\<EOF
$i
$PASSWD
EOF
else
    echo -e "\\033\[34m user $i already exists,Please reenter the username \\033\[0m"
fi
done
db_load -T -t hash -f $FTP_DIR/ftpusers.txt $FTP_DIR/vsftpd_login.db
chmod 700 $FTP_DIR/vsftpd_login.db
if \[ ! -f $PAM_DIR/vsftpd.bak \];then
    cp $PAM_DIR/vsftpd $PAM_DIR/vsftpd.bak
cat \>$PAM_DIR/vsftpd \<\<EOF
auth sufficient /lib64/security/pam_userdb.so db=$FTP_DIR/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=$FTP_DIR/vsftpd_login
EOF
fi
if \[ `cat /etc/passwd |grep -wc ftpuser` -eq 0 \];then
    #useradd -s /sbin/nologin ftpuser \>/dev/null 2\>\&1
    useradd -s /sbin/nologin ftpuser
fi
if \[ ! -f $FTP_DIR/vsftpd.conf.bak \];then
    \\cp $FTP_DIR/vsftpd.conf $FTP_DIR/vsftpd.conf.bak
fi
NUM=`grep -wc "guest_enable" $FTP_DIR/vsftpd.conf`
if \[ $NUM -eq 0 \];then
cat \>$FTP_DIR/vsftpd.conf \<\<EOF
#禁止匿名用户访问
anonymous_enable=NO
#允许本地用户登录FTP
local_enable=YES
#允许登陆用户有写权限
write_enable=YES
#设置本地用户的文件生成掩码为022,默认是077
local_umask=022
#激活目录信息,当远程用户更改目录时,将出现提示信息
dirmessage_enable=YES
#启用上传和下载日志功能
xferlog_enable=YES
#启用FTP数据端口的连接请求
connect_from_port_20=YES
#日志文件名和路径,默认值为/var/log/vsftpd.log
xferlog_file=/var/log/vsftpd.log
#使用标准的ftpd xferlog日志文件格式
xferlog_std_format=YES
#启用ASCII模式上传数据。默认值为NO
ascii_upload_enable=YES
#启用ASCII模式下载数据。默认值为NO
ascii_download_enable=YES
#使vsftpd处于独立启动监听端口模式
listen=YES
#启用虚拟用户
guest_enable=YES
#指定访问用户名
guest_username=ftpuser
#设置PAM使用的名称,默认值为$PAM_DIR/vsftpd
pam_service_name=vsftpd
#设置用户配置文件所在的目录
user_config_dir=$FTP_DIR/vsftpd_user_conf
#虚拟用户使用与本地用户相同的权限
virtual_use_local_privs=YES
#指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO
chroot_local_user=NO
#启用chroot_list_file配置项指定的用户列表文件。默认值为NO
chroot_list_enable=YES
#指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录
chroot_list_file=$FTP_DIR/vsftpd.chroot_list
EOF
fi
if \[ ! -d $FTP_DIR/vsftpd_user_conf \];then
    mkdir -p $FTP_DIR/vsftpd_user_conf
fi
if \[ ! -f $FTP_DIR/vsftpd.chroot_list \];then
    touch $FTP_DIR/vsftpd.chroot_list
fi
for q in `echo $USER`
do
grep -qw ${q} $FTP_DIR/vsftpd.chroot_list
if \[ $? -ne 0 \];then
cat \>\>$FTP_DIR/vsftpd.chroot_list \<\<EOF
$q
EOF
fi
done
for j in `echo $USER`
do
if \[ ! -f $FTP_DIR/vsftpd_user_conf/$j \];then
cat \>$FTP_DIR/vsftpd_user_conf/$j \<\<EOF
#指定用户的家目录
local_root=$FTP_HOME/$j
#允许登陆用户有写权限
write_enable=YES
#允许登录用户下载文件
anon_world_readable_only=YES
#允许登录用户有上传文件(非目录)的权限
anon_upload_enable=YES
#允许登录用户创建目录的权限
anon_mkdir_write_enable=YES
#允许登录用户更多于上传或者建立目录之外的权限,如删除或者重命名
anon_other_write_enable=YES
EOF
mkdir $FTP_HOME/$j
chown -R ftpuser.ftpuser $FTP_HOME
echo "`date +%Y/%m/%d-%T` $j Create Success" \>\> $FTP_DIR/create_list.txt
echo -e "\\033\[31m User $j Create Success,Please check the record file \>\> $FTP_DIR/create_list.txt\\033\[0m"
fi
done
if \[ $SYS_VERSION -eq 7 \];then
    systemctl restart vsftpd.service
    systemctl enable vsftpd.service
    systemctl stop firewalld.service
    systemctl disable firewalld.service
    sed -i "/SELINUX/s/enforcing/disabled/g" /etc/selinux/config
    setenforce 0
else
    service vsftpd restart
    chkconfig vsftpd on
    service iptables stop
    chkconfig iptables off
    sed -i "/SELINUX/s/enforcing/disabled/g" /etc/selinux/config
    setenforce 0
fi


文章源自小柒网-https://www.yangxingzhen.cn/1268.html文章源自小柒网-https://www.yangxingzhen.cn/1268.html
继续阅读

历史上的今天

5 月
20

赞(0)
未经允许不得转载:工具盒子 » Linux批量创建VSFTPD虚拟用户脚本