简介
使用pureftpd搭建FTP服务
Pure-FTP:官方网站
一、下载安装
# 安装依赖
yum install -y openssl openssl-devel
# 创建并进入下载目录
mkdir -p /home/softs && cd /home/softs
# 下载源码包 https://download.pureftpd.org/pub/pure-ftpd/releases/
wget https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.49.tar.gz
# 解压
tar -zxvf pure-ftpd-1.0.49.tar.gz
# 进入目录
cd pure-ftpd-1.0.49
# 配置 参考:https://download.pureftpd.org/pub/pure-ftpd/doc/README
./configure --prefix=/usr/local/pureftpd CFLAGS=-O2 --with-puredb --with-quotas --with-cookie --with-virtualhosts --with-diraliases --with-sysquotas --with-ratios --with-altlog --with-paranoidmsg --with-shadow --with-welcomemsg --with-throttling --with-uploadscript --with-language=english --with-rfc2640 --with-ftpwho --with-tls
# 编译安装
make
make install
二、配置
# 修改配置文件
vi /usr/local/pureftpd/etc/pure-ftpd.conf
# 修改
# AnonymousCantUpload 拒绝匿名用户上传
AnonymousCantUpload yes
# 末尾增加
# 用户数据库
PureDB /usr/local/pureftpd/etc/pureftpd.pdb
# 被动模式端口
PassivePortRange 30000 50000
# PID文件
PIDFile /var/run/pure-ftpd.pid
# 创建init.d文件
vi /etc/init.d/pureftpd
/etc/init.d/pureftpd内容:
#!/bin/bash
#
# chkconfig: 2345 85 15
# description: Pure-FTPd is an FTP server daemon based upon Troll-FTPd
# processname: pure-ftpd
### BEGIN INIT INFO
# Provides: pureftpd
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts pureftpd server
# Description: starts pureftpd server
### END INIT INFO
# Pure-FTPd Settings
PURE_FTPD="/usr/local/pureftpd/sbin/pure-ftpd"
PURE_CONF="/usr/local/pureftpd/etc/pure-ftpd.conf"
PURE_PID="/var/run/pure-ftpd.pid"
RETVAL=0
prog="Pure-FTPd"
start() {
echo -n $"Starting $prog... "
$PURE_FTPD $PURE_CONF
if [ "$?" = 0 ] ; then
echo " done"
else
echo " failed"
fi
}
stop() {
echo -n $"Stopping $prog... "
if [ ! -f "$PURE_PID" ]; then
echo -n $"$prog is not running."
exit 1
fi
kill `cat $PURE_PID`
if [ "$?" = 0 ] ; then
echo " done"
else
echo " failed"
fi
}
restart(){
echo $"Restarting $prog..."
$0 stop
sleep 2
$0 start
}
status(){
if [ -f "$PURE_PID" ]; then
echo $"$prog is running."
else
echo $"$prog is not running."
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
echo $"Usage: $0 {start|stop|restart}"
esac
# 修改权限
chmod +x /etc/init.d/pureftpd
# 创建密码文件
touch /usr/local/pureftpd/etc/pureftpd.passwd
# 创建数据库文件
touch /usr/local/pureftpd/etc/pureftpd.pdb
# 启动
/etc/init.d/pureftpd start
# 设置开机自动启动
chkconfig pureftpd on
# 创建用户管理软连接
ln -s /usr/local/pureftpd/bin/pure-pw /bin/pure-pw
三、创建用户
pureftp的用户是映射系统用户的,所以建立两个系统用户一个只读一个可写
# 创建FTP目录
mkdir -p /home/ftp_root
# 创建用户组
groupadd ftpusers
# 创建两个用户
useradd ftpread -g ftpusers -d /home/ftp_root -s /sbin/nologin
useradd ftpwrite -g ftpusers -d /home/ftp_root -s /sbin/nologin
# 设置目录所属
chown ftpwrite:ftpusers /home/ftp_root/
# 设置权限 所属用户可写 所属组只读
chmod 755 /home/ftp_root/
# 创建pureftp虚拟用户 管理员 使用-u映射读写权限系统用户
pure-pw useradd admin -u ftpwrite -g ftpusers -d /home/ftp_root/
# 创建pureftp虚拟用户 访客 使用-u映射只读权限系统用户
pure-pw useradd guest -u ftpread -g ftpusers -d /home/ftp_root/
# 创建用户数据库
pure-pw mkdb
# 查看用户
pure-pw list
# 配置匿名用户目录
usermod -d /home/ftp_root ftp
四、配置防火墙
# 启动服务
systemctl start firewalld.service
# 放行20 21 30000-50000端口
firewall-cmd --zone=public --add-port=20/tcp --permanent
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=30000-50000/tcp --permanent
# 重载配置
firewall-cmd --reload
# 查看配置
firewall-cmd --list-all
# 开启自动启动
systemctl enable firewalld.service