ftp有两种工作模式:PORT方式和PASV方式,中文意思为主动模式和被动模式

主动模式的FTP工作原理:客户端从一个任意的非特权端口N连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。


被动模式:当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。


主动模式ftp与被动模式FTP优点和缺点:

主动FTP对FTP服务器的管理和安全很有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。


pure-ftpd安装:

wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.42.tar.bz2

解压:tar -jxvf pure-ftpd-1.0.42.tar.bz2

cd pure-ftpd-1.0.42

安装参数:./configure --prefix=/usr/local/pureftpd --without-inetd --with-altlog --with-puredb --with-throttling --with-peruserlimits --with-tls

干净的环境可能会报错:未安装gcc;configure: error: OpenSSL headers not found.

解决:yum install -y openssl-devel

编译安装:make ;make install

cd configuration-file/

创建目录:mkdir -p /usr/local/pureftpd/etc/  

复制配置文件:cp pure-ftpd.conf /usr/local/pureftpd/etc/pure-ftpd.conf

复制执行文件:cp pure-config.pl /usr/local/pureftpd/sbin/pure-config.pl

修改执行权限:chmod 755 /usr/local/pureftpd/sbin/pure-config.pl

更改配置文件:vim /usr/local/pureftpd/etc/pure-ftpd.conf (或者下载文件 http://study.lishiming.net/.pf.c)

ChrootEveryone yes

BrokenClientsCompatibility no

MaxClientsNumber 50

Daemonize yes

MaxClientsPerIP 8

VerboseLog no

DisplayDotFiles yes

AnonymousOnly no

NoAnonymous no

SyslogFacility ftp

DontResolve yes

MaxIdleTime 15

PureDB /usr/local/pureftpd/etc/pureftpd.pdb

LimitRecursion 3136 8

AnonymousCanCreateDirs no

MaxLoad 4

AntiWarez yes

Umask 133:022

MinUID 100

AllowUserFXP no

AllowAnonymousFXP no

ProhibitDotFilesWrite no

ProhibitDotFilesRead no

AutoRename no

AnonymousCantUpload no

PIDFile /usr/local/pureftpd/var/run/pure-ftpd.pid

MaxDiskUsage 99

CustomerProof yes


启动pure-ftpd:cd /usr/local/pureftpd/

./sbin/pure-config.pl ./etc/pure-ftpd.conf

重启可能会麻烦一些:

killall pure-ftpd

cd /usr/local/pureftpd/; ./sbin/pure-config.pl ./etc/pure-ftpd.conf


建立账号:Pure-ftpd 使用的账号并非 Linux 系统账号,而是虚拟账号。因为,这样做比较安全。

mkdir /data/www/

useradd ftp01

chown -R ftp01:ftp01 /data/www/

/usr/local/pureftpd/bin/pure-pw useradd ftp_user1 -uftp01 -d /data/www/

其中,-u 将虚拟用户 ftp_user1 与系统用户 www 关联在一起,也就是说使用 ftp_user1

账号登陆 ftp 后,会以 www 的身份来读取文件或下载文件。-d 后边的目录为 ftp_user1 账户

的家目录,这样可以使 ftp_user1 只能访问其家目录/data/www/。

创建用户数据库文件:(很重要的一步)/usr/local/pureftpd/bin/pure-pw mkdb

pure-pw 还可以列出当前的 ftp 账号,当然也可以删除某个账号, 我们再创建一个账号:

/usr/local/pureftpd/bin/pure-pw useradd ftp_user2 -uwww -d /tmp

/usr/local/pureftpd/bin/pure-pw mkdb

列出当前账号:/usr/local/pureftpd/bin/pure-pw list

删除账号:/usr/local/pureftpd/bin/pure-pw userdel ftp_user2


连接软件ftp不成功情况:

(1)出现错误不能连接ftp软件,查看日志错误是:try pure-pw mkdb;

第一种:可能是你没有创建用户数据库文件,执行命令pure-pw mkdb即可;

第二种:可能是你的配置文件有错误;(/usr/local/pureftpd/etc/pure-ftpd.conf)

(2)连接超时,没有提示错误信息,日志上也没有错误提醒;

这种情况可能就是你服务器的网络问题了。建议修改网络,再重启网络。