最近甲方需要批量下载服务器中已上传的文件,由于当前的文件处理并没有使用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
还支持mysql
,pgsql
和ldap
。
此时便可以使用ftp
工具进行连接测试了:
测试没有问题后,使用ctrl+c
终止前面的命令,然后重新执行:
/usr/local/sbin/pure-ftpd -lpuredb:/usr/local/etc/pureftpd.pdb -H -B
这样ftp便可以在后台中运行,即使关闭了当前的shell
该ftp
仍然会正常的运行而不会随着shell
的关闭而关闭了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。