企业级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
测试:
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) ##无法访问
step2 在服务端设定火墙:
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload
设定成功后测试:
showmount -e 172.25.254.136
Export list for 172.25.254.136: ##可以访问(在里面的内容为空)
step3 在服务端上传共享文件
vim /etc/exports
1 /mnt *(ro,sync) ##共享/mnt,ro只读共享
exportfs -rv ##刷新
测试:
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
3.nfs自动挂载
为了更加清晰的看到实验效果,我在服务端再共享一个/etc
vim /etc/exports
2 /etc *(ro,sync) ##共享/etc
exportfs -rv ##刷新
在客户端:
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并且说明了如何部署,在这里不再赘述
测试:
cd /media/mnt ##实现自动挂载共享的/mnt
cd /media/etc ##实现自动挂载共享的/etc
4.nfs权限设定
- 设定可写权限
一开始进入/media/mnt不能建立和删除文件是因为我共享文件时设定的参数为只读
vim /etc/exports
/mnt *(rw,sync) ##设定读写共享
exportfs -rv ##刷新
设定读写共享后,建立文件,提示touch: cannot touch ‘haha’: Permission denied
此时是因为共享主机的/mnt目录只对所有人可写,对其他人只有只读权限
chmod 777 /mnt ##修改完成后在远程主机即可建立删除文件
- 指定文件所有人所有组
cd /media/mnt
touch haha
ll ##我们建立文件后用ll查看
-rw-r--r--. 1 nfsnobody nfsnobody 0 Nov 30 20:26 haha ##它的所有人和所有组都是nfsnobody
如果我们想要指定它的所有人所有组,修改配置文件参数
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
- 设定所有用户都被指定所有人所有组
切换到student用户建立文件,ll查看到它的所有人所有组都是student
如果要让所有用户都用我们指定的参数
vim /etc/exports
/mnt *(rw,sync,anonuid=1001,anongid=1002,all_squash)
exportfs -rv
测试: 再次建立文件后它的所有人所有组分别就是westos lee
- 设定root用户不被指定参数
vim /etc/exports
/mnt *(rw,sync,anonuid=1001,anongid=1002,no_root_squash)
exportfs -rv
测试: 设定完成后用root用户建立的文件都属于root
注意:此处的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
测试: 设定完成后用236主机建立文件:touch: cannot touch ‘file111’: Read-only file system