NFS服务器

2021-12-05 23:21:31 浏览数 (1)

NFS 是Network File

System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。

NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call)

是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的。

NFS应用场景,常用于高可用文件共享,多台服务器共享同样的数据,可扩展性比较差,本身高可用方案不完善,取而代之的数据量比较大的可以采用MFS、TFS、HDFS等等分布式文件系统。

1. 环境准备两台Centos7.6虚拟机:

服务端:192.168.199.180

客户端:192.168.199.190

2.创建用户,指定用户访问共享文件夹:

useradd test #创建test用户

passwd test #设置test密码为123456

3. 查看test用户UID跟GID参数,方便一会去NFS主配置文件增加权限控制

4. NFS安装命令:yum install nfs* -y 如下图:

5. 查看nfs是否安装成功:rpm -qa nfs-utils

6.编辑nfs主配置文件/etc/exports;并添加以下内容:

/www

192.168.199.190(rw,sync,root_squash,no_all_squash,anonuid=1002,anongid=1002)

参数详解:

NFS安装完毕,需要创建共享目录,共享目录在/etc/exports文件里面配置,可配置参数如下:

/www

192.168.199.190(rw,sync,root_squash,no_all_squash,anonuid=1002,anongid=1002)

第一列/www 表示需要共享的目录

IP表示允许哪个客户端访问

IP后括号里的设置表示对该共享文件的权限

ro 只读访问

rw 读写访问

sync 所有数据在请求时写入共享

hide 在NFS共享目录中不共享其子目录

no_hide 共享NFS目录的子目录

all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。

no_all_squash 保留共享文件的UID和GID(默认)

root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)

no_root_squas root用户具有根目录的完全管理访问权限

anonuid 指定用户UID

anongid 指定用户组ID

7.启动nfs服务:systemctl start nfs

8.查看nfs及rpc端口是否启动成功:

9. rpcinfo -p 192.168.199.180 查看,如图所示:

RPC命令详解: rpcinfo 命令会向 RPC 服务器发出 RPC 调用,并将得到的结果显示出来。rpcinfo 会列出所有在主机 host 上向

rpcbind 注册的 RPC 服务。

10. 使用showmount -e localhost 命令用于查询NFS服务器的相关信息,显示NFS服务器的输出清单。

11. 创建共享文件夹目录www ;并在www目录下新建jfedu.txt并加入内容,授予www用户用户组的nfsnobody.nfsnobody权限

mkdir -p /www #创建www共享目录

touch /www/jfedu.txt #在www目录下创建jfedu.txt文件

chown -R test:test /www #授权用户用户组test给www目录

二、安装客户端:(192.168.199.190)

1. yum install nfs-utils -y

客户端上不需要启动nfs服务,只是为了使用showmount工具

2. 查看RPC端口是否启动:netstat -ntpl

3.使用showmount -e 192.168.199.180命令显示NFS服务器输出结果:

4.远程挂载www共享目录到客户端的/mnt目录下:mount -t nfs 192.168.199.180:/www /mnt

5. 进入到/mnt挂载盘符目录下cd /mnt ;确认是否有jfedu.txt文件存在及查看文件权限属于谁:

确认文件已存在,用户用户组均为test用户所属,其他用户不能操作此目录下的文件及文件夹;包括root用户都不能操作删除及修改文件,例如root用户都不能删除jfedu.txt文件:

6.如果也只需要客户端的test用户去对www共享文件夹有增删改查权限的话,需要以下步骤:

a. 在客户端创建相同的test用户,并保证UID一致的情况下才能对共享目录有权限进行操作

b. 设置tets用户密码为123456

c. 查看test用户UID参数值是多少 cat /etc/passwd

d.

那么问题来了,服务端的test用户UID为1002,客户端test用户UID为1004,共享目录在客户端的权限也为1002,那么1004是没有权限去访问共享目录的,可参考下目前状态的错误图;首先切换到test用户,然后进入到/mnt目录下进行jfedu.txt文件删除看是否报错:

e.

经过测试同样的tets用户,但是客户端的用户UID跟服务端不一致,所以是没有权限删除文件的,首先退出tets用户,切换root用户后,需要修改客户端test用户UID跟服务端一致即可解决问题,命令:usermod

-u 1002 tets

7.修改完客户端test用户UID为1002后,切换到test用户,查看是否有jfedu.txt文件存在;然后追加新内容123456到jfedu.txt中;最后新建123.txt文件成功,代表NFS共享目录指定用户读取(增删改查)成功。

8. 在NFS服务端把NFS跟RPC服务加入开机自启动:

systemctl enable nfs-server

systemctl enable rpcbind

9. 在客户端将NFS远程共享目录挂载命令加入fstab配置,不然服务器重启挂载点将消失,加入以下配置到/etc/fstab配置文件

192.168.199.180:/www /mnt nfs defaults 0 0

0 人点赞