这篇文章主要介绍为自动创建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
若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!如本文“对您有用”,欢迎随意打赏,谢谢!
继续阅读
Wechat
微信扫一扫,加我!

我的微信
微信号已复制
微信公众号
微信扫一扫,关注我!

我的公众号
公众号已复制
亲测,写的不错,感谢博主