FTP(File Transfer Protocol,文件传输协议),是一种应用层协议,可以实现很好的实现跨平台,但是无法实现一些其他的功能,像如文件系统挂载等功能。NFS(Network File System,网路文件系统)是工作在内核模式下的,因此不能很好的实现跨平台,一般只能是Linux主机或者Unix主机之间,但可以实现挂载使用等功能。SMB(Service Message Block,服务消息块协议),能够实现Windows和Linux主机之间的文件共享服务,可实现跨平台,在Linux上实现了CIFS(Common Internet File System)协议。 一、FTP协议1、FTP原理知识是一种C/S架构,基于套接字通信,用来在两台机器之间相互传输文件。FTP协议用到2种tcp连接:一是命令连接,用于客户端和服务端之间传递命令,监听在tcp/21端口;另一个是数据传输连接,用来传输数据,监听的端口是随机的。 2、FTP的被动模式、主动模式主动模式的原理如下图:
主动模式存在的问题是,在客户端一般都会有防火墙的设置,当服务端与客户端数据进行数据通信时,客户端的防火墙会将服务端的端口挡在外面。此时,通信就会受阻。因此,被动模式就产生了。 被动模式的原理图如下:
被动模式也会存在防火墙的问题,客户端与服务端传输数据时,在服务端也会有防火墙,但在服务端的防火墙有连接追踪的功能,解决了防火墙的问题。因此,一般使用被动模式比较多。 3、FTP的用户认证FTP支持系统用户,匿名用户,和虚拟用户三种用户认证。 匿名用户:登陆用户名是anonymous,没有密码 系统用户:是FTP服务器端的本地用户和对应的密码,默认访问的是用户家目录 虚拟用户:仅用于访问服务器中特定的资源,常见的虚拟用户认证的方式有使用文件认证或使用数据库进行认证。最终也会将这些虚拟用户同一映射为一个系统用户,访问的默认目录就是这个系统用户的家目录。 4、常见的状态信息码1**:提示信息 2**:成功执行的状态码 3**:需要进一步提供补充类的信息码,例如在输入用户账号信息后出现此状态,提示继续输入密码 4**:客户端类的错误 5**:服务端错误 5、常见的实现FTP协议的工具服务端: Linux端:wu-ftpd,pureftp,vsftpd(Centos 6上默认提供的) windows端:ServU,FileZilla-Server 客户端工具: Linux操作系统:ftp,lftp,lftpget,wget,cul,gftp等 windows操作系统:FileZilla 6、vsftpd在CentOS上默认提供的是vsftpd(Very Secure FTP),以安全著称。
用户认证配置文件:/etc/pam.d/vsftpd 7、常见的的vsftpd的参数设置匿名用户的配置:
anonymous_enable=YES #允许匿名用户登录
系统用户的配置:
local_enable=YES #允许本地用户的登录
禁锢所有的ftp本地用户于其家目录中: chroot_local_user=YES #允许本地用户只能访问自己的家目录,不允许访问其他目录,适用于所有的用户
禁锢文件中指定的ftp本地用户于其家目录中: chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
目录消息: dirmessage_enable=YES # 开启目录提示信息 在对应的目录下创建一个.message的文件,里面的内容当我们在访问时此目录时,会看到提示的信息。
日志: xferlog_enable=YES # 打开传输日志 xferlog_std_format=YES # 是否使用标准格式 xferlog_file=/var/log/xferlog #日志文件路径
改变上传文件的属主: chown_uploads=YES chown_username=whoever #上传文件后立即改变文件的属主名
vsftpd使用pam完成用户认证,其用到的pam配置文件: pam_service_name=vsftpd #用户认证文件,在/etc/pam.d/目录下
是否启用控制用户登录的列表文件 userlist_enable=YES userlist_deny=YES|NO # 为yes的意思是,userlist_file是黑名单文件;是no的意思是userlist_file是白名单文件 userlist_file=/etc/vsftpd/user_list,默认文件为/etc/vsftpd/user_list
连接限制: max_clients: 最大并发连接数; max_per_ip: 每个IP可同时发起的并发请求数;
传输速率: anon_max_rate: 匿名用户的最大传输速率, 单位是“字节/秒”; local_max_rate: 本地用户的最大传输速率, 单位是“字节/秒”; 8、虚拟用户(基于mysql实现)一、安装所需要程序
二、创建虚拟用户账号
三、配置vsftpd
四、启动vsftpd服务
五、配置虚拟用户具有不同的访问权限
二、NFS协议1、NFS的几个概念RPC(Remote Procedure Call Protocol远程过程调用协议):简单的说是函数调用(远程主机上的函数) 一部分功能由本地程序完成 另一部分功能由远程主机上的函数完成。客户端挂载了nfs服务器的文件系统时,进行一些操作,但是这些操作服务端如何知道呢??这可是在内核级别上实现协议。RPC就解决了这个问题,它会将客户端的操作的函数调用发送到服务器端,由服务器端执行这些函数调用。 idmapd:想想这种情形,nfs客户端在挂载文件系统以后,在本地以某用户的身份创建了一个文件,在服务器端这个文件的属主和属组是哪个用户呢?早期是通过NIS(Network Information Services网络信息服务)来解决这个问题的,但是在传输账号和密码时,使用的是明文传输,现在使用LDAP+clbbler来实现的。但是,NFS使用的是idmapd这个服务,有rpc提供,将所有的用户后映射为nfsnobody,但是在访问的时候,还是以本地UID对应的本地用户来使用的。 mounted:NFS是通过什么来控制那些客户端可以访问,那些不可以访问的呢?NFS只支持通过IP来控制客户端,而这个功能是由守护进程mounted来实现的,它监听的端口是半随机的。所谓的半随机指的是,这个随机端口是由rpc服务来决定的,而rpc是通过随机的方式。作用等等同于小区大门保安的作用。 2、NFS请求过程在CentOS6.5中,NFS服务端监听在tcp和udp的2049端口,服务名是nfs、pc监听于tcp和udp的111号端口,服务名是portmapper。 请求过程:当客户端试这去挂载使用nfs共享的文件系统是,客户端首先回去与postmapper(tcp/111)端口去注册使用,此时postmapper会随机分配一个端口给mounted,然后mounted这个守护进程会来验证客户端的合法性,验证通过后,会把请求交给nfs服务,客户端此时可以挂载使用了,用户在创建文件时,会使用到idmapd的守护进程来映射属主。其实idmapd也是有rpc服务提供的,只不过在这里,nfs服务使用到用户映射的功能时,会自动的去调用此守护进程。 3、服务的配置在服务端,只需要安装nfs-utils就可以直接使用,nfs服务直接是内核的模块。
服务端共享的目录是通过 /etc/exports这个文件共享出去的。这个文件的书写格式如下: 共享目录 客户端(选项1,选项2) 客户端(选项1,选项2) … 示例: /mydata 172.16.0.0/16(ro,async,no_root_squash) www.example.com(ro)
4、常用命令showmount是用来查看nfs服务的情况 用法:showmount [ -adehv ] [ --all ] [ --directories ] [ --exports ] [ --help ] [ --version ] [ host ] 可以使用短选型,也可以使用长选项。
-a :这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。 exportfs:一般用在当NFS服务启动后,使用此命令来控制共享目录的导出
用法:exportfs [-aruv] 5、客户端的使用先使用 showmont -e SER_NAME 来发现服务端的共享的目录 然后使用mount挂载使用,格式: mount -t nfs SER_NAME:/data /parth/to/someponit [-o 选项] mount -t nfs 192.168.1.99:/mydat /mnt -o rsize=4096 rsize 的值是从服务器读取的字节数。wsize 是写入到服务器的字节数。默认都是1024, 如果使用比较高的值,如8192,可以提高传输速度。 三、samba服务(基本介绍)1、协议smb: Service Message Block CIFS: Common Internet File System通用网络文件系统,是windows主机之间共享的协议,samba实现了这个协议,所以可以实现wondows与linux之间的文件共享服务。 监听的端口有: tcp/137 udp/137 tcp/139 udp/139 137:是实现NetBIOS协议,实现解析windows之间主机名的解析,实现在windows的网上邻居可以看到Linux的主机名。 139:是实现cifs协议 2、如何访问?在Linux中:
交互式数据访问:
获取到共享信息之后,
基于挂载的方式访问:
3、如何配置samba服务器(Linux)# yum -y install samba 服务脚本: /etc/rc.d/init.d/nmb # 实现 NetBIOS协议 /etc/rc.d/init.d/smb # 实现cifs协议 主配置文件: /etc/samba/smb.conf samba用户: 账号:都是系统用户, /etc/passwd 密码:samba服务自有密码文件, 将系统用户添加为samba的命令:smbpasswd smbpasswd: -a Sys_User: 添加系统用户为samba用户 -d :禁用用户 -e: 启用用户 -x: 删除用户 配置文件: /etc/samba/smb.conf 配置文件包括全局设定,特定共享的设定,私有家目录,打印机共享,自定义共享 全局配置:
自定义共享:
测试配置文件是否有语法错误,以及显示最终生效的配置:
至此,三种常见的文件服务介绍完成。 (责任编辑:IT) |