请选择 进入手机版 | 继续访问电脑版

shell脚本一键搭建vsftpd

[复制链接]
查看661 | 回复0 | 2020-8-5 01:58:06 | 显示全部楼层 |阅读模式
  1. #!/bin/bash
  2. ######################################
  3. #   Time : 2020年06月29日19:44:50    #
  4. #   Project : Auto_config_vsftpd     #
  5. ######################################
  6. FTP_SYS_USR="ftpuser"
  7. FTP_VIR_USR="ftpus1"
  8. FTP_DIR="/etc/vsftpd/"
  9. FTP_FILES="vsftpd.conf"
  10. FTP_DB="vsftpd_login"
  11. FTP_YUM="yum -y install"
  12. FTP_BAK="/data/ftp-backup"
  13. #read -p "请输入您的公网IP地址:" EXTER_IP

  14. print_menu(){
  15.         echo -e "\033[36mPlease Select Install Menu follow:\033[0m"
  16.         echo ""
  17.         echo -e "\033[33m)Check if FTP is currently installed ???  \033[1m"
  18.         echo -e "\033[35m1)安装基本验证ftp\033[1m"
  19.         echo "2) 添加新的系统ftp用户"
  20.         echo "3) 安装虚拟用户ftp"
  21.         echo "4) 添加新的ftp虚拟用户"
  22.         echo "5) ========"
  23.         echo -e "\033[31mUsage: { /bin/sh $0 1|2|3|4|help}\033[0m"
  24.         exit
  25. }

  26. Install_ftp_basic(){
  27. #if [ $# -eq 0 ];then
  28. #    echo -e "\033[32mUsage:{/bin/bash $0 user1|user2|help}\033[0m"
  29. #    echo -e "\033[32m可一次添加多个vsftpd虚拟用户\033[0m"
  30. #    exit 0
  31. #fi
  32. if [ ! -d $FTP_DIR ];then
  33.         $FTP_YUM vsftpd ftp
  34.         rpm -qa | grep vsftpd
  35. else
  36.     exit 1
  37. fi
  38. if [ `echo $?` != 0 ];then
  39.      exit 10
  40. fi
  41. mkdir -p $FTP_BAK
  42. cp -rp $FTP_DIR  $FTP_BAK/
  43. read -p "请输入您的公网IP地址:" EXTER_IP
  44. cat>>${FTP_DIR}/vsftpd.conf <<EOF
  45. local_root=/var/ftp/
  46. chroot_local_user=YES
  47. allow_writeable_chroot=YES

  48. pasv_enable=YES
  49. pasv_min_port=5000
  50. pasv_max_port=6000
  51. pasv_address=$EXTER_IP
  52. EOF
  53. useradd -d /var/ftp/ ftpus1 && echo "ftpus1@123" | passwd ftpus1 --stdin
  54. chmod 777 /var/ftp/

  55. sed -i 's#anonymous_enable=YES#anonymous_enable=NO#' ${FTP_DIR}/${FTP_FILES}
  56. sed -i "s#listen_ipv6=YES#listen_ipv6=NO#" ${FTP_DIR}/${FTP_FILES}
  57. sed -i "s#listen=NO#listen=YES#" ${FTP_DIR}/${FTP_FILES}

  58. systemctl start vsftpd
  59. echo -e "\033[35m vsftpd被动模式已开启,端口为5000-5010请打开安全组或防火墙运许通行--------- \033[0m"
  60. echo -e "\033[36m vsftpd当前模式为普通用户验证,请使用系统中的用户账户密码登录,默认创建了一个系统用户:ftpus1 密码是:ftpus1@123 ------- \033[0m"
  61. echo `ss -ntlp | grep ftp`
  62. }
  63. BASIC_ADDUSER(){

  64. read -p "请输入要添加的系统ftp新用户" SYSTEM_USRS
  65. useradd -d /home/${SYSTEM_USRS}  ${SYSTEM_USRS} && echo "${SYSTEM_USRS}@123" | passwd ${SYSTEM_USRS} --stdin
  66. if [ `echo $?` != 0 ];then
  67.      exit 10

  68. else
  69.      echo -e "\033[35m vsftpd新用户已添加: ${SYSTEM_USRS}  密码默认设置为:${SYSTEM_USRS}@123 --------- \033[0m"

  70. fi
  71. }


  72. Install_ftp_vir(){
  73. vir_def_ftpuser=ftpus1

  74. if [ ! -d $FTP_DIR ];then
  75.         $FTP_YUM vsftpd ftp
  76.         rpm -qa | grep vsftpd
  77. fi
  78. $FTP_YUM  pam  libdb-utils libdb-devel >>/dev/null
  79. if [ `echo $?` != 0 ];then
  80.      exit 10
  81. fi
  82. mkdir -p ${FTP_DIR}/vsftpd_user_conf/
  83. touch ${FTP_DIR}/${FTP_SYS_USR}s.txt
  84. for FUSER in $vir_def_ftpuser
  85. do
  86. grep "${FUSR}" ${FTP_DIR}/${FTP_SYS_USR}s.txt
  87. if [ $? -ne 0 ];then
  88. cat>>${FTP_DIR}/${FTP_SYS_USR}s.txt<<EOF
  89. ${vir_def_ftpuser}
  90. ${vir_def_ftpuser}111
  91. EOF
  92. fi
  93. cat>${FTP_DIR}/vsftpd_user_conf/${vir_def_ftpuser}<<EOF
  94. local_root=/home/${FTP_SYS_USR}/${vir_def_ftpuser}
  95. write_enable=YES
  96. anon_world_readable_only=YES
  97. anon_upload_enable=YES
  98. anon_mkdir_write_enable=YES
  99. anon_other_write_enable=YES
  100. EOF
  101. mkdir -p /home/${FTP_SYS_USR}/${vir_def_ftpuser}
  102. done
  103. local_root=/var/ftp/
  104. chroot_local_user=YES
  105. allow_writeable_chroot=YES
  106. db_load -T -t hash -f ${FTP_DIR}/${FTP_SYS_USR}s.txt ${FTP_DIR}/${FTP_DB}.db
  107. chmod 700 ${FTP_DIR}/${FTP_DB}.db

  108. cat>/etc/pam.d/vsftpd<<EOF
  109. auth required       pam_userdb.so db=${FTP_DIR}/${FTP_DB}
  110. account required    pam_userdb.so db=${FTP_DIR}/${FTP_DB}
  111. EOF

  112. useradd -s /sbin/nologin ${FTP_SYS_USR} >>/dev/null 2>&1

  113. grep "guest_enable" ${FTP_DIR}/vsftpd.conf >>/dev/null 2>&1
  114. if [ $? -ne 0 ];then
  115. read -p "请输入您的公网IP地址:" EXTER_IP
  116. cat>>${FTP_DIR}/vsftpd.conf <<EOF
  117. guest_enable=YES
  118. guest_username=${FTP_SYS_USR}
  119. chroot_local_user=YES
  120. local_root=/var/ftp/
  121. chroot_local_user=YES
  122. allow_writeable_chroot=YES

  123. pam_service_name=vsftpd
  124. user_config_dir=${FTP_DIR}/vsftpd_user_conf
  125. virtual_use_local_privs=YES
  126. pasv_enable=YES
  127. pasv_min_port=5000
  128. pasv_max_port=6000
  129. pasv_address=$EXTER_IP
  130. EOF
  131. sed -i 's#anonymous_enable=YES#anonymous_enable=NO#' ${FTP_DIR}/${FTP_FILES}
  132. sed -i "s#listen_ipv6=YES#listen_ipv6=NO#" ${FTP_DIR}/${FTP_FILES}
  133. sed -i "s#listen=NO#listen=YES#" ${FTP_DIR}/${FTP_FILES}
  134. fi

  135. chown -R ${FTP_SYS_USR}:${FTP_SYS_USR} /home/${FTP_SYS_USR}
  136. echo "默认创建了一个用户 用户名:${vir_def_ftpuser} 密码是:${vir_def_ftpuser}111 "
  137. systemctl restart vsftpd
  138. }

  139. VIR_USER_ADD(){

  140. read -p "请输入要添加的ftp新用户" VIRUSER_ADD

  141. grep "${VIRUSER_ADD}" ${FTP_DIR}/${FTP_SYS_USR}s.txt
  142. if [ $? -ne 0 ];then
  143. cat>>${FTP_DIR}/${FTP_SYS_USR}s.txt<<EOF
  144. ${VIRUSER_ADD}
  145. ${VIRUSER_ADD}111
  146. EOF
  147. fi
  148. db_load -T -t hash -f ${FTP_DIR}/${FTP_SYS_USR}s.txt ${FTP_DIR}/${FTP_DB}.db
  149. cat>${FTP_DIR}/vsftpd_user_conf/${VIRUSER_ADD}<<EOF
  150. local_root=/home/${FTP_SYS_USR}/${VIRUSER_ADD}
  151. write_enable=YES
  152. anon_world_readable_only=YES
  153. anon_upload_enable=YES
  154. anon_mkdir_write_enable=YES
  155. anon_other_write_enable=YES
  156. EOF
  157. mkdir -p /home/${FTP_SYS_USR}/${VIRUSER_ADD}
  158. chown -R ${FTP_SYS_USR}:${FTP_SYS_USR} /home/${FTP_SYS_USR}

  159. echo -e "\033[35m vsftpd新用户: ${VIRUSER_ADD} 密码默认设置为:${VIRUSER_ADD}111 --------- \033[0m"
  160. }




  161. #if [ $? -eq 0 ];then
  162. #   echo -e "\033[35m ----vsftpd useradd virtual_user '${FTP_VIR_USR}' 密码为: ${FTP_VIR_USR}111   successful!--------- \033[0m"
  163. #   echo -e "\033[35m vsftpd被动模式已开启,端口为5000-6000请打开安全组或防火墙运许通行--------- \033[0m"
  164. #else
  165. #        echo "is field! "
  166. #fi

  167. case $1 in

  168.         1)
  169.                 Install_ftp_basic $1
  170.         ;;
  171.         2)
  172.                 BASIC_ADDUSER $1
  173.         ;;
  174.         3)
  175.                 Install_ftp_vir $1
  176.         ;;
  177.         4)
  178.                 VIR_USER_ADD $1
  179.         ;;
  180.         *)
  181.                 print_menu
  182.         ;;
  183. esac
复制代码
# bash vsftpd-v1.sh    直接运行脚本即可  根据回显 选择自己需要的功能 在脚本名后加 数字即可
###以下为回显内容
Please Select Install Menu follow:

)Check if FTP is currently installed ???  
1)安装基本验证ftp
2) 添加新的系统ftp用户
3) 安装虚拟用户ftp
4) 添加新的ftp虚拟用户
5) ========
Usage: { /bin/sh vsftpd-v1.sh 1|2|3|4|help}



注意:
最好在新机器中运行,以免受环境的干扰,必须要可联网的机器





上一篇:samba权限问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

2

主题

2

帖子

105

积分

注册会员

Rank: 2

积分
105