Windows客户端设置:IE属性-->高级-->[使用被动FTP... ]这项,取消选择。+++++++++++++++++++++++++++++++++++ #!/bin/bash #vsftp shell script #2019-09-30 #所有用户的主目录在一个目录下面,相互独立。 #public_dir目录用于各用户交换文件 #Version 1.0 function chk_base() { clear date echo "#############################" echo "# Centos 7 安装 Vsftp 脚本 #" echo "#############################" for i in `seq -w 3 -1 0` do echo -ne "\b\b\b\b$i 秒" sleep 1 done echo "" MYVER=`cat /etc/redhat-release |awk '{print $4}'| awk -F [.] '{print $1}'` expr 1 + $MYVER &>/dev/null if [ $? -ne 0 ];then echo "请在 7 版本的系统里面运行该脚本....." exit fi if [ $UID -ne 0 ]; then echo "请用 root 用户运行该脚本...." exit fi echo '网络检测中..................' echo ' ' sleep 1 #检测有无外网 ping -c 1 114.114.114.114 > /dev/null 2>&1 if [ $? -eq 0 ];then echo '网络正常,程序将继续运行。' sleep 1 else echo '正在进行第二次网络检测,请稍候.........' sleep 1 curl www.baidu.com >/dev/null 2>&1 if [ $? -ne 0 ]; then echo '检测到网络连接有异常,请检查您的网络设置.....' exit else echo '' echo '网络正常,程序将继续运行。' sleep 1 fi fi } chk_base ftpmu="/ftpser" VSFTP_F="/etc/vsftpd/vsftpd.conf" mkdir -p $ftpmu echo '检测系统环境...' sleep 2 rpm -q vsftpd &> /dev/unll if [ $? != 0 ]; then #判断系统是否安装程序 echo "1.正在安装Vsftp应用程序" yum install -y openssl vsftpd &> /dev/unll read -p "请输FTP目录名称(myftp): " bdir if [ ! -n "$bdir" ];then loginpath=myftp #不输入内容,默认为myftp目录 else loginpath=$bdir fi read -p "请输入需要创建的用户: " user1 while : ;do if [ ! -n "$user1" ];then echo "用户名不能为空,请重新输入。" read -p "请输入需要创建的用户: " user1 else id $user1 &> /dev/null if [ $? -ne 0 ];then useradd -s /sbin/nologin -d $ftpmu/$user1\_$loginpath $user1 &> /dev/null break else echo "该用户已存在,请重新输入。" read -p "请输入需要创建的用户: " user1 fi fi done stty -echo read -p "请输入用户密码: " paswd stty echo while : ;do if [ ${#paswd} -lt 6 ];then echo -e "\n密码字符 至少6位" stty -echo read -p "请输入用户密码:" paswd stty echo else echo -e "\n" break fi done jmpwd_a=`echo $paswd|openssl base64` #加密密码字符串 echo "2.修改配置文件" sleep 2 sed -i 's/listen=NO/listen=YES/' $VSFTP_F # && echo '允许监听IPv4.' sleep 1 sed -i 's/anonymous_enable\=YES/anonymous_enable=NO/' $VSFTP_F && echo '3.关闭匿名用户登录' sleep 1 #所有用户都被限制在其主目录下 echo "chroot_local_user=YES" >> $VSFTP_F && echo "4.开启用户登录" echo "allow_writeable_chroot=YES" >> $VSFTP_F sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' $VSFTP_F # && echo '关闭监听IPv6.' echo 'pasv_enable=NO' >> $VSFTP_F # && echo '关闭服务的被动模式.' sleep 1 echo 'port_enable=YES' >> $VSFTP_F && echo '5.打开服务的主动模式' echo "local_root=$ftpmu" >> $VSFTP_F #用户的主目录 #ftp服务器不执行DNS解析,提高访问速度。 echo 'reverse_lookup_enable=NO' >>$VSFTP_F sleep 1 mkdir -p $ftpmu/public_dir #创建中转目录,用于各用户之间交换数据。 chmod 777 $ftpmu/public_dir echo "$paswd" | passwd --stdin $user1 &> /dev/null && echo "6.创建用户$user1 设置密码" echo "$user1 $jmpwd_a $ftpmu/$user1\_$loginpath" >>/usr/ftp.ps #将用户的信息写入文件 sleep 2 systemctl start vsftpd >/tmp/vsftp.start.log 2>&1 if [ $? -ne 0 ]; then echo "vsftpd 启动失败,请检查日志:/tmp/vsftp.start.log" exit else echo "7.vsftpd 启动服务完成。" sleep 1 fi systemctl enable vsftpd >/tmp/vsftp.enable.log 2>&1 echo -e "\033[31mWindows客户端设置:IE属性-->高级-->[使用被动FTP... ]这项,取消选择。\033[0m" ######################################################## else echo "1.程序已安装" yum install -y openssl &> /dev/null sleep 1 read -p "2.添加新用户: " user2 while : ;do if [ ! -n "$user2" ];then echo "用户名不能为空,请重新输入。" read -p "请输入需要创建的用户: " user2 else id $user2 &> /dev/null if [ $? -ne 0 ];then break else echo "该用户已存在,请重新输入。" read -p "请输入需要创建的用户: " user2 fi fi done stty -echo read -p "3.请输入新用户密码: " newpwd stty echo while : ;do if [ ${#newpwd} -lt 6 ];then echo -e "\n密码字符 至少6位" stty -echo read -p "3.请输入新用户密码:" newpwd stty echo else break fi done jmpwd=`echo $newpwd|openssl base64` sleep 1 echo -e "\n" read -p "4.请输入新用户 FTP 目录: " newpath while : ;do if [ ! -n "$newpath" ];then echo "FTP目录名称不能为空,请重新输入。" read -p "请输FTP目录名称: " newpath else break fi done useradd -s /sbin/nologin -d $ftpmu/$user2\_$newpath $user2 &> /dev/null echo "$newpwd" | passwd --stdin $user2 &> /dev/null echo "$user2 $jmpwd $ftpmu/$user2_$newpath" >>/usr/ftp.ps sleep 1 systemctl restart vsftpd && echo "服务已重启..." fi