名称解析:Username --> UID,Group --> GID ,Service Name --> port,hostname --> IP
Username -->UID :/etc/passwd
Hostname-->IP:DNS,/etc/hosts
Service Name -->Ports:/etc/services,MySQL:services,ports
只要有一种数据存储格式,能够保存对应的数据关系,都可以称为解析库
不同的解析库需要不同的解析方式
各个主机之间实现文件共享服务,工作在应用层的协议,
还有一种基于RPC(Remote Procedure Calling 远程过程调用)的协议有很大的不同,主要用于位于不同主机的两个进程利用二进制实现数据通信。
NFS(network file system)网络文件系统,基于RPC
Samba :CIFS/SMB,共享机制比较底层,实现能够让linux系统支持CIFS协议,实现linux与windows实现文件共享,使linux能够出现在windows的网上邻居中
对我们而言最为关键的是NFS与Samba,
接下来说明ftp服务
FTP:File Transfer Protocol文件传输协议,工作在应用层,主要考虑文件的传输过程,监听在TCP的21端口
有两个连接,只要客户端不断开,那么就长期处于连接状态,客户端请求时,如果问文件存在,那么要开始进行传输,那么要重新打开一个连接,进行传输
因此分为:控制连接(命令连接)与数据连接
控制连接监听在TCP的21号端口一直在线,而数据连接只有当数据进行传输的时候才会打开,按需打开,按需关闭
数据连接:分为两种情况,
主动模式:将服务器监听在tcp的20号端口
被动模式:因为主动模式存在客户端防火墙的问题,对于客户端来说不是一个合理的方式,当客户端请求传输数据的时候,服务器端不是直接将数据发送,而是仍然通过命令连接,给客户端发送一个能够开始传输数据的消息,都不连接20号端口,而是打开一个随机端口进行数据传输,服务器端再也不通过20号端口进行传输。因此在被动模式下,监听的端口随机。
防火墙拥有连接追踪的功能,能够自己判断连接之间的特征,识别请求响应连接彼此之间的关系,
客户端发起的状态为新请求状态,服务器的响应称为ESTABLISHED状态,而客户端请求之后,命令连接打开,数据连接才能启动,命令连接与数据连接之间的关系称为RELATED,相关联的连接。
传输模式有两种:文本(html),二进制方式(mp3.jpeg),遵循文件本身的模式,基于哪种模式的传输,要让服务器与客户端自行协商,否则会有致命的错误
ps:三种类型:结构化数据,半结构化数据,非结构化数据
支持文本命令可以使用telnet,可以使用C/S命令
get mget put mput cd ls 等等众多的命令,类似于本地文件的命令,由客户端进程将命令使用命令连接发送到服务端,由服务端的命令解析来执行操作,
完成数据连接基于套接字来完成,
实现ftp的服务器端程序:
wu-ftpd:华盛顿大学研究的ftpd
proftpd:功能强大的服务器,
vsftpd:Very Secure Ftp Daemon:精小,主要关注ftp的安全性(红帽系统提供)
pureftpd
filezilla新出现的开源服务程序:server&client
windows:Serv-U
实现ftp的客户端程序:
ftp
lftp(命令行格式)
图形格式:
gftpd(红帽)
windows:flasFXP,Cuteftp filezilla
vsftpd:
/etc/vsftpd:配置文件目录
/etc/init.d/vsftpd服务脚本
/isr/sbin/vsftpd:主程序
基于PAM实现用户认证
两个机制/etc/pam.d/*
/lib/security/*
/lib64/security/*
支持虚拟用户放在其他存储空间的,用来表示获取当前服务的用户凭证,不是系统账号,不能登录
不允许root用户以外的用户拥有写权限
vsftpd的安装及配置
1.安装ftp
#wget ftp://172.16.0.1/pub/gls/server.repo -O /etc/yum.repos.d/server.repo
#yum install vsftpd
ftp的用户:
匿名用户: -->对应的系统用户
虚拟用户:--> 对应的系统用户
系统用户
ftp访问的文件一定访问的是用户的家目录,/var/ftp
2.启动
3.测试
anonymous为匿名
这样我们的vsftpd已经开始简单的使用
查看他的配置文件
打开vsftpd.conf,任何的启动指令之前不能有空白字符,否则为语法错误
- anonymous_enable=YES/NO,是否允许匿名用户
- local_enable=YES/NO,是否允许所有用户
- write_enable=YES/NO定义系统用户能否上传文件
- anon_upload_enable=YES/NO定义匿名用户能否上传文件
- anon_mkdir_write_enable=YES/NO定义匿名用户能否创建目录
- dirmessage_enable=YES/NO切换目录时的显示信息
- anon_other_write_enable=YES/NO定义其他的写权限
- xferlog_enable=YES/NO定义是否打开传输日志
- xferlog_file定义日志目录
- chroot_list_enable=YES/NO定义是不是用一个文件来定义它特定用户所在他的家目录下
- chroot_list_file=打算在哪一个文件之中创建一个用户列表,所有的列表中的用户要被禁锢
- listen=YES,vsftpd是否工作为一个独立的守护进程
13. max_client_ip=#定义最多可以几个客户IP进行访问
安全通信方式
1.ftps:ftp+ssl/tls
2.sftp:Opessl,SubSystem,sftp(基于SSH实现)
实现1 的方式:创建一个CA,给ftpd发送一个证书,配置ftp的启用的指令:
接下开要安装ftp的客户端,客户端使用的程序可以是FileZilla,并且完成拥有认证功能的ftp服务还需配置相关的数据库等
欲知后事如何,请看下回分解。