FTP服务器

用户可以使用FTP(文件传输协议)让树莓派和其他电脑互相传输文件。虽然Raspbian自带的程序sftp-server可以让有着特定权限的用户传输文件和目录,但是很多时候还是需要限制他们的文件读取权限的。本文将介绍如何使用Pure-FTP搭建一个FTP服务器:

安装Pure-FTPd

首先安装Pure-FTPd,在终端输入下面的命令:

  1. sudo apt-get install pure-ftpd

基本设置

先新建一个名为ftpgroup的用户组,再新建一个名为ftpuser的用户,但是这个“用户”不可以登入系统,也不可以有自己的主目录。在终端输入以下命令:

  1. groupadd ftpgroup;
  2. useradd ftpuser -g ftpgroup -s /sbin/nologin d /dev/null

FTP目录,虚拟用户及虚拟用户组

假设需要新建一个名为FTP的目录。

  1. sudo mkdir /home/pi/FTP

然后将所有者改为ftpuser,再改权限为755:

  1. sudo chown -R ftpuser:ftpgroup /home/pi/FTP
  2. sudo chmod -R 755 /home/pi/FTP;

再新建一个名为upload的虚拟用户,映射到ftpuserftpgroup去,将其主目录设定为/home/pi/FTP,再把密码存在Pure-FTPd的数据库中:

  1. sudo pure-pw useradd upload -u ftpuser -g ftpgroup -d /home/pi/FTP -m

输入了这个命令之后,程序会提示设定该用户的密码,需要盲输。其后建立虚拟用户数据库,在终端输入:

  1. sudo pure-pw mkdb

最后,也是最重要的,是指定校验密码方法的优先值,只需要为/etc/pure-ftpd/conf/PureDB/etc/pure-ftpd/auth目录中建立一个软链,在软链的文件名前加一个足够小的数字就可以了,例如60。在终端输入:

  1. ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/60puredb

重新启动Pure-FTPd:

  1. sudo service pure-ftpd restart

这时可以使用FTP客户端,例如FileZilla,来测试服务器了。

更多的设置

Pure-FTPd的设置简单直观。管理员只需要在/etc/pure-ftpd/conf目录中建立一个文件,以选项名为文件名,再将设定内容写入文件中即可。例如,如果需要将用户锁定在其各自的根目录,只要在这个目录中新建一个名为ChrootEveryone的文件,再写入yes,就可以了。下面是一些基本的设置建议:

先在终端输入:

  1. sudo nano /etc/pure-ftpd/conf/ChrootEveryone

再写入yes,按下CtrlX后,按Y,再按Enter,保存修改后退出。

同样地,继续:

新建一个名为NoAnonymous的文件,写入yes

新建一个名为AnonymousCantUpload的文件,写入yes

新建一个名为AnonymousCanCreateDirs的文件,写入no

新建一个名为DisplayDotFiles的文件,写入no

新建一个名为DontResolve的文件,写入yes

新建一个名为ProhibitDotFilesRead的文件,写入yes

新建一个名为ProhibitDotFilesWrite 的文件,写入yes

新建一个名为FSCharset的文件,写入UTF-8

……

再次重启pure-ftpd,使上面的设置生效。

  1. sudo service pure-ftpd restart

想查询Pure-FTPd的其他信息和官方文档,请浏览Pure-FTPd的官方网站