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

小柒助手 Shell1 97,9134字数 1154阅读3分50秒阅读模式

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

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

  1. #!/bin/bash
  2. #2017-5-20 13:14:00
  3. #Author blog:
  4. # https://www.yangxingzhen.cn
  5. #Author site:
  6. # https://www.yangxingzhen.cn/sitemap.html
  7. #Author mirrors site:
  8. # https://mirrors.yangxingzhen.com
  9. #About the Author
  10. # BY:、、、小柒
  11. # QQ:675583110
  12. #Create vsftpd virtual user(支持创建单个用户跟多个用户)
  13. #This script applies to Centos 6.x and Centos 7.x
  14. SYS_VERSION=`awk -F. '{print $1}' /etc/redhat-release |awk '{print $NF}'`
  15. FTP_DIR="/etc/vsftpd"
  16. PASSWD="yangxingzhen.com"
  17. PAM_DIR="/etc/pam.d"
  18. FTP_HOME="/home/ftpuser"
  19. USER="$*"
  20. if [ $# -eq 0 ];then
  21.     echo -e "\033[32m Please enter the username that needs to be create \033[0m"
  22.     echo -e "\033[33m Usage: sh $0 {admin|admin123|help} \033[0m"
  23.     exit 0
  24. elif [[ $USER == "help" ]];then
  25.     echo -e "\033[32m Please enter the username that needs to be create \033[0m"
  26.     echo -e "\033[33m Usage: sh $0 {admin|admin123|help} \033[0m"
  27.     exit 0
  28. fi
  29. if [ $SYS_VERSION -eq 7 ];then
  30.     echo -e "\033[32m Your system version is CentOS `awk '{print $(NF-1)}' /etc/redhat-release` \033[0m"
  31.     if [ ! -f $FTP_DIR/vsftpd.conf ];then
  32.         yum -y install vsftpd pam* libdb-utils libdb*
  33.     else
  34.         echo -e "\033[33m This software has been installed \033[0m"
  35.     fi
  36. else
  37.     echo -e "\033[32m Your system version is CentOS `awk '{print $(NF-1)}' /etc/redhat-release` \033[0m"
  38.     if [ ! -f $FTP_DIR/vsftpd.conf ];then
  39.         yum -y install vsftpd db4*
  40.     else
  41.         echo -e "\033[33m This software has been installed \033[0m"
  42.     fi
  43. fi
  44. if [ ! -f $FTP_DIR/ftpusers.txt ];then
  45.     touch $FTP_DIR/ftpusers.txt
  46. fi
  47. for i in `echo $USER`
  48. do
  49. grep -qw "${i}" $FTP_DIR/ftpusers.txt
  50. if [ $? -ne 0 ];then
  51. cat >>$FTP_DIR/ftpusers.txt <<EOF
  52. $i
  53. $PASSWD
  54. EOF
  55. else
  56.     echo -e "\033[34m user $i already exists,Please reenter the username \033[0m"
  57. fi
  58. done
  59. db_load -T -t hash -f $FTP_DIR/ftpusers.txt $FTP_DIR/vsftpd_login.db
  60. chmod 700 $FTP_DIR/vsftpd_login.db
  61. if [ ! -f $PAM_DIR/vsftpd.bak ];then
  62.     cp $PAM_DIR/vsftpd $PAM_DIR/vsftpd.bak
  63. cat >$PAM_DIR/vsftpd <<EOF
  64. auth sufficient /lib64/security/pam_userdb.so db=$FTP_DIR/vsftpd_login
  65. account sufficient /lib64/security/pam_userdb.so db=$FTP_DIR/vsftpd_login
  66. EOF
  67. fi
  68. if [ `cat /etc/passwd |grep -wc ftpuser` -eq 0 ];then
  69.     #useradd -s /sbin/nologin ftpuser >/dev/null 2>&1
  70.     useradd -s /sbin/nologin ftpuser
  71. fi
  72. if [ ! -f $FTP_DIR/vsftpd.conf.bak ];then
  73.     \cp $FTP_DIR/vsftpd.conf $FTP_DIR/vsftpd.conf.bak
  74. fi
  75. NUM=`grep -wc "guest_enable" $FTP_DIR/vsftpd.conf`
  76. if [ $NUM -eq 0 ];then
  77. cat >$FTP_DIR/vsftpd.conf <<EOF
  78. #禁止匿名用户访问
  79. anonymous_enable=NO
  80. #允许本地用户登录FTP
  81. local_enable=YES
  82. #允许登陆用户有写权限
  83. write_enable=YES
  84. #设置本地用户的文件生成掩码为022,默认是077
  85. local_umask=022
  86. #激活目录信息,当远程用户更改目录时,将出现提示信息
  87. dirmessage_enable=YES
  88. #启用上传和下载日志功能
  89. xferlog_enable=YES
  90. #启用FTP数据端口的连接请求
  91. connect_from_port_20=YES
  92. #日志文件名和路径,默认值为/var/log/vsftpd.log
  93. xferlog_file=/var/log/vsftpd.log
  94. #使用标准的ftpd xferlog日志文件格式
  95. xferlog_std_format=YES
  96. #启用ASCII模式上传数据。默认值为NO
  97. ascii_upload_enable=YES
  98. #启用ASCII模式下载数据。默认值为NO
  99. ascii_download_enable=YES
  100. #使vsftpd处于独立启动监听端口模式
  101. listen=YES
  102. #启用虚拟用户
  103. guest_enable=YES
  104. #指定访问用户名
  105. guest_username=ftpuser
  106. #设置PAM使用的名称,默认值为$PAM_DIR/vsftpd
  107. pam_service_name=vsftpd
  108. #设置用户配置文件所在的目录
  109. user_config_dir=$FTP_DIR/vsftpd_user_conf
  110. #虚拟用户使用与本地用户相同的权限
  111. virtual_use_local_privs=YES
  112. #指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO
  113. chroot_local_user=NO
  114. #启用chroot_list_file配置项指定的用户列表文件。默认值为NO
  115. chroot_list_enable=YES
  116. #指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录
  117. chroot_list_file=$FTP_DIR/vsftpd.chroot_list
  118. EOF
  119. fi
  120. if [ ! -d $FTP_DIR/vsftpd_user_conf ];then
  121.     mkdir -p $FTP_DIR/vsftpd_user_conf
  122. fi
  123. if [ ! -f $FTP_DIR/vsftpd.chroot_list ];then
  124.     touch $FTP_DIR/vsftpd.chroot_list
  125. fi
  126. for q in `echo $USER`
  127. do
  128. grep -qw ${q} $FTP_DIR/vsftpd.chroot_list
  129. if [ $? -ne 0 ];then
  130. cat >>$FTP_DIR/vsftpd.chroot_list <<EOF
  131. $q
  132. EOF
  133. fi
  134. done
  135. for j in `echo $USER`
  136. do
  137. if [ ! -f $FTP_DIR/vsftpd_user_conf/$j ];then
  138. cat >$FTP_DIR/vsftpd_user_conf/$j <<EOF
  139. #指定用户的家目录
  140. local_root=$FTP_HOME/$j
  141. #允许登陆用户有写权限
  142. write_enable=YES
  143. #允许登录用户下载文件
  144. anon_world_readable_only=YES
  145. #允许登录用户有上传文件(非目录)的权限
  146. anon_upload_enable=YES
  147. #允许登录用户创建目录的权限
  148. anon_mkdir_write_enable=YES
  149. #允许登录用户更多于上传或者建立目录之外的权限,如删除或者重命名
  150. anon_other_write_enable=YES
  151. EOF
  152. mkdir $FTP_HOME/$j
  153. chown -R ftpuser.ftpuser $FTP_HOME
  154. echo "`date +%Y/%m/%d-%T` $j Create Success" >> $FTP_DIR/create_list.txt
  155. echo -e "\033[31m User $j Create Success,Please check the record file >> $FTP_DIR/create_list.txt\033[0m"
  156. fi
  157. done
  158. if [ $SYS_VERSION -eq 7 ];then
  159.     systemctl restart vsftpd.service
  160.     systemctl enable vsftpd.service
  161.     systemctl stop firewalld.service
  162.     systemctl disable firewalld.service
  163.     sed -i "/SELINUX/s/enforcing/disabled/g" /etc/selinux/config
  164.     setenforce 0
  165. else
  166.     service vsftpd restart
  167.     chkconfig vsftpd on
  168.     service iptables stop
  169.     chkconfig iptables off
  170.     sed -i "/SELINUX/s/enforcing/disabled/g" /etc/selinux/config
  171.     setenforce 0
  172. fi
文章源自小柒网-https://www.yangxingzhen.cn/1268.html文章源自小柒网-https://www.yangxingzhen.cn/1268.html

若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!如本文“对您有用”,欢迎随意打赏,谢谢!

继续阅读
Wechat
微信扫一扫,加我!
weinxin
我的微信
微信号已复制
微信公众号
微信扫一扫,关注我!
weinxin
我的公众号
公众号已复制
Shell最后更新:2022-12-5
小柒助手
  • 本文由 小柒助手 发表于 2018年5月20日 13:47:33
  • 声明:本站所有文章,如无特殊说明或标注,本站文章均为原创。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。转载请务必保留本文链接:https://www.yangxingzhen.cn/1268.html
    • 运维老司机
      运维老司机 6

      亲测,写的不错,感谢博主 :razz:

    匿名

    发表评论

    匿名网友
    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

    拖动滑块以完成验证
    加载中...