您的位置:首页 > 编程语言 > PHP开发

Pureftpd编译安装实录

2017-01-11 14:50 549 查看

安装配置

下载源码: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/private
openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048
openssl req -x509 -days 1095 -nodes -newkey rsa:2048 -sha256 -keyout \
/etc/ssl/private/pure-ftpd.pem \
-out /etc/ssl/private/pure-ftpd.pem
chmod 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息