千家信息网

网络服务—NFS

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,NFS概述NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够
千家信息网最后更新 2026年11月03日网络服务—NFS

NFS概述

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

协议:

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

软件:

nfs-utils-* :包括基本的NFS命令与监控程序

rpcbind-* :支持安全NFS RPC服务的连接

注:通常情况下,是作为系统的默认包安装的

CentOS6.*之前rpcbind叫portmap。


NFS系统守护进程

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

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

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


NFS服务器的配置

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

NFS的常用目录

/etc/exportsNFS服务的主要配置文件

/usr/sbin/exportfsNFS服务的管理命令

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

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

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

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

/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服务器也不检查其父目录的权限,这样可以提高效率;


NFS服务器的启动与停止

1、启动NFS服务器

为了使NFS服务器能正常工作,需要启动rpcbind和nfs两个服务,并且rpcbind一定要先于nfs启动。

# service rpcbind start

# service nfs start

2、查询NFS服务器状态

# service rpcbind status

# service nfs status

3、停止NFS服务器

要停止NFS运行时,需要先停止nfs服务再停止rpcbind服务,对于系统中有其他服务(如NIS)需要使用时,不需要停止rpcbind服务

# service nfs stop

# service rpcbind stop

4、设置NFS服务器的自动启动状态

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

# chkconfig --level 2345 rpcbind on

# chkconfig --level 2345 nfs on

实例

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

# vim /etc/exports

/home/zhangsan 192.168.115.0/24(rw)

不同网段想要挂载需要网关(ping的通)

2. 重启portmap 和nfs 服务

# service rpcbind restart

# service nfs restart

# exportfs -rv (刷新配置文件)

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

# showmount -e 本机ip

查看自己共享的服务

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

showmount -e NFS服务器IP

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

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

# mount 192.168.115.10:/home/zhangsan/ /media/zhangsan/

# mount |grep nfs

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

[root@NFS ~]#cd /media/zhangsan/
-bash: cd: /media/zhangsan/: 权限不够
[root@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安全错误 数据库的锁怎样保障安全 上海喔噻互联网科技有限公司 互联网和科技技术 科技互联网龙头 互联网科技行业发展 智能科技公司是互联网公司吗 互联网科技的英文 互联网科技小额贷款 互联网科技公司需要的职位 农村开互联网科技讲堂 青岛科技大学互联网大赛研究生 想开互联网科技公司怎么样 畅思互联网科技 世界互联网领先科技成果获奖 上海京穆互联网科技有限公司 上海钢联属于互联网科技股吗 互联网科技手机排行榜 科技互联网经济论坛 广州三三互联网科技有限公司 马化腾互联网科技教学 科技互联网公司两年变化 广州百单互联网科技有限公司 九亚互联网科技 亿账通互联网科技 广西互联网科技公司 银川新华互联网科技职业技术培训学校图片 互联网校园科技培训 卓翼科技产业互联网合作 南京一网一红互联网科技有限公司 安徽零酒互联网科技有限公司 陕西彩京云互联网科技有限公司
0