文件传输协议:
        FTP(File Transfer Protocol),是文件传输协议的简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。
FTP的作用:
        正如其名所示:FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
主动和被动模式:
        FTP有两种使用模式:主动和被动。主动模式要求客户端和服务器端同时打开并且监听一个端口以建立连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。
        一个主动模式的FTP连接建立要遵循以下步骤:
        客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号命令端口。此时,源端口为随机端口x,在客户端,远程端口为21,在服务器。
        客户端开始监听端口(x+1),同时向服务器发送一个端口命令(通过服务器的21号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口。
        服务器打开20号源端口并且建立和客户端数据端口的连接。此时,源端口为20,远程数据端口为(x+1)。
        客户端通过本地的数据端口建立一个和服务器20号端口的连接,然后向服务器发送一个应答,告诉服务器它已经建立好了一个连接。
   
在这里我们一起来学习Solaris下的FTP服务配置。
基本文件类型
当我们使用ftp时,可简单地把文件分为两大类:文本文件和二进制文件。文本文件也称为ASCII文件,其文件内容遵循ASCII的定义,主要特征如下:ASCII文件由若干行组成;可以用操作系统显示和编辑命令来显示和编辑ASCII文件内容。二进制文件(Binary File)是指除ASCII文件以外的所有文件格式。可惜的是,不同操作系统的ASCII文件格式一般是不兼容的,ftp在不同的操作系统之间进行ASCII文件的传输时,自动进行了格式转换,而对于二进制文件来说,ftp不进行任何转换。
[注意事项] 可以将ASCII文件按二进制方式传输,但决不能将二进制文件按ASCII方式传输,否则二进制文件的内容会遭到破坏而无法使用。
FTP的使用
ftp的一般运行格式如下:
ftp IP地址或域名
以上的IP地址或域名是指远程UNIX主机的IP地址和域名。在本地计算机屏幕上就会出现信息,提示用户输入UNIX的用户名和口令,最后出现ftp提示符:ftp>。以后就可以在此提示符下输入ftp命令。
Snap1
用户名和密码都是ftp。成功登陆!
Snap2
[注意事项] 在运行ftp之前必须保证本地计算机和远程主机间的TCP/IP协议已经连通。
FTP常用命令
ftp的常用命令和解释列表如下:
ftp命令 解释
?或help [command] 命令帮助
binary 设定以二进制方式传送文件
ascii 设定以ASCII方式传送文件(缺省值)
cd [directory] 改变远程目录
pwd 列出当前远端主机目录
dir [r-dir] [l-file] 显示远程目录内容,r-dir表示远程目录,l-file表示本地文件。如果有本地文件,就将结果写至本地文件
ls  [r-dir] [l-file] 同dir,只是显示格式不同
lcd [directory] 改变本地目录
put file1 [file2] 将本地file1文件拷贝到远程file2
get file1 [fine2] 将远程file1文件拷贝到本地file2
mput files 将本地多个文件files拷贝到远程
mget files 将远程多个文件files拷贝到本地
status 显示当前FTP状态
!command 执行本地命令,并立即返回FTP
open IP地址或域名 重新建立新的连接
close 关闭远程连接
quit或bye 退出ftp
FTP实例
    假设远程主机的IP地址为192.168.0.246,操作系统为Solaris10,本地计算机为PC机,操作系统为Windows XP。
[例1] ftp的运行
Snap2
[例2] 将本地计算机C:\FTP目录下的1.txt拷贝到远程主机的/目录下。
默认情况下,不允许root用户进行ftp登陆。那我们就要修改一下配置文件。将root注释掉:
命令:vi /etc/ftpd/ftpusers
Snap5
然后使用root用户登陆ftp服务器:
Snap6
上传文件:
Snap7
检查一下,服务器端根目录是否有1.txt文件。
Snap8
[例3] 将本地计算机C:\ftp下的所有文件拷贝到远程主机的/1目录下。
连接ftp服务器我就不叙述了啊,直接上传文件咯!
Snap9
呵呵,这里纯属失误啊!继续继续。
Snap10
这里大家应该发现了吧,用mput命令上传多个文件,会提示是否上传每一个文件,输入yes后继续。
当然了,这个我们也有办法!prompt命令就是让ftp少啰嗦、不再提问!这里还是刚才的环境。
Snap11
问题解决。以后上传多个文件的时候大家可别忘记prompt这个命令啊。要不你就要费劲了!
[例4] 将远程主机的/1.txt拷贝到本地计算机C:\ftp\目录下。
Snap13
检查文件内容是否一致:
Snap14
[例5] 将远程主机的/1目录下的所有文件按文本文件格式拷贝到本地计算机C:\ftp目录下。
清空C:\ftp目录,大家检查哦:
Snap15
用root用户登陆后,选择目录,然后下载文件。这里跟刚才mput命令一样,也是提问每一个文件是否确定要下载。那我们还用老办法对付新问题:prompt
Snap16
比较一下文件。才发现dir命令和ls -l命令简直是天生一对!
Snap18
Snap17
OK.文件上传下载我们都能够实现了。
[例6] ftp的退出。三条命令都可以。
        ftp> close
        ftp> quit
        ftp> bye
现在再来看看刚开始修改的配置文件吧。默认的/etc/ftpd/ftpusers中的用户为:
Snap4
这个文件中的内容你可以添加,但是添加的内容必须匹配/etc/passwd文件、/etc/hosts.equiv和$HOME/.rhosts文件
一般的,当一个远程用户需要登陆访问到一个本地主机,本地主机读的第一个文件是/etc/passwd文件。从远程登陆的用户在文件中都有一个已经生效的条目。如果有一个密码和这个用户关联。那么,用户就必须提供正确的密码才能访问系统。当用户名不在远程主机的/etc/passwd中,则访问拒绝。
/etc/hosts.equiv和$HOME/.rhosts文件是另外一种使用基本密码验证的方法。如果远程用户允许访问本地主机,则和本地用户一致。这些文件提供一个远程鉴定程序来进行决定。
这个程序第一个检查/etc/host.equiv文件,然后在需要访问本地用户的home目录检查$HOME/.rhosts文件。基于这两个文件包含的信息(如果他们存在),决定是否允许用户访问系统。
/etc/hosts.equiv文件适用于整个系统,而个别用户可以在他们的home目录中维护他们自己的$HOME/.rhosts文件。
/etc/hosts.equiv和$HOME/.rhosts中的条目
/etc/hosts.equiv和$HOME/.rhosts文件具有相同的格式时,相同的条目在不同的文件中有不同的效果。
        常规格式包括下面的条目
2个文件都有一个一行的条目,他们可能是下面条目中的一种:
   hostname
   hostname username
   +
如果只使用了hostname,则从访问的主机过来的用户拥有相同的UID则不需要口令。
如果hostname和username都使用了,那么只有指定的远程用户从指定的远程主机可以访问到本地主机
一个文件中只包含了一个单独的加号,任何一个在网络上的远程主机是被信赖的。
/etc/hosts.equiv文件
对于正常的用户,/etc/hosts.equiv文件通常是定义远程主机和远程用户是被信赖的。如果本地主机的/etc/hosts.equiv文件包含一个远程主机名,那么在远程主机上的所有的正常用户是被信赖的并且不需要密码就可以登陆到本地主机。每个远程用户在本地主机的/etc/passwd中得到确认的;其他的都被拒绝访问。这在正常用户在多个不同系统上有帐号的情况下是非常有用的,排除在网络上传送二进制密码的安全风险。/etc/hosts.equiv文件默认是不存在的,如果远程用户需要访问本地主机的话,就建立文件。
$HOME/.rhosts文件
/etc/hosts.equiv文件适用于广泛的非root用户,.rhosts则适用于指定的用户所有的用户包括root,都可以自己的home目录中建立并且维护他们自己的.rhosts文件。$HOME/.rhosts文件默认是不存在的,需要用户在自己的home目录中建立。
FTP方式不失为一种文件上传下载的办法。而且,现在有很多FTP工具,比如:
Snap19
这些工具的使用技巧会在以后的文章中陆续涉及到的。好了,今天的学习就到这里了!