br/>通过FTP程序连接匿名FTP主机的方式同连接普通FTP主机的方式差不多,只是在要求提供用户标识ID时必须输入anonymous,该用户ID的口令可以是任意的字符串。习惯上,用自己的E-mail地址作为口令,使系统维护程序能够记录下来谁在存取这些文件。
值得注意的是,匿名FTP不适用于所有Internet主机,它只适用于那些提供了这项服务的主机。
当远程主机提供匿名FTP服务时,会指定某些目录向公众开放,允许匿名存取。系统中的其余目录则处于隐匿状态。作为一种安全措施,大多数匿名FTP主机都允许用户从其下载文件,而不允许用户向其上传文件,也就是说,用户可将匿名FTP主机上的所有文件全部拷贝到自己的机器上,但不能将自己机器上的任何一个文件拷贝至匿名FTP主机上。即使有些匿名FTP主机确实允许用户上传文件,用户也只能将文件上传至某一指定上传目录中。随后,系统管理员会去检查这些文件,他会将这些文件移至另一个公共下载目录中,供其他用户下载,利用这种方式,远程主机的用户得到了保护,避免了有人上传有问题的文件,如带病毒的文件。
用户分类
Real帐户
这类用户是指在FTP服务上拥有帐号。当这类用户登录FTP服务器的时候,其默认的主目录就是其帐号命名的目录。但是,其还可以变更到其他目录中去。如系统的主目录等等。
Guest用户
在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户。但是,这个账户有个特点,就是其只能够访问自己的主目录。服务器通过这种方式来保障FTP服务上其他文件的安全性。这类帐户,在Vsftpd软件中就叫做Guest用户。拥有这类用户的帐户,只能够访问其主目录下的目录,而不得访问主目录以外的文件。
Anonymous(匿名)用户
这也是我们通常所说的匿名访问。这类用户是指在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源。
在组建FTP服务器的时候,我们就需要根据用户的类型,对用户进行归类。默认情况下,Vsftpd服务器会把建立的所有帐户都归属为Real用户。但是,这往往不符合企业安全的需要。因为这类用户不仅可以访问自己的主目录,而且,还可以访问其他用户的目录。这就给其他用户所在的空间带来一定的安全隐患。所以,企业要根据实际情况,修改用户所在的类别。
使用方式
TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP的任务是从一台计算机将文件传送到另一台计算机,不受操作系统的限制。
需要进行远程文件传输的计算机必须安装和运行ftp客户程序。在windows操作系统的安装过程中,通常都安装了tcp/ip协议软件,其中就包含了ftp客户程序。但是该程序是字符界面而不是图形界面,这就必须以命令提示符的方式进行操作,很不方便。
启动ftp客户程序工作的另一途径是使用ie浏览器,用户只需要在ie地址栏中输入如下格式的url地址:ftp://[用户名:口令@]ftp服务器域名:[端口号]
(在CMD命令行下也可以用上述方法连接,通过put命令和get命令达到上传和下载的目的,通过ls命令列出目录,除了上述方法外还可以在cmd下输入ftp回车,然后输入open IP来建立一个连接,此方法还适用于linux下连接ftp服务器)
通过ie浏览器启动ftp的方法尽管可以使用,但是速度较慢,还会将密码暴露在ie浏览器中而不安全。因此一般都安装并运行专门的ftp客户程序。
1.在本地电脑上登陆到国际互联网。
2.搜索有文件共享主机或者个人电脑(一般有专门的FTP服务器网站上公布的,上面有进入该主机或个人电脑的名称,口令和路径).
3.当与远程主机或者对方的个人电脑建立连接后,用对方提供的用户名和口令登陆到该主机或对方的个人电脑。
4.在远程主机或对方的个人电脑登陆成功后,就可以上传你想跟别人分享的东西或者下载别人授权共享的东西(这里的东西是指能放到电脑里去又能在显示屏上看到的东西).
5.完成工作后关闭FTP下载软件,切断连接。
传输方式
FTP的传输有两种方式:ASCII、二进制。
ASCII传输方式
假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝。
二进制传输模式
在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。
如在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会损坏数据。(ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果传输二进制文件,所有的位都是重要的。)
支持模式
FTP支持两种模式:Standard (PORT方式,主动方式),Passive (PASV,被动方式)。
Port模式
FTP 客户端首先和服务器的TCP 21端口建立连接,用来发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。
Passive模式
建立控制通道和Standard模式类似,但建立连接后发送Pasv命令。服务器收到Pasv命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口传送数据。
很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。
命令参数
简介
1.FTP服务器的登陆
匿名用户:FTP 口令:FTP
用户:ANONYMOUS 口令:任何电子邮件
2.显示文件信息:DIR/LS
3.下载文件:GET 文件名(下载到当前目录)
4.上传文件:PUT 文件名
5.多文件下载:MGET
6.多文件上传:MPUT
7.退出:BYE
8.帮助:HELP
用途
在本地主机和远程主机之间传送文件。
语法
ftp [ -d] [ -g ] [ -i ] [ -n ] [ -v] [ -f ] [ -k realm] [-q[-C]][ HostName [ Port ] ]
二、使用vsftpd搭建ftp

#yum install -y vsftpd
#useradd -s /sbin/nologin virftp //创建一个virftp用户但是不让它登录系统
#vim /etc/vsftpd/vsftpd_login //修改虚拟用户的密码文件,奇数行为用户名,偶数行为密码
testuser1
aminglinux
testuser2
#chmod 600 /etc/vsftpd/vsftpd_login //设置权限为600,不能让所有用户都看到
#db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db //将密码转换为二进制
#ls -l /etc/vsftpd/ //二进制密码文件为vsftpd_login.db,这个文件不能直接cat

#mkdir /etc/vsftpd/vsftpd_user_conf //创建虚拟用户它们的配置文件所在的路径
#vim testuser1 //说明:创建的这个 testuser1文件名要与之前创建的用户名一样,写入如下内容
local_root=/home/virftp/testuser1 //定义虚拟用户家目录
anonymous_enable=NO //是否允许匿名用户,NO
write_enable=YES //是否允许可写,YES
local_umask=022 //用来定义创建新文件新目录的权限
anon_upload_enable=NO //是否允许匿名用户可上传,NO
anon_mkdir_write_enable=NO //是否允许匿名用户创建目录并且写,NO
idle_session_timeout=600 //当我们连接ftp空闲时间超过600秒需要重新登录
data_connection_timeout=120 //数据传输超时时间120秒
max_clients=10 //最大连接客户端数10个
#mkdir /home/virftp/testuser1 //创建虚拟用户家目录
#touch /home/virftp/testuser1/aming.txt //创建一个aming.txt文件
#chown -R virftp:virftp /home/virftp //修改权限
#vim /etc/pam.d/vsftpd //在第二行添加如下两行
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
#ls /lib64/security/pam_userdb.so //必须保证这个文件是存在的
/lib64/security/pam_userdb.so

#vim /etc/vsftpd/vsftpd.conf //编辑vsftp的主配置文件
将anonymous_enable=YES 修改为 anonymous_enable=NO
将#anon_upload_enable=YES 修改为 anon_upload_enable=NO
将#anon_mkdir_write_enable=YES 修改为 anon_mkdir_write_enable=NO
再在最后一行增加如下内容:
chroot_local_user=YES
guest_enable=YES
guest_username=virftp //定义映射到哪个系统用户
virtual_use_local_privs=YES //为了告诉服务我们现在使用的是虚拟用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf //这一行用来定义虚拟用户的配置文件所在路径
allow_writeable_chroot=YES
#systemctl start vsftpd //启动vsftpd服务
#ps aux |grep vsftp //查看进程是否存在
#netstat -lntp //可以看到ftp监听的端口是21端口
推荐在windows上使用Filezilla客户端工具,非常好用的一款软件!
#yum install -y lftp //安装linux客户端软件lftp
#lftp testuser1@127.0.0.1
Password: 输入密码
lftp testuser1@127.0.0.1:~> ls //查看之前创建的文件
-rw-r--r-- 1 1015 1017 0 Jun 24 14:15 aming.txt
lftp testuser1@127.0.0.1:/> ? //使用?查看支持哪些命令

lftp testuser1@127.0.0.1:/> get aming.txt //使用get命令可以下载文件到当前目录下

两种方案使用FTP
第一种,在xshell上使用
打开xshell终端,按照如下填写

输入用户名root,密码进行登录
sftp:/root>cd /tmp/
sftp:/tmp>ls
sftp:/tmp>get mysql.sql //get一个mysql.sql文件
get下来的文件默认保存在桌面上,在下图这里可以进行设置

第二种:在xshell中,按Ctrl+Alt+f

点击下载xftp,需要打开它转到的这个网页下载一个插件进行安装
exportfs命令 NFS客户端问题 FTP介绍 使用vsftpd搭建ftp
原文:http://blog.51cto.com/13669226/2132329