Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
8.6. 配置 NFS 服务器
在 NFS 服务器中配置导出的方法有两种:
- 手动编辑 NFS 配置文件,即
/etc/exports
,以及 - 通过命令行,即使用 exportfs命令
8.6.1. /etc/exports
配置文件
/etc/exports
文件控制将哪些文件系统导出到远程主机并指定选项。它遵循以下语法规则:
- 空白行将被忽略。
- 要添加注释,以井号(#)开始一行。
- 您可以使用反斜杠(\)换行长行。
- 每个导出的文件系统都应该独立。
- 所有在导出的文件系统后放置的授权主机列表都必须用空格分开。
- 每个主机的选项必须在主机标识符后直接放在括号中,没有空格分离主机和第一个括号。
导出的文件系统的每个条目都有以下结构:
export host(options)
上述结构使用以下变量:
- export
- 导出的目录
- host
- 导出要共享的主机或网络
- 选项
- 用于 主机的选项
可以指定多个主机,以及每个主机的特定选项。要做到这一点,将它们列在与空格分隔列表相同的行中,每个主机名后跟其对应选项(在括号中),如下所示:
export host1(options1) host2(options2) host3(options3)
有关指定主机名的不同方法的详情请参考 第 8.6.5 节 “主机名格式”。
在最简单的形式中,
/etc/exports
文件只指定导出的目录和允许访问它的主机,如下例所示:
例 8.6. /etc/exports
文件
/exported/directory bob.example.com
在这里,
bob.example.com
可以从 NFS 服务器挂载 /exported/directory/
。因为在这个示例中没有指定选项,所以 NFS 使用 默认设置。
默认设置为:
- ro
- 导出的文件系统是只读的。远程主机无法更改文件系统中共享的数据。要允许主机更改文件系统(即读取和写入),请指定
rw
选项。 - sync
- 在将之前的请求所做的更改写入磁盘前,NFS 服务器不会回复请求。要启用异步写入,请指定
async
选项。 - wdelay
- 如果 NFS 服务器预期另外一个写入请求即将发生,则 NFS 服务器会延迟写入磁盘。这可以提高性能,因为它可减少单独的写入命令访问磁盘的次数,从而减少写入开销。要禁用此功能,请指定
no_wdelay
。只有指定了默认同步
选项时,no_wdelay
才可用。 - root_squash
- 这会阻止 远程 连接的 root 用户(而不是本地用户)具有 root 权限;而 NFS 服务器会为他们分配用户 ID
nfsnobody
。这会有效地将远程 root 用户的功能"检查"到最低的本地用户,从而防止在远程服务器上可能的未授权写入。要禁用 root squashing,请指定no_root_squash
。
要对所有远程用户(包括 root 用户)进行压缩,请使用
all_squash
:要指定 NFS 服务器应该分配给特定主机的远程用户的用户和组 ID,请分别使用 anonuid
和 a ongid
选项,如下方所示:
export host(anonuid=uid,anongid=gid)
在这里,uid 和 gid 分别是用户 ID 编号和组 ID 号。a
onuid
和 a ongid
选项允许您为远程 NFS 用户创建特殊的用户和组帐户。
默认情况下,Red Hat Enterprise Linux 下 NFS 支持 访问控制列表 (ACL)。要禁用此功能,请在导出文件系统时指定 no_acl 选项。
每个导出的文件系统的默认值都必须被显式覆盖。例如,如果没有指定
rw
选项,则导出的文件系统将共享为只读。以下是 /etc/exports
中覆盖两个默认选项的示例行:
/another/exported/directory 192.168.0.3(rw,async)
在此示例中,192 .168.0.3 可以挂载
/another/exported/directory/
读取和写入,并且所有写入磁盘都是异步的。有关导出选项的更多信息,请参阅 man exportfs。
其他选项在未指定默认值的情况下可用。这包括禁用子树检查、允许来自不安全端口的访问以及允许不安全的文件锁定(对于某些早期 NFS 客户端实施是必需的)。有关这些使用较少的选项的更多信息,请参阅 man export。
重要
/etc/exports
文件的格式非常精确,特别是空格字符的使用方面。需要将导出的文件系统与主机、不同主机间使用空格分隔。但是,除了注释行外,文件中不应该包括其他空格。
例如,下面两行并不具有相同的意义:
/home bob.example.com(rw) /home bob.example.com (rw)
第一行只允许来自
bob.example.com
的用户对 /home
目录进行读写访问。第二行允许来自 bob.example.com
的用户以只读方式挂载目录(默认),而其他世界中的用户可以将其挂载为读/写。