NFS网络文件系统配置 

NFS简介

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

nfs安装包:nfs-utils

nfs配置文件:/etc/exports

语法:   文件系统  客户端(导出选项)  客户端(选项)

客户端处可填写:IP、FQDN或DOMAIN、NETWORK、*

NFS主要有3类选项:

访问权限选项

设置输出目录只读:ro

设置输出目录读写:rw

用户映射选项

all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);

no_all_squash:与all_squash取反(默认设置);

root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);

no_root_squash:与root_squash取反;以root身份创建目录和文件,此时共享目录权限(755);针对于其它用户向共享目录写入目录或文件,需要给共享目录权限(757)此时普通用户将普通用户自己身份写入目录和文件。

anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);

anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

其它选项

secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);

insecure:允许客户端从大于1024的tcp/ip端口连接服务器;

sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;

async:将数据先保存在内存缓冲区中,必要时才写入磁盘;

wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);

no_wdelay:若有写操作则立即执行,应与sync配合使用;

subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);

no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

查看NFS服务器端共享的文件系统

showmount –e SERVER_IP

客户端使用NFS文件系统

mount –t nfs SERVER:/path/to/sharedfs /path/to

  # exportfs [-aruv]

  -a 全部挂载或卸载 /etc/exports中的内容

  -r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab

  -u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)

  -v 在export的时候,将详细的信息输出到屏幕上。

具体例子:

exportfs:维护exports文件导出的文件系统表的专用工具

exportfs –rv:重新导出所有的文件系统

exportfs –au:关闭导出的所有文件系统(卸载所有共享目录)

开机自动挂载nfs:

SERVER:/PATH/TO/EXPORTED_FS /mount_point   nfs     defaults,_netdev   0 0

_netdev:说明此共享是一个网络文件系统,如果联系不上,就会跳过此文件系统

示例:

172.16.4.100:/share/nfs   /mnt       nfs     defaults,_netdev 0 0

NFS使用演示

示例:将本机的/share/nfs使用nfs共享出去,让其他客户端可以访问

[root@nfs ~]# mkdir -p /share/nfs

[root@nfs ~]# vim /etc/exports

/share/nfs 172.16.4.136(rw)

[root@nfs ~]# exportfs -v

/share/nfs      172.16.4.136(rw)

/export  10.1.1.0/255.255.255.0(rw,fsid=0,no_root_squash,async)

验证nfs是否成功共享

[root@client ~]# showmount -e 172.16.4.100

Export list for 172.16.4.100:

/share/nfs 172.16.4.136

客户端挂载使用

[root@client ~]# mount -t nfs 172.16.4.100:/share/nfs /mnt/

[root@client ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/vg0-root   20G 299M   19G   2% /

tmpfs                 491M     0 491M   0% /dev/shm

/dev/sda1             190M   28M 153M  16% /boot

/dev/mapper/vg0-usr   9.8G 2.0G  7.4G  21% /usr

/dev/mapper/vg0-var    20G 267M   19G   2% /var

172.16.4.100:/share/nfs

20G  312M  19G   2% /mnt

这个时候nfs就可以正常使用了

由于服务器默认将root用户映射为了来宾用户,如果以root用户访问nfs服务器是没有写权限的

[root@client ~]# cp /etc/fstab /mnt/

cp: cannot create regular file `/mnt/fstab':Read-only file system

服务器端设置允许root用户以root权限访问这个共享服务器

[root@nfs ~]# vim /etc/exports

/share/nfs 172.16.4.136(rw,no_root_squash)

设置完成之后重启服务器,在使用root用户复制文件就有权限了

[root@client ~]# cp /etc/fstab /mnt/

[root@client ~]# ll /mnt/

total 4

-rw-r--r-- 1 nobody nobody 921 Apr 23 18:51 fstab

验证:nfs是通过用户id来认证用户,而不是用户名

创建用户gentoo使用户对/share/nfs有读写执行权限,然后在里面创建一个文件

[root@Server ~]# useradd -u 600 gentoo

[root@Server ~]# setfacl -m u:gentoo:rwx /share/nfs/

[root@Server ~]# su - gentoo

[gentoo@Server ~]$ cd /share/nfs/

[gentoo@Server nfs]$ touch a.gentoo

[gentoo@Server nfs]$ ll

total 4

-rw-rw-r-- 1 gentoo gentoo   0 Apr 23 18:55 a.gentoo

客户端操作:

创建相同id,然后不同的用户名,进行写入

[root@client ~]# useradd -u 600 fedora

[root@client ~]# su - fedora

[fedora@client ~]$ cd /mnt/

[fedora@client mnt]$ ll

total 4

-rw-rw-r-- 1 nobody nobody   0 Apr23 18:55 a.gentoo

[fedora@client mnt]$ touch a.fedora

[fedora@client mnt]$ ll

total 4

-rw-rw-r-- 1 nobody nobody   0 Apr 23 18:59 a.fedora

-rw-rw-r-- 1 nobody nobody   0 Apr 23 18:55 a.gentoo

创建不同id,相同用户名,进行写入

[root@client ~]# useradd gentoo

[root@client ~]# id gentoo

uid=602(gentoo) gid=602(gentoo) groups=602(gentoo)

[root@client ~]# su - gentoo

[gentoo@client ~]$ cd /mnt/

[gentoo@client mnt]$ ll

total 4

-rw-rw-r-- 1 nobody nobody   0 Apr 24 2015 a.fedora

-rw-rw-r-- 1 nobody nobody   0 Apr 24 2015 a.gentoo

[gentoo@client mnt]$ touch b.gentoo

touch: cannot touch `b.gentoo': Permission denied

结论:相同用户名,无法成功写入,相同id可以成功写入。如果相同的用户名,相同id也是可以成功写入的。

关于权限的分析

  1. 客户端连接时候,对普通用户的检查

    a. 如果明确设定了普通用户被压缩的身份,那么此时客户端用户的身份转换为指定用户;

    b. 如果NFS server上面有同ID用户,那么此时客户端登录账户的身份转换为NFS server上面的同ID用户;

    c. 如果没有明确指定,也没有同ID用户,那么此时 用户身份被压缩成nobody;

  2. 客户端连接的时候,对root的检查

    a. 如果设置no_root_squash,那么此时root用户的身份被压缩为NFS server上面的root;

    b. 如果设置了all_squash、anonuid、anongid,此时root 身份被压缩为指定用户;

    c. 如果没有明确指定,此时root用户被压缩为nfsnobody;其它用户对照上述1中的b、c来显示所有者和所属组;

    d. 如果同时指定no_root_squash与all_squash 用户将被压缩为nfsnobody,如果设置了anonuid、anongid将被压缩到所指定的用户与组;

示例一:

NFS Server:

[root@NFS ~]# mkdir /Data

[root@NFS ~]# chmod o+w /Data/

[root@NFS ~]# cat /etc/exports

/Data  10.10.172.0/255.255.255.0(rw,no_root_squash,async)

[root@NFS ~]# service nfs restart

Shutting down NFS daemon: [  OK  ]

Shutting down NFS mountd: [  OK  ]

Shutting down NFS quotas: [  OK  ]

Shutting down NFS services:  [  OK  ]

Shutting down RPC idmapd: [  OK  ]

Starting NFS services:  [  OK  ]

Starting NFS quotas: [  OK  ]

Starting NFS mountd: [  OK  ]

Starting NFS daemon: [  OK  ]

Starting RPC idmapd: [  OK  ]

[root@NFS ~]# tail /etc/passwd

gdm:x:42:42::/var/lib/gdm:/sbin/nologin

ntp:x:38:38::/etc/ntp:/sbin/nologin

apache:x:48:48:Apache:/var/www:/sbin/nologin

saslauth:x:498:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

centos:x:500:500:centos:/home/centos:/bin/bash

test:x:501:501::/home/test:/bin/bash

[root@NFS ~]#

NFS Client:

[root@Client ~]# tail /etc/passwd

gdm:x:42:42::/var/lib/gdm:/sbin/nologin

ntp:x:38:38::/etc/ntp:/sbin/nologin

saslauth:x:498:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

centos:x:500:500:centos:/home/centos:/bin/bash

gentoo:x:501:501::/home/gentoo:/bin/bash

test:x:502:502::/home/test:/bin/bash

[root@Client ~]# mount -t nfs 10.10.172.82:/Data /mnt

[root@Client ~]# cd /mnt/

[root@Client mnt]# touch root.txt

[root@Client mnt]# ll

total 0

-rw-r--r--. 1 root   root   0 Sep 18  2016 root.txt

[root@Client ~]# su centos

[centos@Client mnt]$ touch centos.txt

[centos@Client mnt]$ ll

total 0

-rw-rw-r--. 1 centos centos 0 Sep 18  2016 centos.txt

-rw-r--r--. 1 root   root   0 Sep 18  2016 root.txt

[centos@Client mnt]$ su gentoo

Password:

[gentoo@Client mnt]$ touch gentoo.txt

[gentoo@Client mnt]$ ll

total 0

-rw-rw-r--. 1 centos centos 0 Sep 18 16:55 centos.txt

-rw-rw-r--. 1 test   test   0 Sep 18  2016 gentoo.txt

-rw-r--r--. 1 root   root   0 Sep 18  2016 root.txt

[gentoo@Client mnt]$ su test

Password:

[test@Client mnt]$ touch test.txt

[test@Client mnt]$ ll

total 0

-rw-rw-r--. 1 centos centos 0 Sep 18 16:55 centos.txt

-rw-rw-r--. 1 test   test   0 Sep 18 16:55 gentoo.txt

-rw-r--r--. 1 root   root   0 Sep 18  2016 root.txt

-rw-rw-r--. 1 nobody nobody 0 Sep 18 16:56 test.txt

[test@Client mnt]$

示例二:

NFS Server:

[root@NFS ~]# tail /etc/passwd

gdm:x:42:42::/var/lib/gdm:/sbin/nologin

ntp:x:38:38::/etc/ntp:/sbin/nologin

apache:x:48:48:Apache:/var/www:/sbin/nologin

saslauth:x:498:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

centos:x:500:500:centos:/home/centos:/bin/bash

test:x:501:501::/home/test:/bin/bash

[root@NFS ~]# cat /etc/exports

/Data  10.10.172.0/255.255.255.0(rw)

[root@NFS ~]#

NFS Client:

[root@Client ~]# tail /etc/passwd

gdm:x:42:42::/var/lib/gdm:/sbin/nologin

ntp:x:38:38::/etc/ntp:/sbin/nologin

saslauth:x:498:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

centos:x:500:500:centos:/home/centos:/bin/bash

gentoo:x:501:501::/home/gentoo:/bin/bash

test:x:502:502::/home/test:/bin/bash

[root@Client ~]# mount -t nfs 10.10.172.82:/Data /mnt

[root@Client ~]# cd /mnt/

[root@Client mnt]# touch root.txt

[root@Client mnt]# ll

total 0

-rw-r--r--. 1 nfsnobody nfsnobody 0 Sep 18  2016 root.txt

[root@Client mnt]# su centos

[centos@Client mnt]$ touch centos.txt

[centos@Client mnt]$ ll

total 0

-rw-rw-r--. 1 centos    centos    0 Sep 18  2016 centos.txt

-rw-r--r--. 1 nfsnobody nfsnobody 0 Sep 18  2016 root.txt

[centos@Client mnt]$ su test

Password:

[test@Client mnt]$ touch test.txt

[test@Client mnt]$ ll

total 0

-rw-rw-r--. 1 centos    centos    0 Sep 18 17:16 centos.txt

-rw-r--r--. 1 nfsnobody nfsnobody 0 Sep 18 17:16 root.txt

-rw-rw-r--. 1 nobody    nobody    0 Sep 18  2016 test.txt

[test@Client mnt]$ su gentoo

Password:

[gentoo@Client mnt]$ touch gentoo.txt

[gentoo@Client mnt]$ ll

total 0

-rw-rw-r--. 1 centos    centos    0 Sep 18 17:16 centos.txt

-rw-rw-r--. 1 test      test      0 Sep 18  2016 gentoo.txt

-rw-r--r--. 1 nfsnobody nfsnobody 0 Sep 18 17:16 root.txt

-rw-rw-r--. 1 nobody    nobody    0 Sep 18 17:17 test.txt

[gentoo@Client mnt]$

转载于:https://blog.51cto.com/dengaosky/1853686

NFS网络文件系统配置相关推荐

  1. NFS网络文件系统服务配置、验证及错误解决

    NFS网络文件系统服务配置.验证及错误解决 前期准备: 1.至少准备一台服务器(nfs-server)和一台客户机(nfs-client).老表测试用的服务器端用的系统是ubuntu,客户机用的是Ce ...

  2. NFS网络文件系统服务

    1.NFS网络文件系统简介 1)NFS概念描述: 什么是nfs?nfs是Network File system的缩写,它的主要功能是通过网络让不同的主机系统之间可以彼此共享文件或目录.NFS客户端(一 ...

  3. NFS 网络文件系统测试笔记

    NFS(Network Files System),网络文件系统是1980年由SUN发展出来在UNIX&Linux系统间实现磁盘文件共享的一种方法.它是一种文件系统协议:支持应用程序在客户端通 ...

  4. NFS网络文件系统服务介绍与实战

    1.启动NFS相关服务 rpm -qantfs-utls portmap #查看是否已安装ntfs service portmap start #启动portmap服务 /etc/init.d/por ...

  5. TQ2440从nfs网络文件系统启动

    前提:我的PC已经配置好了 NFS服务 nfs根目录为:/home/daysmark/nfsdir 如果不会配置,请看点击打开链接 1.进入uboot进行设置 Set the boot paramet ...

  6. win10 挂载NFS(网络文件夹)网盘

    一.首先在cmd命令输入:ping ip通过对方ip,确定网络配置没有问题 ping 192.168.1.103如下图显示就说明,网络配置正确 二.打开控制面板--找到程序 三.找到打开或关闭wind ...

  7. linux根文件系统配置,嵌入式Linux的Cramfs根文件系统配置的解决方案

    1 引言 随着电子产业的不断发展,基于 ARM 技术的系统设计和开发平台越来越多地在控制 类.消费类.通信类等电子产品中广泛应用.从软件角度上看,构建基于ARM 技术的linux 系统要涉及到引导加载 ...

  8. Linux 学习笔记_12_文件共享服务_3_NFS网络文件服务

    NFS网络文件服务 NFS---- Network File System 用于UNIX/Linux[UNIX类操作系统]系统间通过网络进行文件共享,用户可以把网络中NFS服务器提供的共享目录挂载到本 ...

  9. Linux实战教学笔记22:企业级NFS网络文件共享服务

    第二十二节 企业级NFS网络文件共享服务 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载 ...

  10. (转)企业级NFS网络文件共享服务

    企业级NFS网络文件共享服务 原文:http://www.cnblogs.com/chensiqiqi/archive/2017/03/10/6530859.html --本教学笔记是本人学习和工作生 ...

最新文章

  1. SAP战略中的机器学习
  2. ElasticSearch基础知识整理
  3. redhat linux7版本种类,RHEL 7 新功能尝鲜:界面简洁,分类明确
  4. HDU 2498 Digits
  5. 这是要把前几年积累的C++的节操给丢光吗
  6. mysql与dns_借助mysql和DNS view实现智能DNS(centos6.3 x64环境)
  7. keras如何保存模型
  8. android 屏幕横竖屏切换时生命周期运行详解,创建横屏layout,has no declaration in the base
  9. 如今编程成为了一个越来越重要的「技能」,如何自学编程我来教你
  10. MFC开发IM-第一篇
  11. 家里的网很慢,如何用手机查看都有多少人使用?
  12. 计算机网络学习日记——网络层
  13. 软件工程之软件工程管理
  14. lisp编程 滑动轴承的auto_「autolisp」Autolisp:利用AuoCAD之Lisp编程案例之智能加工齿轮的演示程序 - seo实验室...
  15. 看看最新的考试 c语言 noip模拟 纯llq原创作品
  16. 毕业设计 基于STM32厨房环境监控报警系统
  17. 《中国程序化广告技术生态图》2015年三月号更新发布
  18. 11月18日——离noip还有1天[游戏王YGO]
  19. 【看表情包学Linux】软件包管理器 yum | Vim 编辑器介绍 | Vim 文本批量化操作 | 配置 Vim
  20. 用户运营:如何用B端运营思维做用户增长?

热门文章

  1. jdk15不安装jre_弄懂 JRE、JDK、JVM 之间的区别与联系,你知道多少?
  2. python打开浏览器全屏_python 打开浏览器的两种方式
  3. python excel案例导入jira_用Python脚本批量添加JIRA用户,python,jira
  4. php请求图片,PHP - 发送GET请求并获取图片作为回报
  5. python程序流程控制结构_Python程序控制结构 | 分支结构
  6. mpvue微信小程序引入腾讯地图sdk
  7. linux rtl8188eu ap模式 密码错误 disassoc reason code(8)
  8. rman备份优化思路
  9. SlidingMenu使用笔记
  10. linux 文件与目录操作