NFS【文件共享】服务端配置和客户端使用详细说明【包含基于kerberos的nfs配置】

[root@centos76_2 ~]# systemctl is-active nfs-server.service

active

[root@centos76_2 ~]#

防火墙设置

  • 如果防火墙没有特别需求,直接关闭即可

[root@centos76_2 ~]# systemctl stop firewalld.service

[root@centos76_2 ~]# systemctl is-active firewalld.service

unknown

[root@centos76_2 ~]#

  • 如果防火墙有策略,就在防火墙中把nfs,rpc,mountd3个服务开放,并且/etc/exports目录是默认是没有任何东西的,如下图:

在这里插入图片描述

  • selinux建议直接关掉

[root@centos76_2 ~]# setenforce 0

[root@centos76_2 ~]# getenforce

Permissive

[root@centos76_2 ~]#

挂载目录配置

配置一个用来共享的目录【如果使用现有目录,忽略这一步】,给共享目录下所有文件给一个w权限,否则无法写入文件,如下,我的共享目录为:/root/ccx,并新建了几个文件用来测试。

[root@centos76_2 ~]# mkdir /root/ccx

[root@centos76_2 ~]# cd /root/ccx/

[root@centos76_2 ccx]# mkdir file{1…3}

[root@centos76_2 ccx]# touch test{4…6}

[root@centos76_2 ccx]# ls

file1 file2 file3 test4 test5 test6

[root@centos76_2 ccx]#

[root@centos76_2 ccx]# chmod o+w /root/ccx/*

[root@centos76_2 ccx]#

配置共享【权限见上面参数说明】

  • 只需要编辑/etc/exports或者在/etc/exports.d/里创建后缀为exports的文件即可(建议使用前者)

  • 语法是:

客户端ip可以为单个ip,格式为: ip/掩码,也可以放开一个段,格式为: 192.168.59.0/24

如果掩码是24位,可以不用加,默认24位掩码

/共享目录 客户端1ip(权限a,权限b,权限c,…)客户端2ip(权限x,权限y,…)

#上述是一行写的,也可以分成多行写,如下:

/共享目录 客户端1ip(权限a,权限b,权限c,…)

/共享目录 客户端2ip(权限x,权限y,…)

#还有一种是对所有ip开放

/共享目录 *(权限a,权限b)

  • 配置流程

  • 1、把需要挂载的目录写到/etc/exports中,指定目录和共享目的ip

  • 2、exportfs -arv :刷新/etc/exports列表(因为一开始就启动了nfs-server,如果修改/etc/exports文件的时候,就不需要再次重启,直接刷新即可)

  • 3、把文件写到/etc/exports,并刷新后,【1和2做完】服务端便配置完成

  • 配置过程【完整demo】

服务端ip为:192.168.59.129

需求:128有读写权限,130只有访问权限

因为我没有特殊权限要求,所以只用了很简单的权限,可以参考上面参数说明中的权限,按需添加,逗号隔开即可

[root@centos76_2 ccx]# vim /etc/exports

/root/ccx 192.168.59.128(rw,sync)

/root/ccx 192.168.59.130(ro)

[root@centos76_2 ccx]# exportfs -arv

exporting 192.168.59.128:/root/ccx

exporting 192.168.59.130:/root/ccx

[root@centos76_2 ccx]#

客户端配置


查看共享

showmount -e 服务器ip:查看分享(配置)详细

[root@centos76_1 ftp]# showmount -e 192.168.59.129

Export list for 192.168.59.129:

/root/ccx 192.168.59.130,192.168.59.128

[root@centos76_1 ftp]#

创建挂载路径

mkdir创建任意目录用来当做挂载路径

[root@centos76_1 ftp]# mkdir -p /nfs/ccx

挂载

方法:mount 服务器ip:分享路径 挂载路径 【分享路径上面有查看命令】

df -h 查看是否挂载成功

[root@centos76_1 ftp]# showmount -e 192.168.59.129

Export list for 192.168.59.129:

/root/ccx 192.168.59.130,192.168.59.128

[root@centos76_1 ftp]# mount 192.168.59.129:/root/ccx /nfs/ccx/

[root@centos76_1 ftp]# df -Th | tail -n 1

192.168.59.129:/root/ccx nfs 50G 3.7G 47G 8% /nfs/ccx

[root@centos76_1 ftp]# cd /nfs/ccx

[root@centos76_1 ccx]# ls # 这文件是服务端创建的,没问题

file1 file2 file3 test4 test5 test6

[root@centos76_1 ccx]#

客户端配置完成

权限不够说明【root用户无法在共享文件中创建文件】

配置完成后,在挂载的路径/nfs中写入数据,实际上都是放在服务器端共享的存储中,现在以root用户任意创建一个文件,会发现写不进去,报错提示权限不够,实际上我们分享的时候已经指定rw权限了,并且也是root用户,按理说不应该出现权限不够的问题,其实这是nfs本身机制导致的

[root@centos76_1 ccx]# ls

file1 file2 file3 test4 test5 test6

[root@centos76_1 ccx]# touch ccx

touch: 无法创建"ccx": 权限不够

处理方法有2种:

1、我们先看一下nfs的默认选项cat /var/lib/nfs/etab【服务端】

在这里插入图片描述

可以看到其中有一项是root_squash,该项是压缩root权限的意思,还有一项是:anonuid=65534,该项意思是把root权限压缩为uid为65534用户的权限,我们来看一下uid为65534的用户名为nfsnobady

[root@centos76_2 ccx]# awk -F: ‘/65534/{print $3,$1}’ /etc/passwd

65534 nfsnobody

而nfsnobody属于other用户, 本身是无法使用x权限的,所以需要给nfsnobody加一个w权限:chmod o+w 共享目录名,如共享目录名称是/nfs/ccx:chmod o+w /nfs/ccx

[root@centos76_2 ccx]# ll /root | grep ccx

drwxr-xr-x. 5 root root 84 May 10 00:20 ccx

[root@centos76_2 ccx]# chmod o+w /root/ccx

[root@centos76_2 ccx]# ll /root | grep ccx

drwxr-xrwx. 5 root root 84 May 10 00:20 ccx

[root@centos76_2 ccx]#

2、在/etc/exports中共享目录的时候加上权限:no_root_squash,意思是不压缩root权限:

[root@centos76_2 ccx]# vim /etc/exports

/root/ccx 192.168.59.128(rw,sync,no_root_squash)

/root/ccx 192.168.59.130(ro)

[root@centos76_2 ccx]# exportfs -arv

exporting 192.168.59.128:/root/ccx

exporting 192.168.59.130:/root/ccx

注:修改后不要重启服务,使用exportfs -arv 刷新即可

上诉2个解决方法使用其中任意一个均可,操作完任意一个后,再次创建一个文件到挂载共享目录,发现正常:

[root@centos76_1 ccx]# touch ccx

[root@centos76_1 ccx]# ls

ccx file1 file2 file3 test4 test5 test6

[root@centos76_1 ccx]# mkdir hero_ccx_file

[root@centos76_1 ccx]# ls

ccx file1 file2 file3 hero_ccx_file test4 test5 test6

[root@centos76_1 ccx]#

特殊使用【仅一个ip可读写,其他为制度】

如:我现在想让192.168.26.200可以写,其他客户端不能写(只读)

vi /etc/exports , 注意:其实掩码默认是24位的,因为这里需要单独把200放开,所以需要把200的掩码改为32位,注:第二个ip前面有一个空格

在这里插入图片描述

exportfs -avr 刷新 即可

权限测试

  • 上面服务端配置的时候说过,128具有读写权限,130只有访问权限

在这里插入图片描述

  • 测试128

这个我已经挂载好了,所以直接测试

[root@centos76_1 ccx]# ip a | grep 59.128

inet 192.168.59.128/24 brd 192.168.59.255 scope global noprefixroute ens33

[root@centos76_1 ccx]# ls

123 ccx file1 file2 file3 hero_ccx_file test4 test5 test6

[root@centos76_1 ccx]# echo test4>test4

[root@centos76_1 ccx]# touch ccx_hero

[root@centos76_1 ccx]# cat test4

test4

[root@centos76_1 ccx]#

写内容报错提升权限不够,用ll查看other用户是否有w权限,没有的话去服务端添加即可:chmod o+w 分享目录/* 【上面“挂载目录设置”有说明】

在这里插入图片描述

  • 测试130

这是没有挂载的,从挂载测试开始,代码后面有注释说明

[root@centos76_3 ~]# ip a | grep 59.130

inet 192.168.59.130/24 brd 192.168.59.255 scope global noprefixroute dynamic ens33

[root@centos76_3 ~]# mkdir /nfs/ccx -p # 创建挂载目录

[root@centos76_3 ~]# showmount -e 192.168.59.129 # 查看共享信息

Export list for 192.168.59.129:

/root/ccx 192.168.59.130,192.168.59.128

[root@centos76_3 ~]# mount 192.168.59.129:/root/ccx /nfs/ccx #挂载

[root@centos76_3 ~]# cd /nfs/ccx

[root@centos76_3 ccx]# ls

123 ccx ccx_hero file1 file2 file3 hero_ccx_file test4 test5 test6

[root@centos76_3 ccx]# cat test4 #查看没问题

test4

[root@centos76_3 ccx]# echo test6 > test6 #写入权限不够

-bash: test6: Permission denied

[root@centos76_3 ccx]# touch test_130 #创建权限不够

touch: cannot touch ‘test_130’: Read-only file system

[root@centos76_3 ccx]#

一切ok

卸载已挂载nfs文件

直接umount 挂载路径即可。

nfs自动挂载


自动挂载其实就是aotufs功能实现的,想了解的去看这篇博客

aotofs配置和挂载本地目录及nfs使用详细说明【aotofs即自动挂载】

基于kerberos的NFS


在这里插入图片描述

服务端配置

1、 先下载krb5.keytab:wget http://host.rhce.cc/materials/nfs_server.keytab -O /etc/krb5.keytab

在这里插入图片描述

2、 修改他的上下文:chcon -R -t public_content_t 共享目录 因为共享的时候需要把上下文一起共享出去

在这里插入图片描述

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
里一直到现在。**

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-fIDS2v3S-1715855253662)]

[外链图片转存中…(img-fYedGT4G-1715855253662)]

[外链图片转存中…(img-FaR4Snev-1715855253663)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值