一、什么是文件共享服务
简单来说就是文件或存储块设备可以共享给大家使用
(一)、实现共享服务有三种:
1、ftp:属于应用层服务,可以跨平台使用(linux<->unix<-->windows)
2、nfs:属于内核模式,不可以跨平台(linux<-->linux)
3、samba:可以跨平台(linux<-->unix<-->windows)
(二)、实现存储设备与服务器连接的方式有三种:
1、das:连接的磁盘
2、nas:通过nfs/cifs协议实现网络共享文件(文件存储方式)电子邮件、网页服务器、多媒体流服务、档案分享等就适用于nas存储架构。
3、san:通过网线或光纤实现iscsi和fcsan将物理存储设备连接起来使用(块存储方式较底层,需要格式化并挂载当本地磁盘使用)数据库有关的应用适用于san存储架构。
(三)、附:
1、nfs(network file system,网络文件系统)协议实现linux的文件封装共享传输。
2、cifs(common internet file system,公共互联网文件系统)协议实现windows与linux的共享识别,例如samba就是基于cifs(smb)协议实现。
二、ftp
1、ftp是file transfer protocol 文件传输协议的缩写,基于网络来传输文件的应用层通信协议。
2、ftp能够通过网络来传输文件,因为工作在应用层所以不会受到平台的限制。
3、ftp的工作模式
(1)、ftp的数据传输分为命令数据与文件数据,命令传输就是客户端要执行的命令,服务端收到后返回给客户端执行结果,如ls命令的执行结果一样。文件传输就是客户端要传输的数据,服务端与客户端数据连接来传输。
(2)、ftp的服务端与客户端建立连接大体三个步骤,建立连接,传输数据,断开连接。
(3)、ftp是基于tcp协议来传输数据的,使用21号端口来建立认证通道,20号端口来建立数据通道。
(4)、ftp是明文传输的。
(5)、ftp的用户可分为实体用户(real user),匿名用户(anonymous user),访问用户(guest user)。
主动模式与被动模式
由于现在的网络架构中,都会有防火墙来阻止端口与高位端口被主动连接,特别20端口是被禁止主动连接的,因为20端口是ftp的数据端口,所以为了解决客户端或者服务端的防火墙问题,ftp就有了主动和被动两种模式,通过墙内的一端来主动连接外端的一方,这样子就不会被防火墙阻挡。
主动模式:一般用于服务端存在防火墙的情况,客户端无法主动连接至服务端的20数据端口,需要由服务端主动连接客户端的高位数据端口。
被动模式:一般用于客户端存在防火墙的情况,服务端在收到连接请求后因为客户端防火墙而无法达到客户端高位端口,需要客户端主动连接至服务端的数据传输端口。
我们可以看到以上两种工作方式,都是由墙内的一方来发出连接并允许另一端来连接指定端口,墙内的一方就类似是一间房子的主人,而另外一方是客人,客人去访问需要得到主人的同意,并来给你“开门”之后,你才能进到这个屋子。
三、响应码
1xx:信息类
2xx:成功类信息
3xx:提示需要进一步补全内容类
4xx:客户端错误
5xx:服务器端错误
四、用户认证
1、虚拟用户:仅用于访问某特定服务中的资源
nsswitch:network server switch,名称解析框架
配置文件:/etc/nsswitch.conf
模块:/lib64/libnss*,/usr/lib64/libnss*
pam:pluggable authentication module,用户认证框架
配置文件:/etc/pam.conf,/etc/pam.d/*
模块:/lib64/security/
以上两种框架是linux的自带框架,通过库调用的方式自由选择基于系统账户实现,非系统账户实现,还是数据 库账户形式实现不用全部编译进去浪费资源。
2、系统用户:通过nsswitch服务解决用户名称解析,通过pam对系统用户进行认证(/etc/passwd,/etc/shadow)
3、匿名用户:映射为一个系统用户ftp,为ftp用户设置权限
4、虚拟用户:映射为系统某一用户,用户账号密码存储于非/etc/passwd,/etc/shadow
注:匿名用户或虚拟用户虽然和系统用户没有关系,但是登陆后获取系统上的文件权限还是需要映射为系统用户,以系统用户的权限访问系统文件(例如:ftp系统用户,httpd系统用户)
五、vsftpd
vsftpd是基于ftp协议来对网络数据交换的一种实现,是一个开源的解决方案。
vsftpd能攻通过配置,搭建ftp服务器,完成基于网络的数据传输功能。
六、vsftpd+mysql+pam实现过程