exportfs 命令

用途

导出和不导出目录到 NFS 客户机。

语法

/usr/sbin/exportfs [ -a ] [ -v ] [ -u ] [ -i ] [ -f文件 ] [ -F ] [ -o选项 [ ,选项 ... ] ] [ -V 导出版本] [ 目录 ]

描述

exportfs 命令使得本地目录可以为网络文件系统 (NFS) 客户机安装。 此命令通常由 /etc/rc.nfs文件在系统启动期间调用,并使用 /etc/exports 文件中的信息来导出一个或多个目录,必须使用完整路径名指定这些目录。

/etc/xtab 文件列示了当前导出的目录。 要想显示此文件,请输入不带标志和参数的 exportfs 命令。 要想更改文件或者更改它的一个目录中的特征的话,root 用户可以编辑 /etc/exports 文件并运行 exportfs 命令。 这种更改可以在任何时间完成。 永远都不要直接去编辑 /etc/xtab 文件。

注意:
  1. 您不能导出位于同一文件系统内的当前导出目录的父目录或子目录。
  2. NFS V2 和 V3 允许既导出目录又导出文件。 NFS V4 访问只能导出目录。
  3. 如果带有不同版本 2(或 3)和 4 的同一目录下的两个条目存在于 /etc/exports 文件中,那么 exportfs 命令将同时导出两个条目。
  4. 如果 NFS 版本 2 (或 3) 和 4 的选项对于目录相同,那么在 /etc/exports 文件中可以有一个条目指定-vers=3:4.

标志

描述
导出所有的列在导出文件中的目录。
-v 按照是导出还是不导出,打印每个目录的名称。
-U 不导出您指定的目录。 当结合 -a 标志使用时,取消导出所有导出的目录。 当同时结合 -a-f 标志使用时,撤销导出指定导出文件中的所有目录。
-一 允许没有在导出文件中指定的目录的导出,或者忽略在导出文件中的选项。 除非用到 -f 标志来指定一个可更替的文件,exportfs 命令通常将向 /etc/exports 文件查询来获得与要导出的目录的相关选项。
-f 文件 指定一个导出文件,而不是 /etc/exports 文件,该文件包含了一个您可以导出的目录的列表。 此文件应该遵守 /etc/exports 文件相同的格式。 注:此可更替的文件将不会在系统和 NFS 启动的时候用来自动导出目录。 /etc/exports 文件是支持在系统启动时指定导出目录的唯一的文件。
-F 指定应该执行强制的取消导出。 仅将此标志与 -u 标志一起使用。 在取消导出 V2/V3 导出时,该标志不起作用。 V4 取消导出可能由于关联的状态而失败。 该标志强制释放与 V4 导出相关联的任何状态。
-o选项 为要导出的目录指定可选的特征。 您可以输入多个变量,中间用逗号隔开。 对于采用了 Client 参数的选项, Client 可以指定主机名、点分式 IP 地址、网络名或子网标识。 子网标识具有 "@ host/mask" 格式,其中 host 是 主机名或点分式 IP 地址,mask 指定了 当检查访问时使用的位数。 如果不指定 mask ,那么使用完整的掩码。 例如,标志符 @client.group.company.com/16 将与 company.com 子网上的所有客户机匹配。 @client.group.company.com/24 的标识将 仅匹配 group.company.com 子网上的客户机。 从下面选项中选择:
ro
用只读许可方式导出目录。 如果不指定,那么目录以读写许可权导出。
行 =客户机 [:Client]
将目录以只读许可权导出至指定的客户机。 将目录以只读许可权导出至未在列表中指定的客户机。 如果已经指定了一个读写列表的话,那么无法指定一个只读列表。
rw
将目录以读写许可权导出至所有客户机。
rw=客户机 [:Client]
将目录以读写许可权导出至指定的客户机。 将目录以只读方式导出至不在列表中的客户机。 如果已经指定了一个只读列表,那么无法指定一个读写列表。
Anon =UID
如果请求来自于 root 用户的话,用 UID 值作为有效的用户 ID。

该选项的缺省值为 -2。 在 NFS V2 和 NFS V3 中,将 anon 选项的值设置为 -1 将禁用匿名访问。 这样,在缺省情况下,安全 NFS 作为匿名接受非安全的要求,并且要求更多安全性的用户可以禁止此功能,通过将 anon 设置成值为 -1。

根 =客户机 [:Client]
允许从列表中的指定客户机进行根访问。 将主机放到根列表中不会覆盖其他选项的语义。 例如,该选项拒绝来自根列表中主机的安装访问,而不是拒绝访问列表中主机的访问。
访问 =客户机 [: 客户机, ...]
给每个列示的客户机提供安装访问。 客户机可以是主机名也可以是网络组名。 列表中的每个客户机首先要在 /etc/netgroup 数据库进行检查,然后在 /etc/hosts 数据库中检查。 缺省值允许任何机器安装给定的目录。
secure
当访问目录的时候,需要客户机使用更安全的协议。
-o Options (continued)
秒 =flavor [:flavor ...]

该选项用于指定一系列可能用于访问导出目录下的文件的安全方法。 大多数 exportfs 选项可以使用 sec 选项进行集群。 假定 sec 选项后面的选项属于前面的 sec 选项。 可以指定任意数目的 sec 节,但每个安全方法只能指定一次。 在每个 sec 节中,可以指定 rorwrootaccess 选项一次。 对于导出,仅将 publicanonvers 选项视为全局选项。 如果 sec 选项用于指定任何安全方法,那么必须使用该选项来指定所有安全方法。 在没有任何 sec 选项的情况下,允许所有认证类型模板。

允许的衍生系统值是:
sys
UNIX 认证。 这是缺省方法。
dh
DES 认证。
如果安装请求使用导出中未指定的认证风格,那么允许安装请求继续匿名凭证。
krb5
Kerberos. 仅限于认证。
krb5i
Kerberos. 认证和集成。
krb5p
Kerberos. 认证、集成和隐私。
可以指定 secure 选项,但不能与 sec 选项结合使用。 不推荐使用 secure 选项,可能会将其消除。 请改为使用 sec=dh
版本 =version_number [:version_number ...]
指定允许哪些版本的 NFS 访问导出的目录。 有效版本为 2、3 和 4。 无法单独选择 V2 和 V3。 指定 V2 或 V3 将使 NFS V2 和 NFS V3 都能够访问。 可以单独选择 V4。 缺省值为允许使用 NFS 协议 V2 和 V3 进行访问。
名称 =外部名
用指定外部名导出目录。 外部名称必须以 nfsroot 名称开头。 请参阅 /etc/exports 文件的描述以获取 nfsroot 名称的描述。 该选项仅用于导出以供 NFS V4 协议访问的目录。
deleg={yes | no}
启用或禁用对指定导出的文件授权。 该选项覆盖系统范围的、对该导出的授权支持。 系统范围的支持是通过 nfso 完成的。
-o Options (continued)
引用 =rootpath@host[+host] [:rootpath@host[+host]]
将在指定路径创建名称空间引用。 该引用将客户引导至可以继续操作的指定备用位置。 引用是一种特殊的对象。 如果在指定路径存在非引用对象,那么禁止导出,并显示错误消息。 如果指定路径不存在任何对象,那么在该位置创建一个引用对象(其中包含指向对象本身的路径名目录)。 可以在文件系统中创建多个参照。 不能为 nfsroot指定引荐。 名称 localhost 不能用作 hostname。 仅允许将此 refer 选项用于 V 4 导出。 如果导出规范允许 V2 或 V3 访问,那么会显示错误消息并禁止导出。 不导出参照对象会影响从参照对象除去参照位置信息。 不导出不会除去对象本身。 如果要除去该对象,请使用 rm 。 管理员必须确保在参照服务器上提供相应的数据。 此选项仅在 带有 5300-03 建议维护包的 AIX 5L 版本 5.3 或更高版本上可用。
注: 仅当在服务器上启用了复制时,才能进行引荐导出。 使用 chnfs -R on 来启用复制。
-o Options (continued)
replicas=rootpath@host[+host] [:rootpath@host[+host]]
副本位置信息将与导出路径关联。 如果当前服务器变为不可用,NFS V4 客户机可以使用副本信息将操作重定向至指定的另一个位置。 管理员应该确保在副本服务器上提供相应的数据。 因为副本信息适用于整个文件系统,所以指定的路径必须是文件系统的根目录。 如果路径不是文件系统的根目录,将禁止导出并打印一条错误消息。 名称 localhost 不能用作 hostname。 此 replicas 选项仅对 V 4 导出有意义。 如果在允许 V2 或 V3 的导出上使用该选项,该选项是允许的,但 V2 或 V3 服务器将忽略副本信息。 如果导出的目录不是副本列表中,条目 exported directory@current host 将被作为第一个副本位置添加。 该选项仅适用于 "AIX"5.3",带 5300-03或更高版本。 只有在服务器上启用复制时才能进行副本导出。 在缺省情况下,复制未启用。 如果将在系统引导时进行副本导出,那么应使用 chnfs -R on 命令来启用复制。 还可以为 nfsroot指定副本位置。 只能使用 chnfs -R 主机[+主机] 来完成此操作。 如果在列表中未指定当前主机,它将被作为第一个副本主机添加。 在这种情况下,不需要或不允许使用 rootpath ,因为 nfsroot 仅复制到指定主机的 nfsrootschnfs 程序可用于启用或禁用复制。 只有在没有 NFS V4 导出活动时才能更改复制方式。 如果更改了服务器复制方式,那么服务器将不执行在处于先前的复制方式期间服务器发出的文件句柄。 这可能导致在保留旧的文件句柄的客户机上发生应用程序错误。 更改服务器复制方式时请小心。 如果可能,所有挂装到服务器的客户机都应该在更改服务器复制方式之前卸装。 可以通过修改副本列表并重新导出目录,更改与该目录关联的副本位置信息。 新的副本信息将替换旧的副本信息。 预期 NFS 客户机将在常规基础上刷新副本信息。 如果服务器更改用于导出的副本信息,可能需要时间来引起客户机的注意。 如果添加了新的副本位置,那么这就不成问题,这是因为保留旧信息的客户机仍然拥有正确的(如果不完全)副本信息。 除去副本信息可能会有问题,这是因为它可能导致客户机在一段时间内保留不正确的副本信息。 为了帮助客户机检测新信息, exportfs 将尝试触摸复制的目录。 这将更改目录上的时间戳记,反过来将导致客户机重新获取该目录的属性。 然而,如果被复制的文件系统是只读的,那么此操作也许就不可能了。 当更改某个目录的副本信息时,要明白可能在更改信息到客户机注意到新的信息之间有一段等待时间。
-o Options (continued)
noauto
“按现状”接受副本规范。 如果尚未指定主要主机名,那么不要自动将其作为一个副本位置插入。
scatter
定义如何从 referreplicas 选项上指定的服务器中生成备选位置列表。 如果未使用 noauto 选项,备选位置列表还将包含某个副本位置的主要主机名。 scatter 选项仅应用于供 NFS V4 协议访问的导出目录。 scatter 选项有三个有效值:
完整
分散所有服务器以形成备用位置组合。
部分
所有组合的第一个位置固定为 referreplicas 选项中指定的第一个服务器。 其余的位置和第一个位置是分散的,就好像它们是使用scatter=full方法。
不使用分散。 如果之前已经启用,那么此值也可用于禁用散射。

无论何时客户机属性发生更改,所有包含该客户机作为参数的导出条目应该再次导出。 可以更改客户机属性的事件包括修改网组或更改客户机的 IP 地址。 更改失败会导致服务器使用原有的客户机信息。

-V Exported Version 指定版本号。 有效版本号为 2、3 和 4。

Solaris 兼容性

exportfs 命令可能被调用为 shareshareallunshareunshareall。 当 exportfs 命令作为 shareshareall 调用时,功能分别等同于 exportfsexportfs -a,除非必须使用 sec 选项指定安全方法。 当 exportfs 命令作为 unshare unshareall 调用时,功能分别等同于 exportfs -uexportfs -u -a

安全性

RBAC 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关授权和权限的更多信息,请参阅安全中的特权命令数据库。 有关该命令的权限和授权列表,请参阅 "lssecattr命令或 "getcmdattr子命令。

示例

  1. 要导出 /etc/exports 文件中的全部目录,请输入:
    exportfs -a 
  2. 要从 /etc/exports 文件导出一个目录,请输入:
    exportfs /home/notes
    在此示例中,/home/notes目录已导出。
    注: 要使此命令起作用,必须在 /etc/exports 文件中指定 /home/notes 目录。
  3. 要取消导出目录,请输入:
    exportfs -u /home/notes

    在此示例中,/home/notes目录已取消导出。

  4. 要显示当前正在导出的目录,请输入:
    exportfs -v
  5. 要导出不是在 /etc/exports 文件中指定的目录,请输入:
    exportfs -i /home/zeus

    在此示例中,/home/zeus没有限制地导出目录。

  6. 要导出一个目录并为网组成员提供访问该目录的许可权,请输入:
    exportfs access=cowboys:oilers /home/notes -o 

    在此示例中,/home/notes目录已导出,并允许用户cowboysoilers要具有访问权的主机。

  7. 要从 /etc/exports 文件导出带不同选项的目录,请输入:
    exportfs -i -o root=zorro:silver /directory

    在此示例中,/directory目录已导出,并允许 root 用户访问zorrosilver主机,而不考虑 /etc/exports 文件中指定的访问许可权。

  8. 要使用 Kerberos 认证将具有写许可权的 /common/docs 目录导出到客户机,但使用 UNIX 认证将只读许可权导出到客户机,请将以下文本添加到 /etc/exports 文件:
    /common/docs -sec=krb5,rw,sec=sys,ro

    然后输入 exportfs /common/docs 执行导出。

  9. 要在 /usr/info 上创建对主机 infoserver上的 /usr/info 目录的引用,请将以下行添加到 /etc/exports ,然后导出 /usr/info:
    /usr/info -vers=4,refer=/usr/info@infoserver
    
  10. 要在主机 backup1backup2上指定 /common/info 目录的副本,请将以下行添加到 /etc/exports ,然后导出 /common/info:
    /common/info -vers=4,replicas=/common/info@backup1:/common/info@backup2,<other options>
    
  11. 要使用版本 3 和版本 4 导出 /common/docs 目录,请输入以下命令:
    exportfs -V 3:4 /common/docs
  12. 要导出 /etc/exports 文件中的所有版本 4 的条目,请输入以下命令:
    exportfs -a -V 4
  13. 要仅取消导出版本 3 的 /common/docs 目录,请输入以下命令:
    exportfs -u -V 3 /common/docs
  14. 要取取消导出 /etc/xtab 文件中的所有版本 3 的条目,请输入以下命令:
    exportfs -ua -V 3
  15. 要在名为 /common/docs 的主机上指定目录的引荐,请执行以下操作:s1,s2s3并将它们完全分散,将以下行添加到 /etc/exports 文件,然后导出 /common/docs 目录:
    /common/docs -vers=4,refer=/common/docs@s1:/common/docs@s2:/common/docs@s3,scatter=full
  16. 要在指定的主机上为 /common/docs 目录指定副本,请执行以下操作:s1,s2,s3s4并将其部分分散 (第一个故障转移服务器是s1对于所有组合) ,将以下行添加到 /etc/exports 文件,然后导出 /common/docs 目录:
    /common/docs -vers=4,noauto,replicas=/common/docs@s1:/common/docs@s2:/common/docs@s3:/common/docs@s4,scatter=partial

文件

描述
/etc/exports 列出服务器可以导出的目录。
/etc/xtab 列出当前导出目录。
/etc/hosts 包含在网络上的每个主机的一个条目。
/etc/netgroup 包含网络上每个用户组的信息。
/etc/rc.nfs 包含 NFS 和 NIS 守护程序的启动脚本。