linux 网络文件共享服务
1、存储类型
1.1存储类型分类
- 直连式存储:DAS
DAS存储设备与服务器主机之间的连接通道通常采用SCSI连接,DAS存储设备主要是磁盘阵列(RAID:)、磁盘簇JBOD)等。 - 网络附加存储:NAS
与DAS以及SAN不同,NAS是文件级的存储方法。采用NAS较多的功能是用来进行文件共享。NAS存储也通常被称为附加存储。 - 存储区域网络:SAN
存储区域网络,这个是通过光纤通道或以太网交换机连接存储阵列和服务器主机,最后成为一个专用的存储网络。
1.2三种存储架构的应用场景
- DAS虽然比较古老了,但是还是很适用于那些数据量不大,对磁盘访问速度要求较高的中小企业
- NAS多适用于文件服务器,用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低
- SAN则适用于大型应用或数据库系统,缺点是成本高、较为复杂
2、FTP文件传输协议
2.1文件传输协议
FTP早期的三个应用级协议之一,基于C/S结构
数据传输格式:二进制(默认)和文本
双通道协议:命令和数据连接 21 命令端口(权限,认证) 20 数据端口
2.2两种模式
- 主动(PORT style):服务器主动连接客户端
命令(控制):客户端:随机port —> 服务器:21/tcp
数据:客户端:随机port <—服务器:20/tcp
- 被动(PASV style):服务器被动等待客户端连接
命令(控制):客户端:随机port —> 服务器:21/tcp
数据:客户端:随机port —> 服务器:随机port /tcp
2.3用户类型
- 匿名用户:ftp,anonymous,对应Linux用户ftp
- 系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow
- 虚拟用户:特定服务的专用用户,独立的用户/密码文件
2.4常见的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官网: https://security.appspot.com/vsftpd.html
2.3 vsftpd软件介绍
由 vsftpd 包提供,不再由xinetd管理
用户认证配置文件:/etc/pam.d/vsftpd
用户和其共享目录
- 匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp
- 系统用户共享文件位置:用户家目录
- 虚拟用户共享文件位置:为其映射的系统用户的家目录
2.3.1基础操作
安装ftp软件 yum install vsftpd -y
开启服务 systemctl start vsftpd
服务端同样安装vsftpd,并进入配置文件,修改其默认的端口号vim /etc/vsftpd/vsftpd.conf
当服务端口号修改完成后,客户端连接不加端口号时,服务端会拒绝访问
主动模式端口
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
2.3.2匿名用户上传与下载文件
服务器端配置
进入配置文件进行修改
允许匿名用户上传文件。默认已注释,需取消注释
允许匿名用户创建(上传)目录。默认已注释,需取消注释
允许删除、重命名、覆盖等操作。需添加
客户端
客户端删除服务端的文件
服务端
2.3.3控制系统用户等信息
[root@node2 pub]#vim /etc/vsftpd/vsftpd.conf
#最后加入 复制注意空格
guest_enable=YES
guest_username=ftp
#local_root=/ftproot 可以注释此行,默认所有用户都在 ftp用户的家目录
让每个用户拥有独有配置
[root@node2 pub]#vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/conf.d/
#可以自由指定
针对 zhangsan lisi 用户
[root@node2 data]#mkdir -p /etc/vsftpd/conf.d
#先建立好配置文件夹
#编写子配置文件
[root@node2 data]#vim /etc/vsftpd/conf.d/lisi
local_root=/data/lisi
[root@node2 data]#vim /etc/vsftpd/conf.d/zhangsan
local_root=/data/zhangsan
2.4禁锢系统用户
2.4.1禁锢所有系统用户在家目录中
chroot_local_user=YES #禁锢系统用户,默认NO,即不禁锢
2.4.2禁锢用户开启白名单和黑名单
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中用户禁锢,即黑名单
黑名单限制user登录
打开黑名单
vim /etc/vsftpd/vsftpd.conf
白名单登录
服务端配置 vim /etc/vsftpd/vsftpd.conf
vim user_list 将user从列表中移除
客户端连接服务端 ftp 192.168.190.200
由于ftp是明文传输, 抓取是可可以获取密码的 默认是不让使用root 用户登录
进入ftbusers删除root,user_list里也加入root(现在是白名单)
可以实现root登录
3、NFS
3.1概念
网络上共享文件系统的协议,运行多个服务器之间通过网络共享文件和目录
- 服务端:将指定目录标记为共享目录,服务段有访问权限,共享目录有全部权限
- 客户端:通过nfs协议,发送请求到服务器,获取共享目录的操作权限
3.2NFS工作原理
1. 客户端请求:NFS 的客户端向 NFS 服务器发送文件访问请求。这可以是读取文件、写入文件或执行其他文件操作。
2. 访问协议:客户端使用 RPC(Remote Procedure Call)协议与服务器通信。客户端会发送特定的 RPC 调用来请求文件操作,如打开文件、读取文件或关闭文件。
3. NFS 服务端:NFS 服务器收到来自客户端的请求,并解析这些请求。服务器根据客户端请求的内容,在本地文件系统上执行相应的操作。
4. 文件传输:当服务器执行文件操作时,它会读取或写入相应的文件或目录。数据通过网络传输,从服务器发送到客户端或从客户端发送到服务器。
5. 返回结果:服务器完成请求后,会将执行结果返回给客户端。这可能包括成功的确认、文件内容、错误信息等。
3.3NFS的优点
1.共享,目录可以共享
2.透明,不关心底层访问网络细节,能访问即可
3.性能,读写性能高,访问速度快
4.可靠,具有一致性,服务端和客户端的操作同步。
3.4NFS软件介绍
软件包:nfs-utils(包括服务器和客户端相关工具,CentOS8 最小化安装时默认没有安装)
相关软件包:rpcbind(必须),tcp_wrappers
Kernel支持:nfs.ko
端口:2049(nfsd), 其它端口由portmap(111)分配
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.5NFS共享配置文件格式
/dir 主机1(opt1,opt2) 主机2(opt1,opt2)...
vim /etc/exports
...
共享文件夹 允许访问的主机[权限] #添加的内容
...
:wq
#例如
/data * #允许所有访问共享目录/data
3.6NFS工具
3.6.1exportfs
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
优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
3.6.2showmount
常见用法:
showmount -a #显示所有共享的目录
showmount -e <服务器主机名或IP地址> #显示特定 NFS 服务器上的共享目录
showmount -l #仅显示挂载点的主机名或IP地址
[root@centos7 ~]#showmount -e 10.0.0.8
Export list for 10.0.0.8:
/data/wordpress *
3.6.3mount.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
3.7模拟实现NFS
服务端配置
#关闭防火墙和selinux
systemctl stop firewalld
setenforce 0
#安装nfs-utils和rpcbind软件包
yum install nfs-utils rpcbind -y
#新建共享目录,在目录内创建文件
mkdir /test
touch /test/t1
#给共享文件夹增加权限
chmod 777 /test/
vim /etc/exports编辑配置文件
#重新启动程序
systemctl restart rpcbind
systemctl restart nfs
#查看本机所有的NFS共享
exportfs -v
服务端配置
安装rpcbind和nfs
yum install nfs-utils rpcbind -y
关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
启动程序
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl restart nfs
#查看共享文件夹
showmount -e 192.168.190.254
服务端
在共享文件夹下重新创建一个新的文件
touch fsj.txt
客户端
查看挂载点有没有刚才新建的文件