千家信息网

Linux系统服务搭建之NFS

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,一、基础概念NFS:Network File System网络文件系统,Unix系统之间共享文件的一种协议,只能应用在局域网中将网络磁盘分区映射到本地,节省本地磁盘空间协议:RPC(Remote Pr
千家信息网最后更新 2025年01月31日Linux系统服务搭建之NFS

一、基础概念

NFS:Network File System网络文件系统,Unix系统之间共享文件的一种协议,只能应用在局域网

将网络磁盘分区映射到本地,节省本地磁盘空间

协议:

RPC(Remote Procedure Call Protocol)--远程过程调用协议

软件:

nfs-utils-* :包括基本的NFS命令与监控程序 (只安装这个)

rpcbind-* :支持安全NFS RPC服务的连接(默认已经安装)

1.1、NFS系统守护进程

nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器

mountd:它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利通过nfsd登录NFS 服务器 后,在使用NFS服务所提供的文件前,还必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限。

rpcbind:主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,rpcbind会将所管理的与服务对应的端口提供给客户端,从而使 客户可以通过该端口向服务器请求服务。

1.2、NFS服务器的配置

NFS服务器的配置相对比较简单,只需要在相应的配置文件中进行设置,然后启动NFS服务器即可。

1.2.1、NFS的常用目录

/etc/exports NFS服务的主要配置文件

/usr/sbin/exportfs NFS服务的管理命令

/usr/sbin/showmount 客户端的查看命令

/var/lib/nfs/etab 记录NFS分享出来的目录的完整权限设定值

/var/lib/nfs/xtab 记录曾经登录过的客户端信息

NFS服务的配置文件为 /etc/exports,这个文件是NFS的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在,可能要使用vim手动建立,然后在文件里面写入配置内容。

1.2.2、配置文件的格式

/etc/exports文件内容格式:

<输出目录> [客户端1 选项(访问权限,用户映射,其他)][客户端2 选项(访问权限,用户映射,其他)]

a. 输出目录: NFS服务器系统中需要共享给客户机使用的目录

b. 客户端:客户端是指网络中可以访问这个NFS输出目录的计算机

客户端常用的指定方式:

指定ip地址的主机:192.168.0.200

指定子网中的所有主机:192.168.0.0/24 或者192.168.0.0/255.255.255.0

指定域名的主机:david.bsmart.cn

指定域中的所有主机:*.bsmart.cn

所有主机:*

c. 选项:选项用来设置输出目录的访问权限、用户映射等。

NFS主要有3类选项:

访问权限选项:

设置输出目录只读:ro

设置输出目录读写:rw

用户映射选项:

all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);

no_all_squash:与all_squash取反(默认设置)

root_squash:将root户及所属组都映射为匿名用户或用户组;

no_root_squash:与rootsquash取反(默认设置);

anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);

anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

其它选项

secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);

insecure:允许客户端从大于1024的tcp/ip端口连接服务器;

sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;

async:将数据先保存在内存缓冲区中,必要时才写入磁盘;

wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);

no_wdelay:若有写操作则立即执行,应与sync配合使用;

subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);

no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

1.3、NFS服务器的启动与停止

1.3.1、启动NFS服务器

有启动顺序,必须先A后B;关闭NFS服务器顺序则正好相反,先B后A

A、service rpcbind start | stop

B、service nfs start | stop

1.3.2、查询NFS服务器状态

servicerpcbind status

service nfs status

1.3.3、设置NFS服务器的自动启动

设置rpcbind和nfs服务在系统运行级别2345自动启动。

#chkconfig --level 35 rpcbind on

#chkconfig --level 35 nfs on

二、实例


1. 将NFS服务器的/home/zhangsan共享给192.168.115.0/24网段,rw权限

# vi /etc/exports

/home/zhangsan 192.168.115.0/24(rw,sync)读写、同步

2. 重启portmap 和nfs 服务

# service rpcbind restart

# service nfs restart

# exportfs

3. 服务器端查看nfs共享状态

# showmount -e 本机ip 或者 exportfs

查看自己共享的服务

4. 客户端查看nfs共享状态

showmount -e NFS服务器IP

5. 客户端挂载nfs服务器共享目录

命令格式:mount NFS服务器IP:共享目录 本地挂载点目录

# mount -t nfs 192.168.115.10:/home/zhangsan/ /media/zhangsan/

# mount |grep nfs

验证客户端和nfs服务器端文件是否一致:

修改服务器端相应权限,不然客户端无法正常访问和使用

6. nfs共享权限和访问控制

a. 客户端root用户

使用客户端的root身份在nfs服务器上创建文件,文件的所有者和所属组是nfsnobody

b. 客户端普通用户

使用客户端的普通用户身份在nfs服务器上创建文件,所有者和所属组是nobody或普通用户。

c. 原因:/var/lib/nfs/etab

1. 客户端连接的时候,对root的检查

如果设置no_root_squash,那么此时root用户的身份被压缩为NFS server上面的root

如果设置了all_squash、anonuid、anongid,此时root身份被压缩为指定用户;

如果没有明确指定,此时root用户被压缩为nfsnobody;

如果同时指定no_root_squash与all_squash 用户将被压缩为 nfsnobody,如果设置了anonuid、anongid将被压缩到所指定的用户与组;

2. 客户端连接时候,对普通用户的检查

如果明确设定了普通用户被压缩的身份,那么此时客户端用户的身份转换为指定用户;

如果NFS server上面有同名用户,那么此时客户端登录账户的身份转换为NFS server上面的同名用户;

如果没有明确指定,也没有同名用户,那么此时 用户身份被压缩成nobody;

7. 卸载和自动挂载

卸载:

1. 卸载客户端的挂载目录

umount 挂载点

2. 停止服务器端的共享

exportfs -au

自动挂载:/etc/fstab

格式:: nfs < options> 0 0

#192.168.115.10:/home/zhangsan /media/zhangsan nfs defaults 0 0

#mount-a

三、相关命令

a. exportfs

如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs 命令来使改动立刻生效,该命令格式如下: 

格式:exportfs [-aruv]

-a 全部挂载或卸载 /etc/exports中的内容

-r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab

-u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)

-v 在export的时候,将详细的信息输出到屏幕上。

具体例子:

# exportfs-au 卸载所有共享目录

#exportfs -rv 重新共享所有目录并输出详细信息

b. rpcinfo利用rpcinfo -p 可以查看出RPC开启的端口所提供的程序有哪些

其中nfs 开启的是2049,portmapper(rpcbind)开启的是111,其余则是rpc开启的映射端口。


服务 用户 客户 服务器 客户端 目录 文件 权限 输出 配置 身份 系统 命令 端口 普通 格式 用户组 主机 端的 检查 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 发生过哪些重大的网络安全事件呢 惠普服务器主板开机慢 网络安全为人民小视频 广州为知互联网科技面试 csgo外国服务器在哪里 60年代战场装备数据库 武汉哪里有软件开发方案 一个服务器可安装多个数据库吗 软件开发检验公司 我的世界服务器复制教程 奥登视频软件开发 浙江宏景互联网科技有限公司 网络技术基础知识 公开课 武威市网络安全和信息化委员会 试分析网络安全与网络发展的关系 阿里云服务器速度怎么样 1.8.0我的世界服务器 国家网络安全宣传周卡通漫画 数据库字段在前端选择 网吧服务器需要散热吗 远程桌面连不上服务器 ipv6DNS服务器没检测到 物理差女生可以学网络技术吗 数据库访问技术发展 软件开发的五个进度 双路机架服务器批发 学籍管理数据库结构 网络安全讲解员视频 网络安全泄密手抄报 ios如何定位安卓软件开发
0