在计算机早期还没有web应用(网页可以看做是服务端生成的文件)的时候,那么要怎么才能访问到其他计算机的文件?这个时候就会使用到FTP服务。
百科中介绍:文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登录进程。
在开发web应用程序中,有时候会用到上传图片或者文件的插件,插件也是使用ftp服务协议的。ftp服务还是有广泛的应用,所以有必要了解ftp协议。
配置ftp
系统默认带的ftp是vsftp,比较常用,配置也很简单。如果没有安装的话,可以参照下面步骤安装。
下载最新的pure-ftp源码包pure-ftpd-1.0.21.tar.bz2
#tar jxvf pure-ftpd-1.0.21.tar.bz2;cd pure-ftpd-1.0.21
#./configure \
"--prefix=/usr/local/pureftpd" \
"--without-inetd" \
"--with-altlog" \
"--with-puredb" \
"--with-throttling" \
"--with-largefile" \
"--with-peruserlimits" \
"--with-tls" \
"--with-language=simplified-chinese"
#make && make install
启动和配置
#mkdir /usr/local/pureftpd/etc
#cd configuration-file
#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
在启动pure-ftp之前需要先修改配置文件,配置文件为/usr/local/pureftpd/etc/pure-ftpd.conf。如果嫌麻烦,直接拷贝过去用,不过目录配置之类还是需要根据实际安装情况配置。
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 2000 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
启动命令:
/usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
创建ftp用户:
# /usr/local/pureftpd/bin/pure-pw useradd ftp_test -u www -d /data/wwwroot
其中,-u 将虚拟用户 ftp_test 与系统用户 www 关联在一起。-d 参数使 ftp_test 只能访问其主目录。执行完上述命令后,会提示输入密码。
使用ftp
ftp> ascii # 设定以ASCII方式传送文件(缺省值)
ftp> binary # 设定以二进制方式传送文件.
ftp> bye # 终止主机FTP进程,并退出FTP管理方式.
ftp> cd # 同UNIX的CD命令.
ftp> cdup # 返回上一级目录.
ftp> chmod # 改变远端主机的文件权限.
ftp> close # 终止远端的FTP进程,返回到FTP命令状态, 所有的宏定义都被删除.
ftp> delete # 删除远端主机中的文件.
ftp> dir [remote-directory] [local-file] # 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件.
ftp> get [remote-file] [local-file] # 从远端主机中传送至本地主机中.
ftp> help [command] # 输出命令的解释.
ftp> lcd # 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录.
ftp> ls [remote-directory] [local-file] # 同DIR.
ftp> mget [remote-files] # 从远端主机接收一批文件至本地主机.
ftp> mkdir directory-name # 在远端主机中建立目录.
ftp> mput local-files # 将本地主机中一批文件传送至远端主机.
ftp> open host [port] # 重新建立一个新的连接.
ftp> prompt # 交互提示模式.
ftp> put local-file [remote-file] # 将本地一个文件传送至远端主机中.
ftp> pwd # 列出当前远端主机目录.
ftp> quit # 同BYE.
ftp> status # 显示当前FTP的状态.
ftp> user user-name [password] [account] # 重新以别的用户名登录远端主机.