一、nfs 服务的配置

1、服务器配置

1)服务器配置

[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# vi /etc/exports
#添加共享目录以及设置可访问网络
/data/jiaofan   *(ro,all_squash,anonuid=1111,anongid=1112)      <==所有网络可以进行读文件,all_squash设置使用服务器的那个用户来访问/data/jiaofan这个目录。
/data/user      192.168.91.159(rw)    <==只有192.168.91.159网络有读写权限,其他ip不能访问。
/tmp    192.168.100.0/24(ro)  localhost(rw)       *.ev.ncku.edu.tw(ro,sync)   <==192.168.100.0/24有读的权限,本地登录有读写权限。ev.ncku.edu.tw域有读的权限,并且数据会同步写入到内存与硬盘中
[root@localhost ~]# systemctl  restart nfs

2)/etc/exports配置介绍

配置如下:“共享目录 网络(权限)”

1> 共享目录:自己想要分享的目录
2> 网络:

  • 可以使用完整的 IP 或者是网域,例如 192.168.100.10 或 192.168.100.0/24 ,或 192.168.100.0/255.255.255.0
  • 使用主机名:但这个主机名必须要在 /etc/hosts 内,或可使用 DNS 找到该名称才行!反正重点是可找到 IP 就是了。如果是主机名的话,那么他可以支持通配符,例如 * 或 ? 均可接受。

3> ()里面的权限参数

参数 内容说明
ro,rw ro(read-only):仅有读的权限;rw(read-write):有读写的权限
sync,async sync 代表数据会同步写入到内存与硬盘中;async 则代表数据会先暂存于内存当中,而非直接写入硬盘!
no_root_squash,root_squash 预设的情况下,客户端 root 的身份会由root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行!
all_squash 不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody),可以和下面参数结合使用
anonuid,anongid anon 意指 anonymous (匿名者) 前面关于 all_squash 提到的匿名用户的 UID 设定值,通常为 nobody(nfsnobody),但是你可以自行设定这个 UID 的值,这个 UID 必需要存在于你的/etc/passwd 当中。anonuid 指的是 UID 而 anongid 则是群组的 GID

注:最终能不能写进去,还有看用户对共享目录有没有写入权限。(后面有详细的权限介绍)

2、客户端配置

[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# showmount -e 192.168.91.157
Export list for 192.168.91.157:
/data/jiaofan *
/data/user    192.168.91.159
[root@localhost ~]# mount 192.168.91.157:/data/jiaofan /data/jiao
mount.nfs: mount point /data/jiao does not exist   <==本地的挂在目录必须存在
[root@localhost ~]# mkdir /data/jiao
[root@localhost ~]# mount 192.168.91.157:/data/jiaofan /data/jiao

3、常用的命令

1)服务器端在/etc/exports 文档中添加或者删除文件常用的命令

[root@www ~]# exportfs [-aruv]选项与参数:-a :全部挂载(或卸除) /etc/exports 档案内的设定-r :重新挂载 /etc/exports 里面的设定,此外,亦同步更新 /etc/exports及 /var/lib/nfs/xtab 的内容!-u :卸除某一目录-v :在 export 的时候,将分享的目录显示到屏幕上!

1>重新挂在一次 /etc/exports 的设定

[root@localhost ~]# exportfs -arv
exporting 192.168.91.159:/data/user
exporting *:/data/jiaofan

2>将已经分享的 NFS 目录资源,通通都卸除

[root@localhost ~]# exportfs -auv

2)客户端挂在时常用命令

[root@www ~]# showmount [-ae] [hostname|IP]选项与参数:-a :显示目前主机与客户端的 NFS 联机分享的状态;-e :显示某部主机的 /etc/exports 所分享的目录数据。

1>请显示出刚刚我们所设定好的相关 exports 分享目录信息

[root@localhost ~]# showmount -e 192.168.91.157
Export list for 192.168.91.157:
/data/jiaofan *
/data/user    192.168.91.159

2> 挂在/data/jiaofan到本地/data/jiao

[root@localhost ~]# mount   -t nfs 192.168.91.157:/data/jiaofan /data/jiao

3> 卸载目录

[root@localhost nfs]# umount /data/jiao  <==/data/jiao是本地客户端的挂载目录

报错:

[root@localhost jiao]# umount /data/jiao
umount.nfs4: /data/jiao: device is bus#使用 -f  参数
[root@localhost jiao]# umount -f /data/jiao
umount.nfs4: /data/jiao: device is busy#使用 -l 参数(小写的L)
[root@localhost jiao]# umount -l /data/jiao

注: -t nfs :指定文件系统类型,

二、nfs 软件介绍

  1. 主要配置文件:/etc/exports:
  2. NFS 文件系统维护指令:/usr/sbin/exportfs
  3. 分享资源的登录档:/var/lib/nfs/*tab
    在 NFS 服务器的登录文件都放置到 /var/lib/nfs/ 目录里面,在该目录下有两个比较重要的登录档, 一个是 etab ,主要记录了 NFS 所分享出来的目录的完整权限设定值;另一个 xtab则记录曾经链接到此 NFS 服务器的相关客户端数据。
  4. 客户端查询服务器分享资源的指令:/usr/sbin/showmount

三、nfs 的权限设置

首先要明白一个问题:客户端的用户对服务器的文件进行操作,那么服务器用的是哪个用户?

分析:客户端有客户端的passwd文件,服务端有服务端的passwd文件,两个文件的用户肯定不一样,但是有一个是一样的,那就是UID和GID。

答:客户端用jiaofan(uid=1111 gid=1111)去访问服务器的文件,其实是客户端用uid=1000去访问服务器的文件,然后服务器在passwd里面找uid=1000的用户对文件进行操作。

此时就会产生几个问题:

  1. 服务器刚好有个uid=1111的用户,还刚好就是jiaofan这个用户
  2. 服务器刚好有个uid=1111的用户,但这个用户是其他的,比如user
  3. 服务器根本就没有uid=1111的这个用户。
  4. 客户端用root登录,root用户服务器总要有吧,但是这操作权限是不是有点大。

服务端:

[root@localhost nfs]# cat /etc/exports
/data/user  192.168.91.0/24(rw)
[root@localhost nfs]# exportfs -arv

客户端:

[root@localhost jiao]# showmount -e 192.168.91.157
Export list for 192.168.91.157:
/data/user 192.168.91.0/24
[root@localhost jiao]# mount -t nfs 192.168.91.157:/data/user  /data/jiao

1)/data/user设置了192.168.91.159(rw),但是客户端(192.168.91.159)仍然写不进去。

[root@localhost jiao]# su - jiao2
[jiao2@localhost ~]$ id jiao2
uid=1111(jiao2) gid=1111(jiao2) 组=1111(jiao2)
[jiao2@localhost ~]$ cd /data/jiao
[jiao2@localhost jiao]$ ls
b.txt
[jiao2@localhost jiao]$ touch test1.txt
touch: 无法创建"test1.txt": 权限不够      <==我以jiao1的身份去访问显示权限不够。

这是因为服务器的/data/user没有给其他用户写的权限,看一下服务器的/data/user的权限。

[root@localhost data]# ll
总用量 0
drwxr-xr-x. 2 root root 19 1月  26 17:47 user   <==文件是root用户的,其他用户没有写入权限。
[root@localhost data]# id 1111
uid=1111(jiao2) gid=1111(jiao2) 组=1111(jiao2)
[root@localhost data]#

我们更改一下/data/user的权限,让其他用户可以访问。

#服务端的操作
[root@localhost data]# chmod 757 user
[root@localhost data]# ll
总用量 0
drwxr-xrwx. 2 root root 19 1月  26 17:47 user#客户端检查是否可以写入
[jiao2@localhost jiao]$ pwd
/data/jiao
[jiao2@localhost jiao]$ touch test1.txt
[jiao2@localhost jiao]$ ll
总用量 0
-rw-r--r--. 1 root  root  0 1月  26 17:47 b.txt
-rw-rw-r--. 1 jiao2 jiao2 0 1月  27 14:17 test1.txt#服务端检查
[root@localhost user]# ll
总用量 0
-rw-r--r--. 1 root  root  0 1月  26 17:47 b.txt
-rw-rw-r--. 1 jiao2 jiao2 0 1月  27 14:17 test1.txt

2)服务器刚好有个uid=1111的用户,还刚好就是jiao2这个用户

上面的案例中,刚好在服务端有uid=1111的用户,而且刚好是jiao2

[jiao2@localhost jiao]$ touch test1.txt
[jiao2@localhost jiao]$ ll
总用量 0
-rw-r--r--. 1 root  root  0 1月  26 17:47 b.txt
-rw-rw-r--. 1 jiao2 jiao2 0 1月  27 14:17 test1.txt

3)服务器刚好有个uid=1111的用户,但这个用户是其他的,比如jiao1

#服务端
[root@localhost data]# id 1111
uid=1111(jiao1) gid=1111(jiao1) 组=1111(jiao1)

客户端创建文件test2.txt

[jiao2@localhost jiao]$ touch test2.txt
[jiao2@localhost jiao]$ ll
总用量 0
-rw-r--r--. 1 root  root  0 1月  26 17:47 b.txt
-rw-rw-r--. 1 jiao2 jiao2 0 1月  27 14:24 test2.txt

查看服务端的属主和属组

[root@localhost user]# ll
总用量 0
-rw-r--r--. 1 root  root  0 1月  26 17:47 b.txt
-rw-rw-r--. 1 jiao1 jiao1 0 1月  27 14:24 test2.txt   <==没错,这个文件属于uid=1111的用户。

4)服务器根本就没有uid=1111的这个用户。

服务器:

[root@localhost user]# userdel jiao1
[root@localhost user]# id 1111
id: 1111: no such user

客户端创建文件:

[jiao2@localhost jiao]$ touch test3.txt
[jiao2@localhost jiao]$ ll
总用量 0
-rw-r--r--. 1 root  root  0 1月  26 17:47 b.txt
-rw-rw-r--. 1 jiao2 jiao2 0 1月  27 14:17 test1.txt
-rw-rw-r--. 1 jiao2 jiao2 0 1月  27 14:24 test2.txt    <==客户端永远都是
-rw-rw-r--. 1 jiao2 jiao2 0 1月  27 14:28 test3.txt

来服务器端查看

[root@localhost user]# ll
总用量 0
-rw-r--r--. 1 root root 0 1月  26 17:47 b.txt
-rw-rw-r--. 1 1111 1111 0 1月  27 14:17 test1.txt
-rw-rw-r--. 1 1111 1111 0 1月  27 14:24 test2.txt  <==这个怎么也是1111了,因为这个文件属于uid=1111用户的,没有了1111用户所以就变成了属于1111.
-rw-rw-r--. 1 1111 1111 0 1月  27 14:28 test3.txt    <==这个不用解释了吧

突发奇想,我现在创建一个1111用户会如何?

#服务端操作
[root@localhost user]# useradd -u 1111 user1
[root@localhost user]# id 1111
uid=1111(user1) gid=1111(user1) 组=1111(user1)
[root@localhost user]# ll
总用量 0
-rw-r--r--. 1 root  root  0 1月  26 17:47 b.txt
-rw-rw-r--. 1 user1 user1 0 1月  27 14:17 test1.txt
-rw-rw-r--. 1 user1 user1 0 1月  27 14:24 test2.txt
-rw-rw-r--. 1 user1 user1 0 1月  27 14:28 test3.txt

5)客户端用root登录,root用户服务器总要有吧,但是这操作权限是不是有点大。

如果没有特别配置,root用户会被压缩到匿名用户登录。可以参考前面配置root用户登录

四、RPC 简介

因为NFS支持很多功能,而没一个功能都会开放不同的端口,而这些端口还不是固定的,而是随机取用一些未被使用的小于 1024 的埠口来作为传输之用。这让客户端怎么来连接?

所以就想到了RPC,NFS每开启一个功能,都要去RPC注册一个端口号,而RPC始终用111这个端口,这就很舒服,客服端直接去找RPC询问就可以了。默认开启nfs就会先开启RPC,所以不用特别开启rpc。

  1. 客户端会向服务器端的 RPC (port 111) 发出 NFS 档案存取功能的询问要求;
  2. 服务器端找到对应的已注册的 NFS daemon 埠口后,会回报给客户端;
  3. 客户端了解正确的埠口后,就可以直接与 NFS daemon 来联机。

五、autofs自动化挂在

都好了以后我又有了新的需求:

  1. 可不可以让客户端在有使用到 NFS 文件系统的需求时才让系统自动挂载?
  2. 当 NFS 文件系统使用完毕后,可不可以让 NFS 自动卸除,以避免可能的RPC 错误?

1、安装autofs服务

[root@localhost data]# yum -y install autofs

2、配置autofs,配置文件:/etc/auto.master

[root@localhost data]# showmount -e 192.168.91.157
Export list for 192.168.91.157:
/data/jiaofan 192.168.91.0/24
/data/user    192.168.91.0/24[root@localhost data]# vi /etc/auto.master
#添加下面内容
/data   /etc/auto.nfs    <==/data目录是不需要存在的,autofs会自己解决。[root@localhost data]# vi /etc/auto.nfs
#添加下面配置
jiao    -rw,bg.soft 192.168.91.157:/data/jiaofan
user1   192.168.91.157:/data/user[root@localhost data]# systemctl restart autofs

3、测试:

你会发现他是有/data这个目录的,但是里面并没有我们需要挂载的文件

[root@localhost data]# ll /data
总用量 0

你直接cd /data/jiao你会发现进去了。而且进入了192.168.91.157:/data/jiaofan。

[root@localhost data]# cd /data/jiao
[root@localhost jiao]# ls
a.txt  c.txt  d.txt  e.txt

在看一下/data,居然有个jiao。但是为什么没有user。因为你并没有使用它的需求

[root@localhost jiao]# ll /data
总用量 0
drwxr-xrwx. 2 root root 58 1月  26 17:58 jiao
[root@localhost jiao]#

直接进去/data/user1

[root@localhost jiao]# cd /data/user1
[root@localhost user1]# ls
b.txt  test1.txt  test2.txt  test3.txt
[root@localhost user1]# cd ..
[root@localhost data]# ll
总用量 0
drwxr-xrwx. 2 root root 58 1月  26 17:58 jiao
drwxr-xrwx. 2 root root 70 1月  27 14:28 user1
[root@localhost data]#

注:过五分钟不使用,这两个文件自动取消挂在。

4、/etc/auto.nfs文件解释

[本地端次目录] [-挂载参数] [服务器所提供的目录]选项与参数:[本地端次目录] :指的就是在 /etc/auto.master 内指定的目录之次目录[-挂载参数] :就是前面提到的 rw,bg,soft 等等的参数。[服务器所提供的目录] :例如 192.168.100.254:/home/public 等[root@clientlinux ~]# vim /etc/auto.nfspublic -rw,bg,soft,rsize=32768,wsize=32768
192.168.100.254:/home/publictesting -rw,bg,soft,rsize=32768,wsize=32768
192.168.100.254:/home/testtemp -rw,bg,soft,rsize=32768,wsize=32768 192.168.100.254:/tmp# 参数部分,只要最前面加个 - 符号即可!

linux服务--nfs服务相关推荐

  1. Linux的nfs服务

    目录 一.NFS 1.介绍NFS 2.NFS服务的实现 3.NFS服务的特点 4.NFS服务的作用 二.NFS案例 1.安装RPC依赖和nfs服务(rpcbind.nfs-utils) 2.修改配置文 ...

  2. Linux服务-NFS服务部署

    NFS网络文件服务部署(rhel7) 说明 使用rhel7作为服务端,ubuntu作为客户端. 简介 Network File System 网络文件系统 用于unix/类unix系统之间进行文件共享 ...

  3. Linux 下 NFS服务的搭建

    NFS是Network File System的简写,即网络文件系统. 网络文件系统是许多操作系统都支持的文件系统中的一种,也被成为NFS.NFS允许一个系统在网络上与他人共享目录和文件.通过使用NF ...

  4. linux查看nfs服务状态,Linux下NFS服务配置

    NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NFS的客户端应用可 ...

  5. Linux之nfs服务

    1.二进制安装nfs 2.作为共享存储挂载在三台web的网站根目录下实现,在任意一台web上修改的结果,其余两台都可以看到 [root@localhost ~]# yum install rpcbin ...

  6. Linux网络文件共享服务(一)存储类型和文件传输协议FTP

    成功不易,加倍努力! 网络文件共享服务 本章总目录 1 存储类型 1.1 DAS存储 1.2 NAS存储 1.3 SAN存储 1.4 三种存储比较 2 文件传输协议 FTP 2.1 FTP工作原理介绍 ...

  7. Linux部署kms服务

    Linux - 建设篇 第三章 Linux部署kms服务 Linux - 建设篇 系列文章回顾 Linux部署kms服务 使用slmgr.vbs激活Win系统 加域PC自动激活kms 参考来源 系列文 ...

  8. Centos7.8搭建NFS服务

    NFS介绍 专用于Linux和Linux之间的专门文件共享服务(NFS服务),network filesystem网络文件系统 NFS服务可以把远程Linux机器上的文件目录数据,通过挂载的方式,映射 ...

  9. Linux部署SFTP服务

    Linux - 建设篇 第二章 Linux部署SFTP服务 Linux - 建设篇 系列文章回顾 下章内容 Linux虚拟机安装SSH服务 创建ftp所属组的用户,设置密码,创建用户家目录 修改ssh ...

最新文章

  1. 学习OpenGL ES之透明和混合
  2. ios在异步网络请求上实现同步逻辑
  3. 无监督领域迁移及文本表示学习的相关进展
  4. 前端基础3-1——JavaScript
  5. 初学者怎样看懂python代码_入门编程(初学者怎样看懂代码)
  6. android 汽车 源码_汽车级Linux,无需Google即可运行Android等
  7. 云端设计平台Coohom在生产环境中使用istio的经验与实践
  8. html select 事件 jquery,通过jquery触发select自身的change事件
  9. “耐撕”团队第一次讨论——“抢答器”需求分析
  10. 类 QQ IM 通讯软件开发实战
  11. 【转】Python Enhancement Proposal #8【PEP8】
  12. c语言中calc用法,CSS中calc()函数怎么使用
  13. 中国移动盘古搜索开创全新服务模式
  14. AspCms程序PC端生成静态,手机端动态运行
  15. 算法:三阶矩阵求逆矩阵算法公式
  16. 零基础小白,如何从零开始搭建网站?(详细步骤)
  17. 帆软(FineReport)报表学习——一个简单的报表
  18. 异常收集 ----雨之殇
  19. 重生之我是赏金猎人-漏洞挖掘(十一)-某SRC储存XSS多次BypassWAF挖掘
  20. 运行Moblin Live映像 - for Mobin v2.1

热门文章

  1. mate8怎么关闭html查看器,华为Mate8获取Root教程 实测可用
  2. 华为鸿蒙电视智慧屏,华为智慧屏S系列评测:一台会“学习”的电视
  3. MySQL入门_实战6_MySQL数据的更新
  4. 包含min函数的栈JAVA实现
  5. 2023系统分析师分散知识点(持续更新中)
  6. Tomcat服务器虚拟路径配置
  7. easyPoi导出excel工具类和设置excel导出样式(边框,背景色,字体)
  8. vue 开发环境 卸载node 版本 切换新的 node 版本 mac电脑
  9. 提升树莓派性能的方法
  10. 实现一个横向无限循环滚动的单行弹幕效果