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