企业级Linux中NFS共享文件系统


文章目录

  • 企业级Linux中NFS共享文件系统
  • 1.理解NFS
  • 2.nfs共享文件
  • 3.nfs自动挂载
  • 4.nfs权限设定
  • - 设定可写权限
  • - 指定文件所有人所有组
  • - 设定所有用户都被指定所有人所有组
  • - 设定root用户不被指定参数
  • - 指定主机只读


1.理解NFS

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

2.nfs共享文件

step1 在服务端:

yum install nfs-utils					##安装nfs
systemctl start nfs-server				##开启nfs服务
systemctl status nfs

nfs rpm 下载 nfs-common_共享文件


测试:

yum install nfs-utils
showmount -e 172.25.254.136
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)		##无法访问

nfs rpm 下载 nfs-common_自动挂载_02


step2 在服务端设定火墙:

firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload

nfs rpm 下载 nfs-common_自动挂载_03


设定成功后测试:

showmount -e 172.25.254.136
Export list for 172.25.254.136:			##可以访问(在里面的内容为空)

nfs rpm 下载 nfs-common_共享文件_04


step3 在服务端上传共享文件

vim /etc/exports
  1 /mnt *(ro,sync)			##共享/mnt,ro只读共享
exportfs -rv				##刷新

nfs rpm 下载 nfs-common_vim_05


测试:

showmount -e 172.25.254.136			##可以看到共享的/mnt
Export list for 172.25.254.136:
/mnt *
mount 172.25.254.136:/mnt /media	##把共享目录挂载到/media
cd /media

nfs rpm 下载 nfs-common_共享文件_06

3.nfs自动挂载

为了更加清晰的看到实验效果,我在服务端再共享一个/etc

vim /etc/exports
  2 /etc *(ro,sync)					##共享/etc
exportfs -rv						##刷新

nfs rpm 下载 nfs-common_自动挂载_07


在客户端:

showmount -e 172.25.254.136			##可以查看到共享了/mnt和/etc
vim /etc/auto.master				##编辑自动挂载策略文件
/media  /etc/auto.nfs	

vim /etc/auto.nfs					##挂载参数文件
*       172.25.254.136:/&			##通配符的使用

systemctl restart autofs			##重启服务

注:在上一篇samba自动挂载中安装了autofs并且说明了如何部署,在这里不再赘述

nfs rpm 下载 nfs-common_共享文件_08


测试:

cd /media/mnt			##实现自动挂载共享的/mnt
cd /media/etc			##实现自动挂载共享的/etc

nfs rpm 下载 nfs-common_nfs rpm 下载_09

4.nfs权限设定

- 设定可写权限

一开始进入/media/mnt不能建立和删除文件是因为我共享文件时设定的参数为只读

nfs rpm 下载 nfs-common_nfs rpm 下载_10

vim /etc/exports
/mnt *(rw,sync)			##设定读写共享
exportfs -rv			##刷新

nfs rpm 下载 nfs-common_nfs rpm 下载_11


设定读写共享后,建立文件,提示touch: cannot touch ‘haha’: Permission denied

此时是因为共享主机的/mnt目录只对所有人可写,对其他人只有只读权限

chmod 777 /mnt			##修改完成后在远程主机即可建立删除文件

nfs rpm 下载 nfs-common_共享文件_12

- 指定文件所有人所有组

cd /media/mnt
touch haha
ll															##我们建立文件后用ll查看
-rw-r--r--. 1 nfsnobody nfsnobody   0 Nov 30 20:26 haha		##它的所有人和所有组都是nfsnobody

nfs rpm 下载 nfs-common_vim_13


如果我们想要指定它的所有人所有组,修改配置文件参数

vim /etc/exports
/mnt  *(rw,sync,anonuid=1001,anongid=1002)
exportfs -rv

再次建立文件:

touch file2 
ll
-rw-r--r--. 1 westos    lee         0 Nov 30 20:27 file2

nfs rpm 下载 nfs-common_vim_14

- 设定所有用户都被指定所有人所有组

切换到student用户建立文件,ll查看到它的所有人所有组都是student

nfs rpm 下载 nfs-common_nfs rpm 下载_15


如果要让所有用户都用我们指定的参数

vim /etc/exports
/mnt  *(rw,sync,anonuid=1001,anongid=1002,all_squash)
exportfs -rv

nfs rpm 下载 nfs-common_nfs rpm 下载_16


测试: 再次建立文件后它的所有人所有组分别就是westos lee

nfs rpm 下载 nfs-common_共享文件_17

- 设定root用户不被指定参数

vim /etc/exports
/mnt *(rw,sync,anonuid=1001,anongid=1002,no_root_squash)
exportfs -rv

nfs rpm 下载 nfs-common_自动挂载_18


测试: 设定完成后用root用户建立的文件都属于root

nfs rpm 下载 nfs-common_vim_19


注意:此处的no_root_squash和all_squash冲突,只能出现一个

- 指定主机只读

在设定默认为读写权限后,如果要指定某主机只有读的权限而没有可写权限:

vim /etc/exports
/mnt 172.25.254.236(ro) *(rw,sync,anonuid=1001,anongid=1002,no_root_squash)		##指定236主机只有读的权限
exportfs -rv

nfs rpm 下载 nfs-common_nfs rpm 下载_20


测试: 设定完成后用236主机建立文件:touch: cannot touch ‘file111’: Read-only file system

nfs rpm 下载 nfs-common_vim_21