Pureftpd基础:安装配置、实现匿名和虚拟用户登录
作者:尹斌斌        
摘要:详细讲解了Unix系统下如何安装配置pureftpd。特别是解决了很多人提到的匿名用户无法
登录的问题。以及Unix系统下pureftpd如何用shell用户登录,以及如何用虚拟用户登录。
一、安装
我是以FreeBSD为平台的,其它Unix/Linux平台请参考相关shell命令。在shell提示符下输入:
# cd /usr/ports/ftp/pure-ftpd
# make install clean
# rehash
FreeBSD会以ports方式安装pureftpd。其它平台的安装方法参看相关文章。
二、启动
将pureftpd配置文件的样例文件复制为配置文件:
# cp /usr/local/etc/pure-ftpd.conf.sample /usr/local/etc/pure-ftpd.conf
用配置文件启动 PureFTPd :
# /usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf
注意:如果是其它平台,或者采用编译方式安装,路径可能与上面的不同。
三、匿名登录
经过上面的步骤,pureftpd已经启动。用 flashfxp 连接,只能系统用户连接(用“/etc/passwd”
文本文件中的用户认证)。 这是因为默认的配置文件中是允许匿名用户和系统用户(根帐号 root 除
外)都可以访问的。但这时匿名用户还无法访问,出现“421 无法建立安全匿名 FTP”错误。还需要
几个步骤才能实现匿名登录。
pureftpd 的官方文件(http://download.pureftpd.org/pub/pure-ftpd/doc/README)说:
------------------------ SETTING UP AN ANONYMOUS FTP ------------------------
If a 'ftp' user exists and its home directory is reachable, Pure-FTPd will
accept anonymous login, as 'ftp' or 'anonymous'. Files have to be located in
the home FTP directory. There's no need for 'bin', 'lib', 'etc' and 'dev'

directories, nor any external program. Don't chown the public files to
'ftp', just writable directories ('incoming') .
就是说需要存在一个名称必须为“ftp”的系统用户,并且它的主目录可用。就可以实现匿名用户登
录了。
心得:很多人在问为什么不能匿名登录,原因就在于没有“ftp”系统帐号,以及没有创建主目录()
这里。
1、为匿名用户添加系统帐号和组。
增加一个“ftp”组:
# pw groupadd ftp
如果组存在,直接添加用户即可。
添加“ftp”系统用户:
# pw useradd ftp -g 14 -d /var/ftp -s /sbin/nologin
其中的 “/var/ftp”就是匿名用户的主目录,你可以指定为其它目录,比如“/home/ftp”等。
14是“ftp”组的组id 。其它的,比如 www 系统用户的 uid/gid 是:“80/80”,等等(见 /etc/
passwd )。
如果发现帐号是存在的,那么请检查帐号的主目录是否存在,如果不存在,也会提示上述错误。
2、建立匿名用户的主目录。
# mkdir /var/ftp
# mkdir /var/ftp/readme
其中“mkdir /var/ftp/readme”是给个参照,因为“/var/ftp”是空的。
3、测试。
马上用 flashfxp 匿名登录,见到 readme 文件夹了,成功,激动!但是上传、下载、建目录什么的
都不允许,要实现这些功能需要进一步修改配置文件,这个在我后续文章中有详细讲解。
四、系统真实(shell)用户登录
默认配置文件允许匿名用户登录,同时允许系统真实用户登录。经过上面的步骤后(详情见我的前
一篇文章《pureftpd基础:安装、配置、实现匿名登录》),这时我们用系统用户登录,是可以登
录,并且可以上传、下载、建目录和删除等。
如果要让 FTP 只支持系统真实用户登录,你只要稍微修改一下 pureftpd 的配置文件就可以了。
# ee /usr/local/etc/pure-ftpd.conf
ChrootEveryone yes

NoAnonymous  yes
UnixAuthentication yes //用“/etc/passwd”中的用户认
只需以上三行就可以实现只允许系统真实用户登录 FTP 。系统真实用户会登陆到自己的系统主目录
中,可下载,可上传,可删除,没有任何限制。但是由于有 chroot 的限制,所以无法去真实系统的
其它目录而已。在实际应用中,这种用法并不多见,我也就不费篇幅介绍了。
五、puredb虚拟用户支持
1、建立 FTP 专用的系统用户。
自从 0.99.2  版本开始,pure-ftpd 就开始支持虚拟用户。
虚拟用户方式是一个简单的用户列表机制,类似于“/etc/passwd”,它将用户的相关信息,如口
令、姓名、 uid、gid、主目录等,存入一个文本文件。但是该文本文件文件只适用于 FTP 。这意味
着,你可以很容易地设置 FTP 虚拟帐号,而不需要在系统中添加系统用户,以免和系统用户混淆在
一起。
同时,可以为这些虚拟用户单独设置配额、ratio、带宽等限制,这些功能是系统用户认证无法实现
的。很多虚拟用户可以共享同一个系统用户的属性,因此建议为这些虚拟用户单独创建一个系统用
户,从而方便管理。
你可以使用系统已经存在的帐号,比如“nobody”用户,作为虚拟用户的系统帐号。但最好使用
一个单独的帐号,专门对应 FTP 。我们选择新建系统用户(经测试,在 linux 系统中如果用 linux 系统
自带的 ftp 用户,在用虚拟用户登陆时会出现不被信任的提示。大家也可以做做实验,看是不是这
样)。建立方法如下:
对于 Linux/OpenBSD/NetBSD/Solaris/HPUX/ 或其它的类 Unix 系统,使用下面的命令:
groupadd ftpgroup
useradd -g ftpgroup -d /home/ftp -s /sbin/nologin ftpuser
对于 FreeBSD ,用下面的命令:
# pw groupadd ftpgroup
# pw useradd ftpuser -g ftpgroup -d /home/ftp -s /sbin/nologin
系统帐号建立好后,我们就开始着手准备虚拟用户了。
2、建立虚拟用户。
使用 ”pure-pw”命令实现创建、修改和删除虚拟用户等操作。虚拟用户的信息以每个用户一行的
方式存放在相应的文本文件中。你也可以手工编辑这个文件。其存储格式如下:
::::::bandwidth>::::connections>::::IPs>:::
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]