FTP--文件共享服务

1.实现共享服务经常使用的有三种
1.)ftp:属于应用层服务,能够跨平台使用(linux< -- >unix< -- >windows)
2.)Nfs:属于内核模式,不能够跨平台(linux< -- >linux)
3.)samba:能够跨平台使用(linux< -- >unix< -- >windows)
2.实现存储设备域服务器链接的方式有三种
1.)DAS:链接的磁盘。
2.)NAS:经过nfs/cifs协议实现网络文件共享(文件存储方式)电子邮件、网页服务器多媒体流服务、档案分享等就适用以NAS存储架构。
3.)SAS:经过网线或光纤实现ISCSI和FCSAN将物理存储设备链接起来使用(块存储方式比较底层,须要格式化并挂载当本地磁盘使用)数据库有关的应用适用于SAN存储架构。
3.FTP
FTP是File Transfer Portocol文件传输协议的缩写,基于网络来传输文件的应用层协议。
FTP可以经过网络来传输文件,主要是由于工做在应用层因此不会受到平台的限制。
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可使用FTP客户端经过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,一般利用FTP协议把网页或程序传到Web服务器上。此外,因为FTP传输效率很是高,在网络上传输大的文件时,通常也采用该协议。
默认状况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。可是,是否使用20做为传输数据的端口与FTP使用的传输模式有关,若是采用主动模式,那么数据传输端口就是20;若是采用被动模式,则具体最终使用哪一个端口要服务器端和客户端协商决定。
4.FTP传输模式
FTP--文件共享服务
①FTP的数据传输分为命令数据与文件数据,命令传输就是客户端要执行的命令,服务端收到后返回给客户端执行结果,如ls命令的执行结果同样,文件传输就是客户端要传输的数据,服务端与客户端数据链接来传输。
②FTP的服务端与客户端创建链接大致的三个步骤:创建链接、传输数据、断开链接。(基于tcp链接方式)
③FTP是基于tcp协议来传输数据的,使用21号端口来创建认证通道,20号端口来创建数据通道。
④FTP是明文传输的。
⑤FTP的用户可分为实体用户(real user),匿名用户(anonymous user),访问用户(gurest user)。
5.FTP的工做模式
因为如今的网络架构中,都会有防火墙来阻止端口与高位端口被主动链接,特别20端口是被禁止主动链接的,由于20端口是FTP的数据端口,因此为了解决客户端或者服务器的防火墙问题,FTP就有了主动和被动两种模式,经过墙内的一端来主动链接外端的一方,这样子就不会被防火墙阻挡了。
①主动模式
通常用于服务端存在防火墙的状况,客户端没法主动链接至服务器的20数据端口,须要服务端主动链接客户端的高位数据端口。
两端在创建tcp通道后,客户端会发送port请求与服务端的21号端口认证链接并发送开放用来创建数据链接的高位端口号。
服务端在收到后,会经过20号端口发送ACK响应请求。
服务端会经过20端口与客户端发送的高位端口创建数据链接通道。
②被动模式
通常用于客户端存在防火墙的状况,服务端在收到链接请求后由于客户端防火墙而没法达到客户端的高位端口,须要客户端主动链接至服务端的数据传输端口。
两端在创建TCP通讯通道链接后,客户端会发送PASV请求给服务端。
服务端在收到PASV请求后,会打开一个高位端口做为数据传输端口来响应给客户端,等待客户端链接。
客户端在收到响应后,就会去链接服务端响应的高位端口创建数据链接通道。
③图解
FTP--文件共享服务
6.FTP用户的类型
①匿名用户
anonymous或ftp
②本地用户
帐户名称、密码等信息保存在passwd、shadow文件中
③虚拟用户
使用独立的帐号/密码数据文件
举例:user_list wangwu 123456 /var/pub
7.VSFTPD
vsftpd是基于ftp协议来对网络数据交换的一种实现,是一个开源的解决方案。
1.)VSftpd软件包
①官方站点:http://vsftpd.beasts.org/(貌似被封了)
②主程序:/usr/sbin/vsftpd
③服务名:vsftpd
④用户控制列表文件
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
⑤主配置文件
/etc/vsftpd/vsftpd.conf
2.)vsftpd基础服务搭建(这里以NFS服务器作测试)linux

[root@NFS ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@NFS ~]# setenforce 0     #关闭 selinux
setenforce: SELinux is disabled
[root@NFS ~]# /etc/init.d/iptables status    #关闭防火墙
iptables: Firewall is not running.
[root@NFS ~]# yum install vsftpd -y
[root@NFS ~]# rpm -qa vsftpd
vsftpd-2.2.2-24.el6.x86_64
[root@NFS ~]# rpm -ql vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd         #pam认证文件
/etc/rc.d/init.d/vsftpd   #服务启动进程
/etc/vsftpd
/etc/vsftpd/ftpusers      #限制登录文件
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf     #主配置文件
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/sbin/vsftpd           #程序文件
......
/var/ftp            #ftp家目录
/var/ftp/pub
[root@NFS ~]#

配置文件参数说明数据库

anonymous_enable=YES   #  是否容许匿名用户链接服务器端。
local_enable=YES    #  是否容许系统用户链接服务器端。
write_enable=YES   #  是否容许本地系统用户上传文件。
#anon_upload_enable=YES  #  是否容许匿名用户上传文件(默认不容许)。
#anon_mkdir_write_enable=YES   #  是否容许匿名用户建立目录(默认不容许)。
#anon_other_write_enable=YES   #  匿名用户其余的写权限(删除文件权限)。
dirmessage_enable=YES  #  进入某个目录是否显示欢迎信息。
xferlog_enable=YES  #  是否打开传输日志。
#xferlog_file=/var/log/xferlog   #  传输日志存放路径(默认没有启用)。
xferlog_std_format=YES  #  日志格式是否为标准格式的参数。(不必、用于日志分析)
#chown_uploads=YES  #  用户上传文件后是否将其属主改成其余用户。
#chown_username=whoever  #  用户上传完成后将属主改成的用户名。
#idle_session_timeout=600   #  超时参数,默认会话超过 600 秒断开用户链接(控制链接相关)。
#data_connection_timeout=120     #  数据链接相关超时参数。
#ascii_upload_enable=YES  #  是否使用文本格式上传文件。
#ascii_download_enable=YES  #  是否使用文本格式下载文件。    
提示:除非只传文本格式数据,不然上面两个 ascli 参数须要注释掉,避免二进制数据被转换为文本格式。                         
#chroot_local_user=YES   #  是否让全部用户禁锢在家目录(若是想选择用户用下面两个参数)。                         
#chroot_list_enable=YES   #  是否认义用一个文件将特定用户所在它的家目录下。                                                     
#chroot_list_file=/etc/vsftpd/chroot_list   #  指定建立用户列表文件的路径(全部该文件目录都将被禁锢在用户的家目录中),该文件默认不存在,须要手动建立。
listen=YES   #  表示 vsftpd 是否工做为一个独立的守护进程。
pam_service_name=vsftpd  #  定义 pam 配置文件的名字。
userlist_enable=YES   #  是否开启禁止访问 FTP 的用户列表功能。