FTP服务器
用户可以使用FTP(文件传输协议)让树莓派和其他电脑互相传输文件。虽然Raspbian自带的程序sftp-server
可以让有着特定权限的用户传输文件和目录,但是很多时候还是需要限制他们的文件读取权限的。本文将介绍如何使用Pure-FTP搭建一个FTP服务器:
安装Pure-FTPd
首先安装Pure-FTPd
,在终端输入下面的命令:
sudo apt-get install pure-ftpd
基本设置
先新建一个名为ftpgroup
的用户组,再新建一个名为ftpuser
的用户,但是这个“用户”不可以登入系统,也不可以有自己的主目录。在终端输入以下命令:
groupadd ftpgroup;
useradd ftpuser -g ftpgroup -s /sbin/nologin –d /dev/null
FTP目录,虚拟用户及虚拟用户组
假设需要新建一个名为FTP
的目录。
sudo mkdir /home/pi/FTP
然后将所有者改为ftpuser
,再改权限为755:
sudo chown -R ftpuser:ftpgroup /home/pi/FTP;
sudo chmod -R 755 /home/pi/FTP;
再新建一个名为upload
的虚拟用户,映射到ftpuser
和ftpgroup
去,将其主目录设定为/home/pi/FTP
,再把密码存在Pure-FTPd的数据库中:
sudo pure-pw useradd upload -u ftpuser -g ftpgroup -d /home/pi/FTP -m
输入了这个命令之后,程序会提示设定该用户的密码,需要盲输。其后建立虚拟用户数据库,在终端输入:
sudo pure-pw mkdb
最后,也是最重要的,是指定校验密码方法的优先值,只需要为/etc/pure-ftpd/conf/PureDB
在/etc/pure-ftpd/auth
目录中建立一个软链,在软链的文件名前加一个足够小的数字就可以了,例如60
。在终端输入:
ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/60puredb
重新启动Pure-FTPd:
sudo service pure-ftpd restart
这时可以使用FTP客户端,例如FileZilla,来测试服务器了。
更多的设置
Pure-FTPd的设置简单直观。管理员只需要在/etc/pure-ftpd/conf
目录中建立一个文件,以选项名为文件名,再将设定内容写入文件中即可。例如,如果需要将用户锁定在其各自的根目录,只要在这个目录中新建一个名为ChrootEveryone
的文件,再写入yes
,就可以了。下面是一些基本的设置建议:
先在终端输入:
sudo nano /etc/pure-ftpd/conf/ChrootEveryone
再写入yes
,按下Ctrl
和X
后,按Y
,再按Enter
,保存修改后退出。
同样地,继续:
新建一个名为NoAnonymous
的文件,写入yes
;
新建一个名为AnonymousCantUpload
的文件,写入yes
;
新建一个名为AnonymousCanCreateDirs
的文件,写入no
;
新建一个名为DisplayDotFiles
的文件,写入no
;
新建一个名为DontResolve
的文件,写入yes
;
新建一个名为ProhibitDotFilesRead
的文件,写入yes
;
新建一个名为ProhibitDotFilesWrite
的文件,写入yes
;
新建一个名为FSCharset
的文件,写入UTF-8
;
……
再次重启pure-ftpd
,使上面的设置生效。
sudo service pure-ftpd restart
想查询Pure-FTPd的其他信息和官方文档,请浏览Pure-FTPd的官方网站。