我想有不少人(尤其是ArchLinux用户)都有过我这样的经历。就是安装完pure-ftpd,按照官方的配置文档,以虚拟用户的方式配置好所有的东西之后。发现无法从客户端登陆,老提示说530错误。让我们检查一下我们的步骤有没有问题吧!

  • 安装pure-ftp,在ArchLinux中,就是pacman -S pure-ftpd

#PureDB /etc/pureftpd.pdb

  • 然后自然就是添加虚拟用户了,作为ArchLinux的用户,通常会选择让这些虚拟用户对应为系统中的ftp实体用户。
  • 最后,更新puredb的数据库,然后启动puredb的服务。

接着,你肯定开开心心的打开客户端连接了。任凭你怎么输入账号密码都无济于事,系统就是不让登陆。在密码认证的时候,就提示530错误了。

为了这个东西,我折腾来折腾去,折腾老半天,就是搞不清原因。中间还请muxueqz来弄了下,貌似改掉了一些文件,运行起来了,不过无法正常的启动和关闭服务。

后来我想想,问题应该就出在puredb的配置上,那我就保留muxueqz的配置文件,然后重新卸载、安装了pureftpd。结果用原来的配置文件还是不行。

后来我就郁闷了,记得以前老出现用户没权限的问题,检查了ftp根目录,没什么问题。还是不知道什么问题,这就又让我郁闷坏了。

后来翻来覆去的没想通,又一行一行的检查pureftpd的配置文件,检查了半天,发现这一行比较可疑:

好家伙,原来问题出在这儿啊!这个参数设置了可以通过pureftpd认证的最小的UID号。这是一种安全机制,可以防止使用系统账号进行FTP登陆注销等操作。可是我们ArchLinux中,ftp账户的UID是14。原来问题就在这里啊!这里自然就有两个解决方法了:

  • 不考虑系统这种安全机制,把MinUID下限下调。

  • 建一个新的实体用户,其UID大于100

终于把问题解决了,可以睡个安稳觉了。