#!/bin/sh
function check()
{
if [ $? == 0 ]
then
echo -e "\033[32m${1}======>完成\033[0m"
else
echo -e "\033[31m${1}=====>错误,请检查\033[0m"
fi
}
function pureftp()
{
read -p '请输入要设置的账号:' a
read -p '请输入要设置的密码:' bb
#echo "默认账号是sb密码也是sb,需要请把read前面的#注释掉"
#a=sb
#b=sb
OSv=`cat /etc/redhat-release|cut -c 22`
check "系统版本"
echo "系统版本是`cat /etc/redhat-release`"
cat > .repo.repo <<END
[baseos]
name=baseos
baseurl=https://mirrors.163.com/centos/$OSv/BaseOS/x86_64/os/
gpgcheck=0
[appstream]
name=appstream
baseurl=https://mirrors.163.com/centos/$OSv/AppStream/x86_64/os/
gpgcheck=0
[epel]
name=epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/$OSv/Everything/x86_64/
gpgcheck=0
END
check "生成软件仓库文件"
if [ ! -f /etc/yum.repos.d/epel.repo ];then 
  yum install -y epel-release
fi
check "安装epel"
#默认的Centos yum源并不包含pure-ftpd,需要安装epel扩展源
if [ ! -f /etc/pure-ftpd/pure-ftpd.conf ]; then
  yum install -y pure-ftpd
fi
check "安装pure-ftp"
if [ ! -f /usr/bin/expect ]; then
yum -y install expect
fi
check "安装expect"
#安装
sed -i 's/^# PureDB/PureDB \/etc\/pure-ftpd\/pureftpd.pdb/g' /etc/pure-ftpd/pure-ftpd.conf
check "替换配置文件"
#sed  '100aFileSystemCharset UTF-8' /etc/pure-ftpd/pure-ftpd.conf -i
check "增加客户端以UTF8编码显示"
#sed -i '102aClientCharset GB2312' /etc/pure-ftpd/pure-ftpd.conf
check "客户端以GB2312编码上传文件"
#找到pureftpd.pdb这行,把行首的#删除
systemctl stop vsftpd
check "关闭vsftp服务"
systemctl restart pure-ftpd
check "重启pure服务"
#重启服务
mkdir -p /data/ftp
check "创建数据文件夹/data/ftp"
#创建数据
if [ `cat /etc/passwd|grep pure-ftp|awk -F ":" '{print $1}'` == "pure-ftp" ];then
echo -e "\033[31m检测到pure-ftp用户已存在,跳过此步骤\033[0m"
else useradd -u 1010 pure-ftp
fi
echo "为了安全,pure-ftpd使用的账号并非linux的系统账号,而是虚拟账号"
check "创建pure-ftp"
chown -R pure-ftp:pure-ftp /data/ftp
check "更改拥有者 (-R递归)"
expect <<EOF
     set timeout 10
     spawn pure-pw useradd $a -u pure-ftp  -d /data/ftp
       expect {
    	        "Pass" { send "$bb\n";exp_continue }
        	"Enter" { send "$bb\n" }
              }
       expect "]#" { send "echo wocao\n" }
EOF
check "交互式输入账号密码"
#创建虚拟账户,-u是将虚拟用户ftp_usera与系统用户pure-ftp关联在一起,也就是说,使用ftp_usera账号登录ftp后,会以pure-ftp的身份来读取和下载文件,
#-d是指定ftp_usera账户的家目录,这样可以使用户ftp_usera只能访问其家目录/data/ftp/
pure-pw mkdb
check "#创建用户信息数据库文件"
pure-pw list |grep $a
check "列出当前账号 和用户主目录"
echo -e "\033[32m创建账号成功 \033[0m"
echo -e "\033[32m账号是:$a\033[0m"
echo -e "\033[31m密码是:挖槽挖槽你个小垃圾没有实力搞偷袭?\033[0m"
#测试命令  lftp $a@127.0.0.1
if [ `systemctl is-active firewalld.service` != inactive ];then
	firewall-cmd --remove-service=ftp --permanent
	firewall-cmd --remove-service=ftp
	check "防火墙放行"
fi
setsebool -P allow_ftpd_full_access=1
check "设置ftp用户可以有所有权限"
setsebool -P tftp_home_dir on
check "设置ftp可以使用home目录"
systemctl restart pure-ftpd
check "重启pure服务"
echo "                              ----- 2022年9月22日16:27:09"
}
pureftp

更多推荐