2

最近甲方需要批量下载服务器中已上传的文件,由于当前的文件处理并没有使用s3单独处理,所以需要在服务器上创建一个ftp服务,供用户使用ftp客户端完成下载。

FreeBSD中的Pure-FTPd是款小巧、使用简单且安全的ftp服务,我们在此安装它以提供ftp服务

安装

安装的过程非常简单。

切换到root用户后,先使用pkg update -f更新下pkg,然后使用pkg install pure-ftpd进行安装,当出现是先安装提供的时候,输入y后按回车继续。

安装完成后,得到的提示如下:

Message from pure-ftpd-1.0.51:

--
Now you need to examine /usr/local/share/examples/pure-ftpd/pam.d/pure-ftpd
and add the relevant PAM configuration lines to your /etc/pam.conf file.

If you defined call upload script in pure-ftpd config define corresponding
vars in rc.conf. pure-ftpd will not listen TCP socket without it.

See FAQ: https://github.com/jedisct1/pure-ftpd/blob/master/FAQ

上面的提示在说:我们需要检查 /usr/local/share/examples/pure-ftpd/pam.d/pure-ftpd 文件,并编辑 /etc/pam.conf 来完成权限配置(当前场景并不需要更复杂的配置,此处我们可以忽略)。

这里有个专有名词PAM,代表 Privileged Access Management 简单翻译即为:权限管理。

更多的信息参考 https://github.com/jedisct1/pure-ftpd/blob/master/FAQ

配置权限

安装完成后,我们参考上面给出的github地址的信息进行权限配置。

首先添加一个用户组:pw group add ftpgroup, 然后在这个用户组中添加一个用户: pw user add ftpuser -g ftpgroup

最后便可以使用prue-pw命令来添加prue管理的ftp用户了,比如我添加一个readonly用户,并且限制其下载的带宽为10Mbit/s,并且指定其对应的目录为:/mengyunzhi/app/api/attachment,则可以执行以下命令:

# pure-pw useradd readonly -m -u ftpuser -t 10M -d /mengyunzhi/app/api/attachment

上述命令中 -m 的作用是将新用户信息写入 /usr/local/etc/pureftpd.passwd 的同时,将 /usr/local/etc/pureftpd.passwd 编译为 /usr/local/etc/pureftpd.pdb , pureftpd.pdb文件为pure-ftp的权限验证文件。

然后输入两次密码,一个可用的ftp用户便创建好了。

启动服务

$ /usr/local/sbin/pure-ftpd -lpuredb:/usr/local/etc/pureftpd.pdb 
lpuredb:/usr/local/etc/pureftpd.pdb 指认证的方式为文件,该认证文件的位置位于:/usr/local/etc/pureftpd.pdb。除了使用文件做为验证方式外,pureftpd还支持mysqlpgsqlldap

此时便可以使用ftp工具进行连接测试了:

image.png

测试没有问题后,使用ctrl+c终止前面的命令,然后重新执行:

 /usr/local/sbin/pure-ftpd -lpuredb:/usr/local/etc/pureftpd.pdb -H -B

这样ftp便可以在后台中运行,即使关闭了当前的shellftp仍然会正常的运行而不会随着shell的关闭而关闭了。


潘杰
3.1k 声望239 粉丝

引用和评论

0 条评论