NFS服务

NFS服务

一:NFS服务的基础知识

1:NFS服务的概念

NFS(network file system)网络文件系统,采用的是C|S架构,支持多个客户端去访问,采用的挂载的方式来进行访问

2:NFS服务的工作原理

NFS有2个进程,一个是111(rpcbind)进程,另外一个是2049(nfsd)进程,rpcbind进程用来远程连接的,类比于ftp的21号端口,nfsd进程,用来进行一些操作,查询和修改等操作,类比于ftp的20号端口

3:NFS的软件包

需要安装2个包,rpcbind,nfs-utils,一般来说,这2个包都是已经安装了的

[root@server /]# yum -y install rpcbind nfs-utils
已加载插件:langpacks, product-id, search-disabled-repos,
          : subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
软件包 rpcbind-0.2.0-38.el7.x86_64 已安装并且是最新版本
软件包 1:nfs-utils-1.3.0-0.33.el7.x86_64 已安装并且是最新版本
无须任何处理

二:NFS服务的配置文件

1:/etc/exports

这个是NFS服务的主要配置文件,里面是空的,所以需要我们手动配置一些参数

里面的格式如下:

共享文件夹 可以访问的服务器的网段,权限

nfs-share 192.168.10.0/24(ro)

三:配置NFS服务

1:检查端口号

在配置之前,要先把防火墙关掉,这个服务不受到selinux的限制,所以关不关都无所谓

[root@server /]# netstat -pant 
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd  
tcp6       0      0 :::2049                 :::*                    LISTEN      -  
#都属于侦听的状态

2:server端配置

#首先启动服务和设置为开机自启
[root@server /]# systemctl start nfs-server rpcbind
[root@server /]# systemctl enable nfs-server
[root@server /]# systemctl enable rpcbind

创建一个NFS共享的文件夹,并且往里面创建一个标记文件,提供测试用的
[root@server /]# mkdir nfs-share
[root@server nfs-share]# touch flag
[root@server nfs-share]# ls
flag
[root@server nfs-share]# 

修改NFS主配置文件,只读的模式
[root@server nfs-share]# vim /etc/exports
nfs-share 192.168.10.0/24(ro)

#重启NFS服务
[root@server nfs-share]# systemctl restart nfs-server
 

3:一些测试的命令

#服务端的测试,就是可以查看有哪些文件是被共享出去的,里面的参数自己可以查阅
[root@server /]# exportfs -v
/nfs-share    	192.168.10.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)

#客户端测试,可以查看NFS服务提供了哪些可以共享的文件
[root@client /]# showmount -e 192.168.10.100
Export list for 192.168.10.100:
/nfs-share 192.168.10.0/24

4:client端配置

#挂载到客户端的/mnt目录下
[root@client /]# mount -t nfs 192.168.10.100:/nfs-share /mnt

#进入到/mnt目录下,查看测试文件
[root@client mnt]# ls
flag

出现了该文件,说明这个服务已经配置好了
但是不能在这个目录下,修改文件和创建文件等操作
[root@client mnt]# touch 11
touch: 无法创建"11": 只读文件系统
[root@client mnt]# mkdir 22
mkdir: 无法创建目录"22": 只读文件系统
[root@client mnt]# 

所以需要修改服务端的参数,开放写的操作

5:开放写的操作

#更改它的权限为rw
[root@server /]# vim /etc/exports
nfs-share 192.168.10.0/24(rw) 

#除了NFS配置文件的参数限制外,还有文件夹的权限有限制
第一种修改的方法,直接添加其他用户的权限为w
[root@server nfs-share]# ll -d
drwxr-xr-x. 2 root root 18 10月 11 14:24 .
[root@server nfs-share]# chmod o+w /nfs-share/
[root@server nfs-share]# ll -d
drwxr-xrwx. 2 root root 18 10月 11 14:24 .
[root@server nfs-share]# 

第二种方法,就是更改文件的主人或者属组为nfsnobody,
#因为有NFS的配置文件中的no_root_squash为默认的,会把以root用户登录的压榨成nfsnobody,所以更改它的主人为nfsnobbody
[root@server nfs-share]# chown nfsnobody /nfs-share/
[root@server nfs-share]# ll -d
drwxr-xr-x. 2 nfsnobody root 18 10月 11 14:24 .
[root@server nfs-share]# 

6:服务端写入的操作

#就可以进行修改等一系列的操作了
[root@client mnt]# ls
flag
[root@client mnt]# touch 11
[root@client mnt]# ls
11  flag
[root@client mnt]# mkdir 22
[root@client mnt]# ls
11  22  flag
[root@client mnt]# rm -rf 22/
[root@client mnt]# ls
11  flag
[root@client mnt]# 

 

 

三:开启防火墙的操作

[root@controller /]# firewall-cmd --permanent --add-service=nfs
[root@controller /]# firewall-cmd --permanent --add-service=rpc-bind
[root@controller /]# firewall-cmd --permanent --add-service=mountd
[root@controller /]# firewall-cmd --reload 
[root@controller /]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160 ens192
  sources: 
  services: cockpit dhcpv6-client mountd nfs rpc-bind samba ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

 

在开启防火墙的前提下,访问NFS  

 

posted @ 2023-10-11 14:53  q_7  阅读(29)  评论(0编辑  收藏  举报