Pureftpd编译安装实录

来源:互联网 发布:迷失岛结局含义知乎 编辑:程序博客网 时间:2024/05/16 02:00

安装配置

下载源码:wget https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.44.tar.gz
解压:tar -xvzf pure-ftpd-1.0.44.tar.gz
跳转到目录:cd pure-ftpd-1.0.44/
配置:

./configure –prefix=/usr/local/pureftpd –with-tls –with-paranoidmsg –with-peruserlimits –with-puredb –with-quotas –with-ratios –with-virtualchroot

–with-paranoidmsg //如果登陆失败,显示原因。
–with-peruserlimits //每个用户并发限制
–with-puredb //支持虚拟用户,即虚拟用户数据库。
–with-quotas //启用虚拟配额。限制用户可以在其帐户中存储文件的最大数量。也可以限制总大小。
–with-virtualchroot //一般情况下,当用户使用chroot(-A和-a选项)后,不可能从他的根目录中离开。激活该功能将使得这成为可能:始终会有跟着一个符号连接,甚至他们指向的目录不在用户根目录中。这对于使用共享目录是非常有用的(例如,在每一个主目录中建立一个符号连接指向/var/incoming)。该功能默认不被激活。

configure: error: libmysqlclient is needed for MySQL support

yum install mysql-community-devel
编译:make
测试:make check
安装:make install

创建符号连接到bin目录:

ln -s /usr/local/pureftpd/bin/pure-pw /usr/local/bin/pw
ln -s /usr/local/pureftpd/sbin/pure-ftpwho /usr/local/bin/pure-ftpwho

修改配置,/usr/local/pureftpd /etc/pure-ftpd.conf:
NoAnonymous yes //不允许匿名登录
PureDB /usr/local/pureftpd/etc/pureftpd.pdb //虚拟用户数据库位置,默认/etc/pureftpd.pdb,如果更改了编译路径必须修改。
daemonize yes //后台运行
noChmod yes //用户不能通过客户端更改权限
createHomeDir yes //自动创建根目录
umask 133:022 //默认文件/文件夹权限644/755

添加操作文件所需的用户和组:

groupadd ftpgroup
useradd ftpuser -g ftpgroup -d /dev/null -s /sbin/nologin

注意:shell必须是在/etc/shells中。

修改日志生成:vi /etc/rsyslog.conf

ftp.* /var/log/pureftpd.log

日志定义可以在pureftpd的配置文件中修改
SyslogFacility ftp
重启日志服务
systemctl restart rsyslogd

创建虚拟用户
创建虚拟用户
-d : chroot user (recommended)
-D : don’t chroot user
-m : 自动更新虚拟用户数据库 /usr/local/pureftpd/etc/pureftpd.pdb

例如:pw useradd joe -u ftpuser -m -d /usr/local/apache/htdocs查看用户信息:pw show joe更改用户:pw usermod joe -u ftpuser删除用户:pw userdel joe更改用户密码:pw passwd joe手动生成数据库:pure-pw mkdb列出所有用户:pw list

常见问题

连接无反应,无日志,添加ftp协议允许。

firewall-cmd –add-service=ftp –permanent

重载配置:firewall-cmd –reload

客户端登陆出现
响应: 530 Login authentication failed
日志/var/log/pureftpd.log出现

[INFO] New connection from x.x.x.x
[WARNING] Can’t login as [joe]: account disabled
[INFO] Logout.

这是因为默认限制了最低uid,更改配置文件或用户id,使minuid低于uid
MinUID 10

[ERROR] Unable to read the indexed puredb file (or old format detected) - Try pure-pw mkdb

这是因为没有生成pureftpd.pdb文件,运行pure-pw mkdb生成,或者在更改虚拟数据时使用-m参数自动更新虚拟用户数据库。

生成TLS证书(详见README.TLS)

mkdir -p /etc/ssl/privateopenssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048openssl req -x509 -days 1095 -nodes -newkey rsa:2048 -sha256 -keyout \  /etc/ssl/private/pure-ftpd.pem \  -out /etc/ssl/private/pure-ftpd.pemchmod 600 /etc/ssl/private/*.pem

这里证书1095天有效,编辑配置文件:
TLS 1 //加密和非加密均可连接
客户端设置TLS后出现一直在读取目录列表
客户端反馈状态: 读取目录列表… // Entering Passive Mode
添加防火墙允许:

firewall-cmd –permanent –add-port=45000-50000/tcp

端口范围见配置文件:PassivePortRange 45000 50000
重载配置:firewall-cmd –reload

开机启动服务

http://www.jinbuguo.com/systemd/systemd.service.html

vi /usr/lib/systemd/system/pureftpd.service

[Unit]
Description=Pure-FTPd FTP server
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/usr/local/pureftpd/sbin/pure-ftpd /usr/local/pureftpd/etc/pure-ftpd.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID

[Install]
WantedBy=multi-user.target

设置开启启动:systemctl enable pureftpd

1 0
原创粉丝点击