在Linux系统中配置NFS(Network File System)服务器是实现文件共享的常见方式,特别适合在局域网内实现多台服务器之间的文件数据共享,NFS允许客户端像访问本地文件一样访问远程服务器上的文件,简化了数据管理和维护工作,以下将详细介绍在Linux系统中配置NFS服务器的完整步骤,包括环境准备、服务安装、配置文件修改、权限设置、防火墙配置以及客户端挂载等操作。

环境准备
在开始配置NFS服务器之前,需要确保系统环境满足基本要求,服务器和客户端建议运行同一种Linux发行版,以减少兼容性问题,确保服务器和客户端之间网络连通,可以通过ping命令测试网络连通性,在客户端执行ping 服务器IP地址,确保能够正常通信,建议为NFS服务分配一个固定的静态IP地址,避免因IP变动导致客户端无法访问。
安装NFS服务
NFS服务主要由nfs-utils和rpcbind两个软件包提供,在基于Red Hat系列的系统(如CentOS、RHEL)中,可以使用yum命令安装;在基于Debian系列的系统(如Ubuntu)中,则使用apt命令,以CentOS为例,执行以下命令安装:
sudo yum install nfs-utils rpcbind -y
安装完成后,启动rpcbind和nfs服务,并设置开机自启:
sudo systemctl start rpcbind sudo systemctl start nfs-server sudo systemctl enable rpcbind sudo systemctl enable nfs-server
可以通过systemctl status nfs-server检查服务状态,确保服务已正常运行。

配置共享目录
NFS服务器的核心配置文件是/etc/exports,该文件定义了哪些目录可以被客户端访问,以及访问的权限,首先创建一个需要共享的目录,例如/data/share,并设置适当的权限:
sudo mkdir -p /data/share sudo chmod 755 /data/share sudo chown nobody:nobody /data/share
然后编辑/etc/exports文件,添加共享目录的配置,文件的基本语法为:
共享目录 客户端地址(权限选项)
客户端地址可以是具体的IP地址、IP段或主机名,权限选项用于控制访问权限,允许IP地址为168.1.0/24网段的所有客户端以读写方式访问共享目录,配置如下:
/data/share 192.168.1.0/24(rw,sync,no_root_squash)
常用权限选项说明如下表:
| 权限选项 | 说明 |
|---|---|
ro |
只读权限 |
rw |
读写权限 |
sync |
数据同步写入磁盘 |
async |
数据异步写入磁盘 |
no_root_squash |
允许root用户具有root权限 |
root_squash |
将root用户权限映射为匿名用户 |
all_squash |
将所有用户权限映射为匿名用户 |
anonuid |
指定匿名用户的UID |
anongid |
指定匿名用户的GID |
配置完成后,执行exportfs -a命令使配置立即生效,无需重启服务。

防火墙与SELinux配置
为了确保客户端能够正常访问NFS共享目录,需要配置防火墙和SELinux,在防火墙中开放NFS相关端口,CentOS 7及以上版本使用firewalld,执行以下命令:
sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --permanent --add-service=rpc-bind sudo firewall-cmd --permanent --add-service=mountd sudo firewall-cmd --reload
如果使用的是iptables,则需要开放2049(NFS)、111(rpcbind)、20048(mountd)等端口,SELinux可能会阻止NFS服务访问共享目录,可以临时关闭SELinux进行测试(setenforce 0),或通过semanage工具为共享目录设置正确的安全上下文:
sudo semanage fcontext -a -t public_content_t "/data/share(/.*)?" sudo restorecon -Rv /data/share
客户端挂载NFS共享目录
在客户端安装NFS客户端工具(nfs-utils或nfs-common),然后使用mount命令挂载共享目录,将服务器上的/data/share挂载到客户端的/mnt/nfs:
sudo mkdir -p /mnt/nfs sudo mount 192.168.1.100:/data/share /mnt/nfs
挂载后,可以通过df -h查看挂载状态,或进入/mnt/nfs目录测试文件读写权限,如果希望开机自动挂载,可以编辑/etc/fstab文件,添加以下行:
168.1.100:/data/share /mnt/nfs nfs defaults 0 0
注意:defaults选项包含rw、suid、dev、exec、auto、nouser、async等参数,可根据实际需求调整。
相关问答FAQs
问题1:如何解决NFS客户端挂载时出现“Permission denied”错误?
解答:该错误通常由权限问题引起,首先检查/etc/exports配置中的no_root_squash选项是否正确设置;其次确认共享目录的权限是否为755,所有者是否为nobody;最后检查SELinux是否拦截,可通过setenforce 0临时关闭SELinux测试,或使用semanage调整安全上下文。
问题2:NFS共享目录在客户端显示文件内容异常或乱码,如何解决?
解答:这可能是由于字符编码不一致导致的,确保服务器和客户端的locale设置相同,可以通过locale命令检查当前设置,并在/etc/environment或~/.bashrc中统一设置LANG和LC_*变量,添加LANG=en_US.UTF-8确保使用UTF-8编码。
