1.1、FTP
1.1.1、FTP 协议
FTP(File Transfer Protocol),是文件传输协议的简称。用于 Internet 上的控制文件的双向传输。同时, 它也是一个应用程序(Application)。用户可以通过它把自己的 PC 机与世界各地所有运行 FTP 协议的服 务器相连,访问服务器上的大量程序和信息。
在 FTP 的使用当中,用户经常遇到两个概念:"下载"(Download)和"上载"(Upload)。"下载"文件就是 从远程主机拷贝文件至自己的计算机上;"上载"文件就是将文件从自己的计算机中拷贝至远程主机上。用 Internet 语言来说,用户可通过客户机程序向(从)远程主机上载(下载)文件。
TCP/IP 协议中,FTP 标准命令 TCP 端口号为 21,Port 方式数据端口为 20。FTP 协议的任务是从一台计算机 将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统 无关。假设两台计算机通过 ftp 协议对话,并且能访问 Internet, 你可以用 ftp 命令来传输文件。每种操 作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。
1.1.2、FTP 协议的传输方式
FTP 的传输有两种方式:ASCII 传输模式和二进制数据传输模式。
1.ASCII 传输方式:假定用户正在拷贝的文件包含的简单 ASCII 码文本,如果在远程机器上运行的不 是 UNIX,当文件传输时 ftp 通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文 件的格式。
但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处 理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非 打印字符)。在拷贝任何非文本文件之前,用 binary 命令告诉 ftp 逐字拷贝,不要对这些文件进行处理, 这也是下面要讲的二进制传输。
2.二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使 目的地机器上包含位序列的文件是没意义的。例如,macintosh 以二进制方式传送可执行文件到 Windows 系 统,在对方系统上,此文件不能执行。
如果你在 ASCII 方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢 ,也会损坏数 据,使文件变得不能用。(在大多数计算机上,ASCII 方式一般假设每一字符的第一有效位无意义,因为 ASCII 字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样 的,则二进制方式对文本文件和数据文件都是有效的。
1.1.3、Ftp 命令
1、FTP 服务器的登陆
匿名用户:FTP 口令:FTP
用户 :ANONYMOUS 口令:任何电子邮件
2、显示文件信息:DIR/IS
3、下载文件:GET 文件名 (下载到当前目录)
4、上传文件:PUT 文件名
5、多文件下载:MGET
6、多文件上传:MPUT
7、退出:BYE
8、帮助:HELP
1.2、linux 下的相关文件和服务
1、vsftpd 包的安装
vsftpd-2.0.5-10.el5.386.rpm
2、vsftpd 服务名称 vsftpd
3、相关文件
/etc/vsftpd/vsftpd.conf vsftpd 的主配置文件
/etc/vsftpd.user_list 用户登录配置文件
/etc/vsftpd.ftpusers 该文件中的用户绝对不能登录到主机
/etc/vsftpd.chroot_list 用户被限制其家目录,不允许向上级目录查看,默认情况下该文件并没有建立
/var/ftp 匿名 ftp 账户的家目录
1.3、vsftpd 主配置文件的参数介绍
/etc/vsftpd/vsftpd.conf 文件的相关参数如下:
anonymous_enable=YES 是否允许匿名 ftp,如否则选择 NO
local_enable=YES 是否允许本地用户登录
local_umask=022 默认的 umask 码
anon_upload_enable=YES 是否允许匿名 ftp 用户访问
anon_upload_enable=YES 是否允许匿名上传文件
anon_mkdir_write_enable=YES 是否允许匿名用户有创建目录的权利
dirmessage_enable=YES 是否显示目录说明文件,默认是 YES 但需要手工创建.message 文件
xferlog_enable=YES 是否记录 ftp 传输过程
connect_from_port_20=YES 是否确信端口传输来自 20(ftp-data)
chown_username=username 是否改变上传文件的属主,如果是需要输入一个系统用户名,你可以把上传的文
件都改成 root 属主
xferlog_file=/var/log/vsftpd.log ftp 传输日志的路径和名字默认是/var/log/vsftpd.log
xferlog_std_format=YES 是否使用标准的 ftp xferlog 模式
idle_session_timeout=600 设置默认的断开不活跃 session 的时间
data_connection_timeout=120 设置数据传输超时时间
ascii_upload_enable=YES ascii_download_enable=YES 是否使用 ascii 码方式上传和下载文件
ftpd_banner=Welcome to chenlf FTP service. 定制欢迎信息
1.4、配置匿名的 ftp 服务器
1.4.1、基本的匿名 ftp 服务器
启动 vsftpd 服务即可使用
使用命令行和浏览器进行测试
1.4.2、配置允许匿名用户上传的 ftp 服务器
1、在匿名用户的主目录下,给默认的 pub 目录添加写权限
2、编辑 ftp 的主配置文件,添加允许上传语句第 27 行和 31 行分别定义允许匿名用户上传文件和上传目录
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
3、重新启动服务
1.4.3、配置匿名用户的完全权限
在用户可以上传的基础上,对匿名用户开放所有权限,如续传,删除等,然后重新启动服务即可。
anon_world_readable_only=NO
anon_other_write_enable=YES
1.4.4、配置基于端口的匿名虚拟 ftp 服务器
1、生成虚拟的 ftp 服务器主配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/port.conf
2、编辑虚拟的 ftp 主配置文件/etc/vsftpd/port.conf
vi /etc/vsftpd/port.conf
添加虚拟服务器的端口和匿名用户
listen_port=2121
ftp_username=ftpguest
3、创建虚拟 ftp 服务器的匿名用户和登录的主目录
useradd -d /var/port ftpguest
4、重新启动 vsftpd 服务
1.5、配置本地用户的 ftp 服务器
需要使用用户和密码来访问的 ftp 服务器
1、编辑主配置文件/etc/vsftpd/vsftpd.conf,第 97 行,锁定所有用户的主目录
chroot_local_user=YES
2、重新启动服务
1.6、对用户限制下载速度
1、编辑主配置文件
anon_max_rate=50000
local_max_rate=200000
单位为 byte/s