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)连接超时,没有提示错误信息,日志上也没有错误提醒;
这种情况可能就是你服务器的网络问题了。建议修改网络,再重启网络。