【Linux网络】网络文件共享

2024-05-06 14:04
文章标签 linux 网络 文件共享

本文主要是介绍【Linux网络】网络文件共享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、存储类型

二、FTP文件传输协议

2.1 FTP工作原理

2.2 FTP用户类型

2.3 FTP软件使用

2.3.1 服务端软件vsftpd

2.3.2 客户端软件ftp

2.4 FTP的应用

2.4.1 修改端口号

2.4.2 匿名用户的权限

2.4.3 传输速率

三、NFS

3.1 工作原理

3.2 NFS软件介绍

3.3 NFS配置文件格式

3.4 NFS工具

3.5 NFS实操 


一、存储类型

直连式存储:Direct-Attached Storage,简称DAS

存储区域网络:Storage Area Network,简称SAN(可以使用空间,管理也是你来管理)

网络附加存储:Network-Attached Storage,简称NAS(存储和管理空间都在远程

三种存储架构的应用场景

  • DAS虽然比较古老了,但是还是很适用于那些数据量不大,对磁盘访问速度要求较高的中小企业

  • SAN则适用于大型应用或数据库系统,缺点是成本高、较为复杂

  • NAS多适用于文件服务器,用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低

二、FTP文件传输协议

2.1 FTP工作原理

主动模式

客户端会随机产生一个端口,主动去连接服务器的 tcp 21 端口,如果服务器是主动模式,则服务器会主动开启 tcp 20 端口和客户端连接,然后传输数据。

被动模式

客户端会随机产生一个端口,主动去连接服务器的 tcp 21 端口,如果服务器是被动模式,则服务器会产生一个随机的端口号,被动等待客户端来连接后再发送数据。

客户端如何知道,服务器随机产生的端口号?
服务端通过 tcp 21 端口,将随机的端口号告知客户端

FTP服务端软件:vsftpd、filezilla

FTP客户端软件:ftp

ftp的根目录为/var/ftp,根目录不可以设有最大权限,否则无法正常使用

2.2 FTP用户类型

  • 匿名用户:ftp,anonymous,对应Linux用户ftp

  • 系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow(超级管理员额外处理)

  • 虚拟用户:特定服务的专用用户,独立的用户/密码文件(不在/etc/passwd中,只是用来登录的)

用户和其共享目录

  • 匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp

  • 系统用户共享文件位置:用户家目录

  • 虚拟用户共享文件位置:为其映射的系统用户的家目录

2.3 FTP软件使用

2.3.1 服务端软件vsftpd

vsftpd可以进行pam认证,用户认证配置文件:/etc/pam.d/vsftpd

配置文件:

/etc/vsftpd/vsftpd.conf

2.3.2 客户端软件ftp

ftp 192.168.254.10    #连接开启vsftpd服务的服务端的IP#连接后的默认工作路径为/var/ftp
#使用默认ftp用户登录后,会创建该用户且家目录在/var/ftp下,可以修改其家目录来切换工作路径

2.4 FTP的应用

2.4.1 修改端口号

服务端:修改默认端口号vim /etc/vsftpd/vsftpd.conf
#随便一行插入
listen_port=2121    #默认为21
systemctl restart vsftpd
#重启服务
ss  -natp | grep 2121
#查看端口
客户端:连接时,需要指定更改的端口号ftp   192.168.254.10   2121#注意,此处不需要加选项-p,直接在IP后写空格+端口号
主动模式端口:connect_from_port_20=YES 主动模式端口为20
ftp_data_port=20 (默认) 指定主动模式的端口
被动模式端口:pasv_min_port=6000   0为随机分配,端口范围会影响客户端的并发数
pasv_max_port=6010同时允许6000 - 6010 共十一台机器访问

2.4.2 匿名用户的权限

vim /etc/vsftpd/vsftpd.conf匿名用户的登录
anonymous_enable=YES 支持匿名用户,CentOS8 默认不允许匿名
no_anon_password=YES 匿名用户略过口令检查 , 默认NO匿名用户的上传
anon_upload_enable=YES 匿名上传,注意:文件系统权限
anon_mkdir_write_enable=YES 匿名建目录anon_world_readable_only=NO 只能下载全部读的文件, 默认YES
anon_umask=0333 指定匿名上传文件的umask,默认077,注意:0333中的0不能省略
anon_other_write_enable=YES 可删除和修改上传的文件,默认NO需要给匿名用户的家目录写权限,并且家目录不能拥有最大权限777
匿名用户下载删除文件vim /etc/vsftpd/vsftpd.conf......
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

2.4.3 传输速率

anon_max_rate=0 匿名用户的最大传输速率,以字节为单位,比如:1024000表示1MB/s
local_max_rate=0 本地用户的最大传输速率

三、NFS

3.1 工作原理

1. 客户端请求:NFS 的客户端向 NFS 服务器发送文件访问请求。

2. 访问协议:客户端使用 RPC(Remote Procedure Call)协议与服务器通信。客户端会发送特定的 RPC 调用来请求文件操作,如打开文件、读取文件或关闭文件。

3. NFS 服务端:NFS 服务器收到来自客户端的请求,并解析这些请求。服务器根据客户端请求的内容,在本地文件系统上执行相应的操作。

4. 文件传输:当服务器执行文件操作时,它会读取或写入相应的文件或目录。数据通过网络传输,从服务器发送到客户端或从客户端发送到服务器。

5. 返回结果:服务器完成请求后,会将执行结果返回给客户端。这可能包括成功的确认、文件内容、错误信息等。

3.2 NFS软件介绍

软件包:nfs-utils(包括服务器和客户端相关工具,CentOS8 最小化安装时默认没有安装)

相关软件包:rpcbind(必须),tcp_wrappers

Kernel支持:nfs.ko(表示nfs为内核自带的)

端口:2049(nfsd), 其它端口由portmap(111)分配

NFS服务主要进程:

  • rpc.nfsd 最主要的NFS进程,管理客户端是否可登录

  • rpc.mountd 挂载和卸载NFS文件系统,包括权限管理

  • rpc.lockd 非必要,管理文件锁,避免同时写出错

  • rpc.statd 非必要,检查文件一致性,可修复文件

NFS日志及配置文件

日志:/var/lib/nfs/


配置文件:/etc/exports

                  /etc/exports.d/*.exports 

3.3 NFS配置文件格式

共享目录	主机1(权限)		主机2(权限)例子:
/share		*(rw)		#共享/share给任意主机,权限有读写systemctl reload nfs	#重新读取配置文件
exportfs -r 	#重新读取配置文件
exportfs -v		#显示本机的共享情况

权限选项:

默认选项:(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使用 

3.4 NFS工具

1)exportfs

exportfs -v #查看本机所有NFS共享
exportfs -r #重读配置文件,并共享目录
exportfs -a #输出本机所有共享
exportfs -au #停止本机所有共享

2)showmount

showmount -e 共享主机的IP地址    #查看有哪些共享文件夹可用mount    共享主机IP:/共享文件夹    挂载目录    #挂载

3.5 NFS实操 

服务端IP:192.168.254.10

客户端IP:192.168.254.20


注意:不论是客户端还是服务端,都要记得关闭防火墙!!!

1)服务端配置

yum install -y nfs-utils rpcbind    #安装软件vim /etc/exports    #编写配置文件/share     *(rw)        #将/share作为共享文件夹附有读写权限,并且允许任何IP访问
:wq

systemctl start rpcbindsystemctl start nfsexportfs -v    #查看共享目录的信息

2)客户端配置

yum install -y nfs-utils rpcbind    #安装软件showmount -e 192.168.254.10    #查看服务器共享哪些文件夹mount 192.168.254.10:/share  /mnt    #挂载df -Th  /mnt    #查看挂载信息

永久挂载:vim /etc/fstab类型为nfs        _netdev表示如果无法ping通,则不挂载192.168.254.10:/share  /mnt   nfs   defaults,_netdev    0 0:wqmount -a

这篇关于【Linux网络】网络文件共享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/964560

相关文章

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念