目录
[5.1 exportfs](#5.1 exportfs)
[5.2 showmount](#5.2 showmount)
[5.3 mount.nfs](#5.3 mount.nfs)
一.存储
1.存储类型
存储类型分为三种
-
直连式存储:Direct-Attached Storage,简称DAS
-
网络附加存储:Network-Attached Storage,简称NAS
-
存储区域网络:Storage Area Network,简称SAN
DAS:存储和主机是直连的,家用电脑,服务和硬盘直连,存储和主机在一台机器上
SAN:有一定距离,主机核存储设备距离先对较远 ,只提供空间不提供文件系统,管理等其他软件服务,只相当于多了一块硬盘
NAS:存储在远程,文件系统也在远程,这块空间,你可以直接访问上面的文件,你只能看到文件,文件共享NFS FTP 等都是NAS
2.应用场景
-
DAS虽然比较古老了,但是还是很适用于那些数据量不大,对磁盘访问速度要求较高的中小企业
-
NAS多适用于文件服务器,用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低
-
SAN则适用于大型应用或数据库系统,缺点是成本高、较为复杂二.
二.FTP服务
1.FTP工作原理介绍
FTP(File TransferProtocol,文件传输协议)是典型的C/S架构的应用层协议,需要由服务端软件、客户端软件两个部分共同实现文件传输功能。FTP客户端和服务器之间的连接是可靠的,面向连接的,为数据的传输提供了可靠的保证。tcp协议:20,21端口。
20端口:传输真实数据 21端口:传输命令端口
2.FTP协议的两种模式
(1)主动模式(PORT style):服务器开启20端口主动连接客户端,传递数据
命令(控制):客户端:随机port ----> 服务器:21/tcp
数据:客户端:随机port <----服务器:20/tcp
过程:客户端随机生成一个端口号,主动去连接服务器的tcp21端口,服务器为主动模式那么服务器会主动开启20端口和客户端相连,然后传输数据
(2)被动模式(PASV style):服务器开启随即端口,被动等待客户端连接,然后传递数据
命令(控制):客户端:随机port ----> 服务器:21/tcp
数据:客户端:随机port ----> 服务器:随机port /tcp
过程:客户端随机生成一个端口号,主动去连接服务器的tcp21端口,服务器是被动模式,服务器会产生一个随机的端口号,被动等待客户机来连接后在发送数据
3.用户类型
-
匿名用户:ftp,anonymous,对应Linux用户ftp
-
系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow
-
虚拟用户:特定服务的专用用户,独立的用户/密码文件
4.匿名用户案例
设置匿名用户访问的ftp服务(最大权限)
进入配置文件/etc/vsftpd/vsftpd.conf 修改配置文件
[root@zxy12 ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #开启匿名用户访问,默认开启
write_enable=YES #开放服务器的写权限,默认已开启
local_umask=022 #设置匿名用户所上传数据的权限掩码(反掩码)
local_enable=YES #是否允许linux用户登录
anon_upload_enable=YES #允许匿名用户上传文件,默认已注释,这里需取消注释
anon_mkdir_write_enable=YES #允许匿名用户创建目录,默认已注释,这里需取消注释
anon_other_write_enbale=YES #允许删除、重命名、覆盖等操作。这里需要添加
guest_enable=YES #所有系统用户都映射成guest用户
guest_username=ftp #配合上面选项才生效,指定guest用户
local_root=/ftproot #指定guest用户登录所在目录,但不影响匿名用户的登录目录
user_config_dir=/etc/vsftpd/conf.d/ #每个用户独立的配置文件目录
chroot_local_user=YES #禁锢系统用户,默认NO,即不禁锢
#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 #可自动生成, 此为默认值
修改/var/ftp/pub 文件权限为777
匿名访问测试
三.NFS
1.NFS简介
NFS(Network File System 网络文件服务) 文件系统(软件)文件的权限 NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。 通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源 NFS 也是 NAS 存储 设备必然支持的一种协议
软件包:nfs-utils(包括服务器和客户端相关工具,CentOS8 最小化安装时默认没有安装)
相关软件包:rpcbind(必须),tcp_wrappers
Kernel支持:nfs.ko
端口:2049(nfsd), 其它端口由portmap(111)分配
2.NFS服务主要进程
-
rpc.nfsd 最主要的NFS进程,管理客户端是否可登录
-
rpc.mountd 挂载和卸载NFS文件系统,包括权限管理
-
rpc.lockd 非必要,管理文件锁,避免同时写出错
-
rpc.statd 非必要,检查文件一致性,可修复文件
说明:CentOS 6 开始portmap进程由rpcbind代替
日志:/var/lib/nfs/
NFS配置文件:
/etc/exports
/etc/exports.d/*.exports
3.NFS特点
(1)采用TCP/IP传输网络文件
(2)安全性低
(3)简单易操作
(4)适合局域网环境
4.NFS共享配置文件格式
/dir 主机1(opt1,opt2) 主机2(opt1,opt2)
格式:共享目录 客户机地址 (权限)
默认选项:(ro,sync,root_squash,no_all_squash)
ro,rw 只读和读写
async 异步,数据变化后不立即写磁盘,先写入到缓冲区中,过一段时间再写入磁盘,性能高,安全性低
sync(1.0.0后为默认)同步,数据在请求时立即写入共享存储磁盘,性能低,安全性高
root_squash (默认)远程root映射为nfsnobody,UID为65534,CentOS8 为nobody,CentOS 7以前的版本为nfsnobody
no_root_squash 远程root映射成NFS服务器的root用户
all_squash 所有远程用户(包括root)都变成nfsnobody,CentOS8 为nobody
no_all_squash (默认)保留共享文件的UID和GID
anonuid和anongid 指明匿名用户映射为特定用户UID和组GID,而非nobody,可配合all_squash使用
5.NFS工具
5.1 exportfs
exportfs:可用于管理NFS导出的文件系统
常见选项:
exportfs -v #查看本机所有NFS共享
exportfs -r #重读配置文件,并共享目录
exportfs -a #输出本机所有共享
exportfs -au #停止本机所有共享
示例:
进入/etc/exports 配置文件,编辑配置文件
exportfs -v #查看本机所有NFS共享
exportfs -r #重读配置文件,并共享目录
exportfs -au #停止本机所有共享
5.2 showmount
远端客户查看有哪些共享文件夹
常见用法:
showmount -e hostname
[root@centos7 ~]#showmount -e 192.168.240.11
Export list for 192.168.240.11:
/share *
5.3 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
示例:
将一些文件复制到/share下
临时挂载
主机11 ip地址 :文件夹 主机12的挂载目录
永久挂载
[root@zxy12 ~]# vim /etc/fstab
192.168.240.11:/share /mnt nfs defaults,_netdev 0 0
netdev:如果前面不通就不进行挂载
6.创建文件夹实验
在主机12上/mnt下创建文件夹
编辑主机11配置文件/etc/exprots,增加权限
no_all_squash :不压榨普通用户
root_squash :压榨其他主机管理员
主机12在/mnt下创建文件夹
yum install nfs-utils.x86_64 -y
#客户端服务端两边都需要安装 nfs软件
vim /etc/exports
/share *
/share *(rw)
/share *(rw,no_root_squash)
#不压榨root
/share *(rw,no_root_squash,all_squash
#都压榨
/nfs1 *(rw,no_root_squash,all_squash,anonuid=1003,anongid=1003)
#指定压榨成统一用户
#文件系统需要权限
chmod 777 /share