nfs

简介:

nfs

 

 概念

网络文件系统(NFS)是Unix系统和网络附加存储文件管理器常用的网络文件系统,允许多个客户端通过网络共享文件访问。它可用于提供对共享二进制目录的访问,也可用于允许用户在同一工作组中从不同客户端访问其文件。

 

 

 firewalld的设定

 

在防火墙开启的情况下,要想访问nfs则firewalld要添加以下策略:

1 firewall-cmd --permanent --add-service=nfs###允许nfs###

2 firewall-cmd --reload

3 firewall-cmd --permanent --add-service=rpc-bind###nfs的访问端口不确定,是由rpc-bind分配端口###

4 firewall-cmd --reload

5 firewall-cmd --permanent --add-service=mountd###允许挂载###

6 firewall-cmd --reload

7 systemctl start nfs

 

过程如下:

 

[root@localhost ~]# firewall-cmd --permanent --add-service=nfs###允许nfs###

success

[root@localhost ~]# firewall-cmd --reload

success

[root@localhost ~]# firewall-cmd --permanent --add-service=rpc-bind###nfs的访问端口不确定,是由rpc-bind分配端口###

success

[root@localhost ~]# firewall-cmd --reload

success

[root@localhost ~]# firewall-cmd --permanent --add-service=mountd###允许挂载###

success

[root@localhost ~]# firewall-cmd --reload

success

[root@localhost ~]# systemctl start nfs

 

测试:

[kiosk@foundation12 Desktop]$ showmount -e 172.25.254.112###显示指定nfs服务器中的共享目录列表,若只是showmount-e 则显示当前主机中nfs服务器的输出列表###

Export list for 172.25.254.112:

[kiosk@foundation12 Desktop]$

 

 

 共享目录

 

1)共享给所有人

nfsf服务端:

mkdir /public###建立共享目录###

touch /public/westostest{1..3}

vim /etc/exports

 

内容:

 

/public*(sync)###public共享给所有人并且数据同步(ro)是只读###

共享目录共享方式

 

exportfs -rv###读取/etc/exports为文件中的设置并生效###

 

测试:

客户端:

showmount -e 172.25.12.11

mount 172.25.12.11:/public /mnt/###将共享目录挂载到/mnt下###

过程如下:

 

服务端:

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

[root@server ~]# exportfs -rv

exporting 172.25.12.0/24:/public

 

客户端:

[root@desktop12 ~]# showmount -e 172.25.12.11

Export list for 172.25.12.11:

/public *

[root@desktop12 ~]# mount 172.25.12.11:/public /mnt/###挂载###

[root@desktop12 ~]# cd /mnt/

[root@desktop12 mnt]# ls

westostest  westostest1  westostest2  westostest3

[root@desktop12 mnt]# touch file

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

 

 

2)共享给某个主机(例:172.25.12.10)

 

nfs服务端:

vim /etc/exports

 

内容:

 

/public172.25.12.10(sync)###public共享给主机172.25.12.10并且数据同步###

共享目录共享方式

 

exportfs -rv###生效###

 

测试:

服务端(172.25.12.10):

 

 

 

 

3)共享给某个网段(例:172.25.78.0/24)

 

nfs服务端:

1 vim /etc/exports

 

内容:

/public         172.25.78.0/24(sync)###public共享给在该网段的所有主机并且数据同步###

2 exportfs -rv

 

 

测试:

客户端:

[root@foundation78 Desktop]# mount 172.25.78.11:/public /mnt/

[root@foundation78 Desktop]# cd /mnt/

[root@foundation78 mnt]# ls

westostest1  westostest2  westostest3

 

 

 

3)共享给某个域

 

nfs服务端:

1 vim /etc/exports

 

内容:

/public        *.example.com(sync)###public共享给在该域的所有主机并且数据同步###

2 exportfs -rv

 

 

测试:

showmount -e 172.25.78.11

 

 

过程如下:

 

nfs服务端:

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

[root@server ~]# exportfs -rv

exporting *.example.com:/public

[root@server ~]#

 

 

测试:

[kiosk@foundation78 Desktop]$ showmount -e 172.25.78.11

Export list for 172.25.78.11:

/public *.example.com

[kiosk@foundation78 Desktop]$ rht-vmctl view desktop

[kiosk@foundation78 Desktop]$

 

 

 

4)允许共享给多主机

 

nfs服务端:

1 vim /etc/exports

 

内容:

/public         172.25.78.10(sync)      172.25.78.250(rw,sync)###共享给10主机和12主机,并且允许12主机进行写操作###

 

2 exportfs -rv

3  chmod 777 /public###当访问共享目录时,用户的超级身份发生了改变,对该目录来说,是other,所以要将该目录修改权限为777###

 

注意:NFS服务器将NFS客户端上的root视为用户nfsnobody。即,如果root尝试访问挂载的

导出中的文件,服务器会将其视作用户nfsnobody访问

 

过程如下:

 

nfs服务端:

 

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

[root@server ~]# ls -ld /public/###该目录只有超级用户可写###

drwxr-xr-x. 2 root root 63 Jun  6 23:27 /public/

[root@server ~]# chmod 777 /public/###修改权限,使得其他人可写###

[root@server ~]# exportfs -rv

exporting 172.25.78.11:/public

exporting 172.25.78.250:/public

 

 

测试:

 

172.25.78.10主机:(不能对共享目录进行写操作)

[root@desktop ~]# mount 172.25.78.11:/public /mnt/

[root@desktop ~]# cd /mnt/

[root@desktop mnt]# ls

westoslinux1  westoslinux2  westoslinux3

[root@desktop mnt]# rm -fr *

rm: cannot remove ‘westoslinux1’: Read-only file system###只具有读权限#

rm: cannot remove ‘westoslinux2’: Read-only file system

rm: cannot remove ‘westoslinux3’: Read-only file system

 

172.25.78.250主机:(具有读写权限)

 

[root@foundation78 Desktop]# mount 172.25.78.11:/public /mnt/

[root@foundation78 Desktop]# cd /mnt/

[root@foundation78 mnt]# ls

westoslinux1  westoslinux2  westoslinux3

[root@foundation78 mnt]# touch file1

[root@foundation78 mnt]# ll

total 0

-rw-r--r--. 1 nfsnobody nfsnobody 0 Jun  6 23:31 file1###超级用户发生了改变###

-rw-r--r--. 1 root      root      0 Jun  6 23:27 westoslinux1

-rw-r--r--. 1 root      root      0 Jun  6 23:27 westoslinux2

-rw-r--r--. 1 root      root      0 Jun  6 23:27 westoslinux3

[root@foundation78 mnt]#

 

 

 

5)当客户端使用超级用户挂载,不转换超级用户

 

nfs服务端:

1 vim /etc/exports

 

内容:

/public         172.25.78.250(rw,sync,no_root_squash) ###共享给和12主机,并且允许12主机进行写操作且不转换超级用户###

 

2 exportfs -rv

 

 

过程如下:

 

 

nfs服务端:

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

[root@server ~]# exportfs -rv

exporting 172.25.78.250:/public

 

 

测试:

[root@foundation78 ~]# mount 172.25.78.11:/public /mnt/

[root@foundation78 ~]# cd /mnt/

[root@foundation78 mnt]# ls

file1  westoslinux1  westoslinux2  westoslinux3

[root@foundation78 mnt]# touch file2

[root@foundation78 mnt]# ll

total 0

-rw-r--r--. 1 nfsnobody nfsnobody 0 Jun  6 23:31 file1

-rw-r--r--. 1 root      root      0 Jun  6 23:44 file2###超级用户没有改变###

-rw-r--r--. 1 root      root      0 Jun  6 23:27 westoslinux1

-rw-r--r--. 1 root      root      0 Jun  6 23:27 westoslinux2

-rw-r--r--. 1 root      root      0 Jun  6 23:27 westoslinux3

[root@foundation78 mnt]#

 

 

 

5)指定访问时的超级用户

 

nfs服务端:

 

1 vim /etc/exports

 

内容:

/public         172.25.78.250(rw,sync,anonuid=1001,anongid=1001) ###anonuid=1001,anongid=1001,指定用户的uid和gid###

 

2 exportfs -rv

 

 

过程如下:

nfs服务端:

[root@server ~]# useradd westos

[root@server ~]# id westos

uid=1001(westos) gid=1001(westos) groups=1001(westos)

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

[root@server ~]# exportfs -rv

exporting 172.25.78.250:/public

[root@server ~]#

 

测试:

 

[root@foundation78 ~]# mount 172.25.78.11:/public /mnt/

[root@foundation78 ~]# cd /mnt/

[root@foundation78 mnt]# ls

file1  file2  westoslinux1  westoslinux2  westoslinux3

[root@foundation78 mnt]# touch file3

[root@foundation78 mnt]# ll

total 0

-rw-r--r--. 1 nfsnobody nfsnobody 0 Jun  6 23:31 file1

-rw-r--r--. 1 root      root      0 Jun  6 23:44 file2

-rw-r--r--. 1      1001      1001 0 Jun  6 23:51 file3###用户和组均为指定的uid和gid###

-rw-r--r--. 1 root      root      0 Jun  6 23:27 westoslinux1

-rw-r--r--. 1 root      root      0 Jun  6 23:27 westoslinux2

-rw-r--r--. 1 root      root      0 Jun  6 23:27 westoslinux3

[root@foundation78 mnt]#

 

 

6)永久挂载nfs文件系统:

vim /etc/fstab

 

内容:

 

172.25.78.11:/public    /mnt    nfs     defaults        0       0

 

7)客户端NFS挂载选项

 

1 rw:挂载可读写的文件系统

2 ro:挂载只读文件系统

3 vers=4:尝试只使用指定的NFS版本进行挂载。如果服务器不支持该版本,则挂载请求失败

4 soft:如果NFS请求超时,三次尝试后返回错误。权衡数据完整性与提高客户端响应性。(默认行为hard,将无限期地重试)

 

 

 

 利用kerberos保护nfs输出

 

当客户端将共享目录挂载到自己系统的某个目录下,那么其他用户登入到该主机,并且进入到该目录下,就可以看到共享的所有目录和文件,只要具有相应的权限,就可以对文件进行相应的操作,因此要保护nfs的输出。

 

nfs服务端:

1 yum install sssd krb5-workstation authconfig-gtk -y

2 authconfig-gtk###开启kerberos,得到ldap用户###

3 su - student

4 su - ldapuser1###只有输入密码后才能得到钥匙###

5 klist###查看票###

6 wget http://172.25.254.254/pub/keytabs/server12.keytab -O /etc/krb5.keytab###得到证书###

7 ktutil###查看证书是否下载对###

8 rkt /etc/krb5.keytab

9 list

10 systemctl restart nfs-secure-server

11 systemctl enable  nfs-secure-server

12 vim /etc/exports

内容:

 

/public*(rw,sec=krb5p)###sec=krb5p指认证方式###

 

13 exportfs -rv

 

 

nfs客户端:

1 yum install sssd krb5-workstation authconfig-gtk -y

2 authconfig-gtk###开启kerberos,得到ldap用户###

3 su - student

4 su - ldapuser1###只有输入密码后才能得到钥匙###

5 klist###查看票###

6 wget http://172.25.254.254/pub/keytabs/desktop12.keytab -O /etc/krb5.keytab###下载证书###

7 systemctl start nfs-secure

8 systemctl enable nfs-secure

9 mount -o sec=krb5p 172.25.12.11:/public /mnt/###挂载###

 

 

测试:

key的可以挂载,有证书的可以访问nfs共享目录

[root@desktop12 Desktop]# mount -o sec=krb5p 172.25.12.11:/public /mnt/

[root@desktop12 Desktop]# df

Filesystem           1K-blocks    Used Available Use% Mounted on

/dev/vda1             10473900 3228684   7245216  31% /

devtmpfs                481120       0    481120   0% /dev

tmpfs                   496708     140    496568   1% /dev/shm

tmpfs                   496708   13056    483652   3% /run

tmpfs                   496708       0    496708   0% /sys/fs/cgroup

/dev/sr0               3654720 3654720         0 100% /run/media/root/RHEL-7.0 Server.x86_64

172.25.12.11:/public  10473984 3207168   7266816  31% /mnt

[root@desktop12 Desktop]# cd /mnt/

[root@desktop12 mnt]# ls

westoslinux1  westoslinux2  westoslinux3

[root@desktop12 mnt]# cd

[root@desktop12 ~]# su - student

Last login: 六 6月  3 23:30:14 EDT 2017 on pts/0

[student@desktop12 ~]$ cd /mnt###普通用户没有key和证书不能访问###

-bash: cd: /mnt: Permission denied

[student@desktop12 ~]$ su - ldapuser1###ldapuser1有证书和key可以访问###

Password:

Last login: Sat Jun  3 23:30:30 EDT 2017 on pts/0

su: warning: cannot change directory to /home/guests/ldapuser1: No such file or directory

mkdir: cannot create directory '/home/guests': Permission denied

-bash-4.2$ cd /mnt/

-bash-4.2$ ls

westoslinux1  westoslinux2  westoslinux3

-bash-4.2$ 












本文转自blueclo51CTO博客,原文链接: http://blog.51cto.com/12774272/1933929  ,如需转载请自行联系原作者





相关文章
|
人工智能 前端开发 数据可视化
2024年低代码趋势洞察——企业最看重的功能有哪些
低代码平台正从“可选”工具转变为数字化转型的“必需品”。预计到2024年,全球超70%企业将引入低代码开发工具。其优势包括简化开发流程、提高效率、降低成本,支持可视化开发、多人协作、快速部署等。平台通过五大核心引擎(SQL、功能、模板、图表、切面)驱动高效开发,并结合AI技术提升智能化水平。此外,丰富的插件生态和开源支持保障了灵活性与扩展性,助力企业在复杂业务场景中实现高效运营与决策。
341 14
|
5月前
|
传感器 人工智能 安全
2025全球12款人形机器人技术解密:工业/医疗/物流场景落地全解析
从特斯拉专注量产的Optimus Gen 2利用自动驾驶AI技术,到Boston Dynamics专为极端环境设计的特技机器人Electric Atlas,每款机器人都针对特定市场需求提供独特功能。中国企业如优必选机器人以1.6万美元的G1价格颠覆市场,而Agility Robotics的鸟类机器人Digit则通过创新的机器人即服务模式聚焦物流领域。
628 0
|
移动开发 小程序 数据可视化
HBuilderX 小白上手指南
HBuilderX 小白上手指南
889 0
|
Java Unix
Sun Microsystems
Sun Microsystems
568 62
|
资源调度 JavaScript 前端开发
Vue2项目使用v-viewer插件实现图片预览、切换、缩放、旋转...
这篇文章介绍了在Vue 2项目中如何通过`v-viewer`插件实现图片的预览、切换、缩放、旋转等功能,并提供了插件的安装、配置和使用方法。
4326 0
Vue2项目使用v-viewer插件实现图片预览、切换、缩放、旋转...
|
设计模式 算法 Java
设计模式实战
**设计模式的应用与案例** 设计模式是解决常见软件设计问题的最佳实践,有助于提升代码质量和可维护性。有效利用设计模式的步骤包括:理解业务需求、识别问题、选择合适模式、学习研究和适时调整。在实际工作中,例如,通过结合工厂模式和策略模式,解决了多端页面配置筛选逻辑,避免接口爆炸;使用模板方法模式,将复杂业务逻辑拆分为可复用步骤,提高了代码扩展性。设计模式虽好,但应适度,避免过度复杂化。
196 1
|
安全 关系型数据库 MySQL
国产麒麟服务器等保二级 配置规范(一)
国产麒麟服务器等保二级 配置规范(一)
1070 0
|
数据可视化 JavaScript 前端开发
Python有哪些优质的可视化工具
Python有哪些优质的可视化工具
150 0
|
开发工具
研科icod小票打印机SDK插件
研科icod小票打印机SDK插件
186 0
|
机器学习/深度学习 自然语言处理 算法
GPT-3 vs Bert vs GloVe vs Word2vec 文本嵌入技术的性能对比测试
本文将GPT3与三种传统文本嵌入技术GloVe、Word2vec(Mikolov ,2013 年)和 BERT生成的嵌入进行性能的简单对比。
944 0
GPT-3 vs Bert vs GloVe vs Word2vec 文本嵌入技术的性能对比测试