linux网络中的网络文件共享服务(FTP+NFS)
存储类型及应用场景
存储类型分为三种
- 直连式存储:Direct-Attached Storage,简称DAS
存储设备直接连接到服务器总线上,存储设备只与一台独立的主机连接,其他主机不能使用这个存储设备
- 网络附加存储:Network-Attached Storage,简称NAS(存储和管理空间都在远程)
NAS存储就是存储设备通过标准的网络拓扑结构(比如以太网)添加到一群计算机上,NAS是文件级的存储方法,通常也被叫做附加存储
- 存储区域网络:Storage Area Network,简称SAN(可以使用空间,管理也是你来管理)
存储区域网络,这个是通过光纤通道或以太网交换机连接存储阵列和服务器主机,最后成为一个专用的存储网络。
应用场景:
- DAS虽然比较古老了,但是还是很适用于那些数据量不大,对磁盘访问速度要求较高的中小企业
- NAS多适用于文件服务器,用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低
- SAN则适用于大型应用或数据库系统,缺点是成本高、较为复杂
一.FTP文件传输协议
1.1FTP的工作原理
文件传输协议:File Transfer Protocol 早期的三个应用级协议之一,基于C/S结构
- 数据传输格式:二进制(默认)和文本
- 双通道协议:命令和数据连接 21 命令端口(账号的权限,认证等) 20 数据端口(数据传输)
1.2三种用户类型和两种工作模式
三种用户类型:
两种工作模式(从服务器角度出发):
服务器主动连接客户端 命令(控制):客户端:随机port —> 服务器:21/tcp 数据:客户端:随机port 服务器:21/tcp 数据:客户端:随机port —> 服务器:随机port /tcp
简单说就是服务端开启随机端口等待客户端连接,通过命令端口21,告知客户端开启了哪一个随机端口
1.3 常见的FTP相关软件
FTP服务器端软件
Wu-ftpd,Proftpd,Pureftpd,Filezilla Server,Serv-U,Wing FTP Server,IIS等
vsftpd:Very Secure FTP Daemon
CentOS 默认的FTP服务器
高速,稳定,下载速度是WU-FTP的两倍
ftp.redhat.com数据:单机最多可支持15000个并发
vsftpd官网: security.appspot.com/vsftpd.html
2.vsftpd
由 vsftpd 包提供,不再由xinetd管理
用户认证配置文件:/etc/pam.d/vsftpd
配置文件: /etc/vsftpd/vsftpd.conf
用户和其共享目录:
匿名用户(映射为系统用户ftp)共享文件位置:/var/ftp
系统用户:用户家目录
虚拟用户:为其映射的系统用户的家目录
2.1 vsftpd的基础操作
2.11 安装服务
安装完毕以后使用服务之前切记服务端和客户端的防火墙都需要关闭
2.12 修改默认命令端口
目前登录没有任何问题
然后我们去服务器端修改默认端口(配置文件:/etc/vsftpd/vsftpd.conf)
2.13 vsftp配置文件中的一些选项及说明
主动模式端口 connect_from_port_20=YES 主动模式端口为20 ftp_data_port=20 (默认) 指定主动模式的端口 被动模式端口 pasv_min_port=6000 0为随机分配,端口范围会影响客户端的并发数 pasv_max_port=6010 -使用当地时间 use_localtime=YES 使用当地时间(默认为NO,使用GMT) -匿名用户登录限制 anonymous_enable=YES 支持匿名用户,CentOS8 默认不允许 匿名 no_anon_password=YES 匿名用户略过口令检查 , 默认NO -匿名用户上传 anon_upload_enable=YES 匿名上传,注意:文件系统权限 anon_mkdir_write_enable=YES 匿名建目录 chmod 777 /var/ftp/pub # 注意需要开启文件系统访问的权限, #虽然能给FTP根目录写权限,但是一般是不对跟做操作多的,只能给下级子目录写权限 #否则会以下报错 500 OOPS: vsftpd: refusing to run with writable root inside chroot() Login failed. 421 Service not available, remote server has closed connection 匿名用户下删除文件 anon_world_readable_only=NO 只能下载全部读的文件, 默认YES anon_umask=0333 指定匿名上传文件的umask,默认077,注意:0333中的0不能省略 anon_other_write_enable=YES 可删除和修改上传的文件,默认NO 指定匿名用户上传文件的默认所有者和权限 chown_uploads=YES #默认NO chown_username=zhangsan chown_upload_mode=0644 Linux系统用户 local_enable=YES 是否允许linux用户登录 write_enable=YES 允许linux用户上传文件 local_umask=022 指定系统用户上传文件的默认权限对应umask 使用系统用户登录是在系统用户的家目录下 [root@localhost /]#ftp 192.168.1.100 Connected to 192.168.91.100 (192.168.1.100). 220 (vsFTPd 3.0.2) Name (192.168.1.100:root): zhangsan 331 Please specify the password. Password: ftp> pwd 257 "/home/zhangsan" #默认是可以上传下载的,也可以去别的目录下载 让每个用户拥有独有配置 user_config_dir=/etc/vsftpd/conf.d/ //可以新建用户文件夹,存放用户的个性化配置 [root@localhost /]#mkdir -p /etc/vsftpd/conf.d [root@localhost /]#vim /etc/vsftpd/conf.d/zhangsan local_root=/home/zhangsan //限制zhangsan只能在自己的家目录下操作 禁锢系统用户 #禁锢所有系统用户在家目录中 chroot_local_user=YES //禁锢系统用户,默认NO,即不禁锢 开启白名单黑名单 chroot_list_enable=YES //默认是NO chroot_list_file=/etc/vsftpd/chroot_list //默认值 当chroot_local_user=YES和chroot_list_enable=YES时,则chroot_list中用户不禁锢,即白名单 当chroot_local_user=NO和chroot_list_enable=YES时, 则chroot_list中用户禁锢,即黑名单 日志 #ftp 默认启动日志 //wu-ftp 日志:默认启用 xferlog_enable=YES #启用记录上传下载日志,此为默认值 xferlog_std_format=YES #使用wu-ftp日志格式,此为默认值 xferlog_file=/var/log/xferlog #可自动生成, 此为默认值 #vsftpd日志:默认不启用 dual_log_enable=YES 使用vsftpd日志格式,默认不启用 vsftpd_log_file=/var/log/vsftpd.log 可自动生成, 此为默认值 限速 [root@localhost /]#vim /etc/vsftpd/vsftpd.conf anon_max_rate=1024000 //匿名用户 local_max_rate=10240000 //本地用户 //限制用户下载速度1024000表示1m/s
二、NFS
1.NFS的概念
NFS(Network File System 网络文件服务),是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。
NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。(远端过程调用:自己没有这种功能,调用别人的功能) NFS 也是 NAS 存储 设备必然支持的一种协议,以完成远程到本地的映射过程。
在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs。
2.NFS的原理及优缺点
nfs的优缺点:
优点:
节省本地存储空间,将常用的数据,如:/home目录,存放在NFS服务器上且可以通过网络访问,本地终端将可减少自身存储空间的使用
缺点:
安全性较低
PS:与FTP不同,FTP是普通的文件共享软件,而NFS 是文件系统,是操作系统内核来管理的
3.NFS的软件介绍
软件包:nfs-utils(包括服务器和客户端相关工具,CentOS8 最小化安装时默认没有安装)
相关软件包:rpcbind(必须) ,tcp_wrappers
Kernel支持:nfs.ko
端口:2049(nfsd), 其它端口由portmap(111)分配
PS:CentOS 6 开始portmap进程由rpcbind代替
NFS服务主要进程:
- rpc.nfsd 最主要的NFS进程,管理客户端是否可登录
- rpc.mountd 挂载和卸载NFS文件系统,包括权限管理
- rpc.lockd 非必要,管理文件锁,避免同时写出错
- rpc.statd 非必要,检查文件一致性,可修复文件
NFS相关文件:
- 日志:
/var/lib/nfs/
- 配置文件:
/etc/exports
/etc/exports.d/*.exports
3.1 NFS共享配置文件格式
#文件路径 /etc/eports #文件内容 /dir 主机1(opt,opt2) 主机2(opt,opt2,) #示例: vim /etc/exports /data * //允许所有,访问共享目录data 共享文件夹 允许访问的主机(权限)
可用通配符*表示所有客户端
IP networks:两种掩码格式均支持
例如:
- 172.18.0.0/255.255.0.0
- 172.18.0.0/16
opt选项:
4.NFS工具
exportfs
exportfs:可用于管理NFS导出的文件系统 常见选项 -v #查看本机所有NFS共享 -r #重读配置文件,并共享目录 -a #输出本机所有共享 -au #停止本机所有共享 #exports配置常用参数 #ro 只读 #rw 读写 #root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 #no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 #all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 #sync 同时将数据写入到内存与硬盘中,保证不丢失数据 #async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
showmount
常见用法: showmount -a #显示所有共享的目录 showmount -e #显示特定 NFS 服务器上的共享目录 showmount -l #仅显示挂载点的主机名或IP地址 [root@centos7 ~]#showmount -e 10.0.0.8 Export list for 10.0.0.8: /data/wordpress *
mount.nfs
客户端NFS挂载 NFS相关的挂载选项:man 5 nfs fg #(默认)前台挂载 bg #后台挂载 hard #(默认)持续请求 soft #非持续请求 intr #和hard配合,请求可中断 rsize #和wsize 一次读和写数据最大字节数,rsize=32768 _netdev #无网络连接不挂载 vers #指定版本,客户端centos8默认4.2 ,centos7默认4.1 centos6默认4.0
开机挂载
即在文件 /etc/fstab 添加配置
ip:/public /mnt/nfs nfs defaults,_netdev 0 0 挂载的文件 挂载点 文件系统
实操:
//服务端 [root@localhost ftp]#cd / [root@localhost /]#mkdir test [root@localhost /]#cd /test [root@localhost test]#touch aaa [root@localhost test]#vim /etc/exports /test * 将test共享给所有主机 [root@localhost test]#systemctl start nfs [root@localhost test]#systemctl start rpcbind [root@localhost test]#exportfs -v //查看本机所有NFS共享 /test (sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash) [root@localhost test]# //客户端 [root@localhost /]#systemctl start nfs [root@localhost /]#systemctl start rpcbind [root@localhost /]#mount 192.168.1.10:/test /mnt //将服务端的文件挂载过来 [root@localhost /]#cd /mnt [root@localhost mnt]#ls aaa