linux主机搭建NFS服务器

NFS(Network File System,网络文件系统)

它允许网络中的计算机(不同的计算机、不同的操作系统)之间通过TCP/IP网络共享资源,主要在unix系列操作系统上使用。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中看来,那个远程主机的目录就好像是自己的一个磁盘分区一样。

因为NFS的端口并不固定,导致客户端连接连接服务器产生问题,原因就在于客户端并连接服务器是需要知道服务器端的端口才能进行连接,

为了解决这一办法,此时就需要RPC(Remote Procedure Call,远程过程调用) 的服务,当服务器在启动NFS时会随机选取数个端口号,并主动向RPC注册,所以RPC知道每个NFS功能所对应的端口号,RPC将端口号通知给客户端,让客户端可以连接到正确的端口上去。RPC采用固定端口号port 111来监听客户端的需求并向客户端响应正确的端口号。

即nfs服务需要搭配RPC服务运行才行

搭建NFS服务器要求

架设一台NFS服务器,并按照以下要求配置

1、开放/nfs/shared目录,供所有用户查询资料

2、开放/nfs/upload目录,为192.168.xxx.0/24网段主机可以上传目录,并将所有用户及所属的组映射为nfs-upload,其UID和GID均为2100

3、将/home/tom目录仅共享给192.168.xxx.xxx这台主机,并只有用户tom可以完全访问该目录

配置

主配置文件进行配置

主配置文件:/etc/exports

分析:

1、创建/nfs/shared目录,供所有用户查询资料,则在配置文件中写入共享的目录及权限为只读(ro权限)即可

2、创建/nfs/upload目录,为192.168.217.0/24网段主机可以上传目录,则该共享目录权限给读写权限(rw权限),因为所有用户及所属的组映射为nfs-upload,其UID和GID均为210,则写入all_squash ,anonuid=2100, anongid=2100

3、创建home/tom目录,写入只有192.168.217.133/24(客户端ip),只有用户tom可以完全访问该目录,则写入rw权限,

配置环境:

bash 复制代码
[root@server ~]# systemctl stop firewalld
[root@server ~]# setenforce 0
[root@server ~]# yum install nfs-utils rpcbind -y

1、开放/nfs/shared目录,供所有用户查询资料

服务端:

bash 复制代码
[root@server ~]# systemctl start nfs-server  把rpc和nfs服务合并了直接启动即可
[root@server ~]# mkdir -p /nfs/shared #先创一个目录文件
[root@server ~]# touch /nfs/shared/资料{a..f}  #创几个资料文件做模拟
[root@server ~]# ll /nfs/shared/ 查看server端的文件
总用量 0
-rw-r--r--. 1 root root 0 1月  13 23:52 资料a
-rw-r--r--. 1 root root 0 1月  13 23:52 资料b
-rw-r--r--. 1 root root 0 1月  13 23:52 资料c
-rw-r--r--. 1 root root 0 1月  13 23:52 资料d
-rw-r--r--. 1 root root 0 1月  13 23:52 资料e
-rw-r--r--. 1 root root 0 1月  13 23:52 资料f
[root@server ~]# vim /etc/exports 打开nfs的配置文件
/nfs/shared     *(ro)   
要分享的目录   *代表所有用户 ()中的ro代表只读权限
~                                                                               
~                                                                               
~       
[root@server ~]# exportfs -ra  导出配置文件生效
[root@server ~]# showmount -e  查看共享的目录
Export list for server:
/nfs/shared *

客户端:

bash 复制代码
[root@Node1 ~]# showmount -e 192.168.217.132  显示服务器分享过来的目录
Export list for 192.168.217.132:
/nfs/shared *
[root@Node1 ~]# mkdir /test   准备搭建文件系统
[root@Node1 ~]# mount 192.168.20.133:/nfs /test  通过-o参数挂载
[root@Node1 ~]# cd /test/ 查看是否可以看到
[root@Node1 test]# ll
总用量 0
drwxr-xr-x. 2 root root 96 11月  1月  13 shared
[root@Node1 test]# ll shared/
总用量 0
-rw-r--r--. 1 root root 0 1月  13 23:52 资料a
-rw-r--r--. 1 root root 0 1月  13 23:52 资料b
-rw-r--r--. 1 root root 0 1月  13 23:52 资料c
-rw-r--r--. 1 root root 0 1月  13 23:52 资料d
-rw-r--r--. 1 root root 0 1月  13 23:52 资料e
-rw-r--r--. 1 root root 0 1月  13 23:52 资料f

2、上传文件的操作

服务端:

bash 复制代码
[root@server ~]# mkdir /nfs/upload
[root@server ~]# touch /nfs/upload/资料{1..5}
[root@server ~]# ll /nfs/upload/
总用量 0
-rw-r--r--. 1 root root 0 1月  13 00:23 资料1
-rw-r--r--. 1 root root 0 1月  13 00:23 资料2
-rw-r--r--. 1 root root 0 1月  13 00:23 资料3
-rw-r--r--. 1 root root 0 1月  13 00:23 资料4
-rw-r--r--. 1 root root 0 1月  13 00:23 资料5
[root@server ~]# vim /etc/exports
/nfs/shared     *(ro)
/nfs/upload     192.168.217.0/24(rw,all_squash,anonuid=2100,anongid=2100)
[root@server ~]# groupadd -g 2100 nfs-upload
[root@server ~]# useradd -u 2100 -g 2100 nfs-upload
[root@server ~]# tail -1 /etc/passwd
nfs-upload:x:2100:2100::/home/nfs-upload:/bin/bash
[root@server ~]# showmount -e
Export list for server:
/nfs/shared *
/nfs/upload 192.168.217.0/24

同时需要注意/nfs/uplaod 的权限问题,要想让映射用户可以用创建文件,那么就需要其他人的读权限。

bash 复制代码
[root@server home]# chmod o+w /nfs/upload/
[root@server home]# ll /nfs/
总用量 0
drwxr-xr-x. 2 root root 96 1月  13 23:52 shared
drwxr-xrwx. 2 root root 81 1月  13 00:23 upload

客户端:

客户端192.168.20.141可以访问到,

bash 复制代码
[root@Node1 test]# showmount -e 192.168.20.133
Export list for 192.168.20.133:
/nfs/shared *
/nfs/upload 192.168.100.0/24 
[root@Node1 test]# mount 192.168.20.133:/nfs/ /test/ 通过读写方式挂载
[root@Node1 test]# cd /test/
[root@Node1 test]# ll upload/
总用量 0
-rw-r--r--. 1 root root 0 1月  13 00:23 资料1
-rw-r--r--. 1 root root 0 1月  13 00:23 资料2
-rw-r--r--. 1 root root 0 1月  13 00:23 资料3
-rw-r--r--. 1 root root 0 1月  13 00:23 资料4
-rw-r--r--. 1 root root 0 1月  13 00:23 资料5
[root@Node1 upload]# touch a
[root@Node1 upload]# ll
总用量 0
-rw-r--r--. 1 root root 0 1月  13 00:23 资料1
-rw-r--r--. 1 root root 0 1月  13 00:23 资料2
-rw-r--r--. 1 root root 0 1月  13 00:23 资料3
-rw-r--r--. 1 root root 0 1月  13 00:23 资料4
-rw-r--r--. 1 root root 0 1月  13 00:23 资料5
-rw-r--r--. 1 2100 2100 0 1月  13 00:35 a

可以看到新建的文件的uid和gid都是2100.

3、将/home/tom目录仅共享给192.168.100.136这台主机,并只有用户tom可以完全访问该目录

服务端:

把共享文件的所属用户和所属组改为tom即可

bash 复制代码
[root@server home]# mkdir /nfs/tom  新建一个共享目录
[root@server home]# useradd tom    新建一个tom用户
[root@server home]# chown tom:tom /nfs/tom    修改所属用户所属组
[root@server home]# vim /etc/exports    编辑配置文件添加这一行
/nfs/tom        192.168.217.133/24(rw)
[root@server home]# exportfs -ra
[root@server home]# showmount -e
Export list for server:
/nfs/shared *
/nfs/tom    192.168.217.133/24
/nfs/upload 192.168.217.0/24

客户端:

我们先使用fox用户看看是否可以完全访问tom目录很明显是不可以的

bash 复制代码
[root@Node1 test]# ll
总用量 0
drwxr-xr-x. 2 root root 96 1月  13 23:52 shared
drwxr-xr-x. 2 2101 2101  6 1月  13 00:35 tom
drwxr-xrwx. 2 root root 90 1月  13 00:35 upload
[root@Node1 test]# su fox
[fox@Node1 test]$ cd tom/
[fox@Node1 tom]$ touch a
touch: 无法创建 'a': 权限不够
 

创建tom用户切换后尝试:

bash 复制代码
[root@Node1 tom]# useradd -u 2101 tom
[root@Node1 tom]# su tom
[tom@Node1 tom]$ touch b
[tom@Node1 tom]$ ll
总用量 0
-rw-rw-r--. 1 tom    tom    0 1月  13 00:35 b
-rw-r--r--. 1 root   root   0 1月  13 00:35 tom1
-rw-r--r--. 1 root   root   0 1月  13 00:35 tom2
[tom@Node1 tom]$ 
相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式