系统管理指南:网络服务

Autofs 映射

Autofs 使用三种类型的映射:

Autofs 主映射

auto_master 映射将目录与映射相关联。该映射是指定 autofs 应检查的所有映射的主列表。以下示例说明 auto_master 文件可能包含的内容。


示例 6–3 样例 /etc/auto_master 文件


# Master map for automounter 

# 

+auto_master 

/net            -hosts           -nosuid,nobrowse 

/home           auto_home        -nobrowse 

/-              auto_direct     -ro  

本示例说明在常规 auto_master 文件中额外增加了 auto_direct 映射。主映射 /etc/auto_master 中的每一行都具有以下语法:

mount-point map-name [ mount-options ]

mount-point

mount-point 是目录的全(绝对)路径名。如果目录不存在,则 autofs 将创建该目录(如果可能)。如果目录存在且不为空,则在该目录上挂载会隐藏该目录的内容。在这种情况下,autofs 将发出警告。

作为挂载点的表示法 /- 指示此特定映射是直接映射。该表示法还表示没有特定的挂载点与该映射关联。

map-name

map-name 是 autofs 用于查找位置说明或挂载信息的映射。如果名称前面有一个斜杠 (/),则 autofs 会将该名称解释为本地文件。否则,autofs 会使用在名称服务转换器配置文件 (/etc/nsswitch.conf) 中指定的搜索项来搜索挂载信息。特殊映射还可用于 /net。有关更多信息,请参见挂载点 /net

mount-options

mount-options 是可选的以逗号分隔的选项列表,其中的选项适用于挂载在映射名称中指定的项,除非映射名称中的项列出了其他选项。每种特定类型的文件系统的选项都列在该文件系统的挂载手册页中。例如,有关特定于 NFS 的挂载选项,请参见 mount_nfs(1M) 手册页。对于特定于 NFS 的挂载点,bg(后台)和 fg(前台)选项都不适用。

# 开头的行是注释。# 之后直到行尾的所有文本都将被忽略。

要将较长的行拆分为较短的行,请在行尾放置一个反斜杠 (\)。项的最大字符数为 1024。


注 –

如果在两个项中使用了同一挂载点,则 automount 命令会使用第一项。第二项将被忽略。


挂载点 /home

挂载点 /home/etc/auto_home(间接映射)中列出的项将要挂载到的目录。


注 –

缺省情况下,Autofs 可以在所有计算机上运行且支持 /net/home(自动挂载的起始目录)。这些缺省值可以被 NIS auto.master 映射或 NIS+ auto_master 表中的项覆盖,也可以被 /etc/auto_master 本地文件中的项覆盖。


挂载点 /net

Autofs 将在目录 /net 下挂载特殊映射 -hosts 中的所有项。该映射是仅使用主机数据库的内置映射。假设计算机 gumbo 位于主机数据库中,且可以导出其任何文件系统。以下命令会将当前目录更改为计算机 gumbo 的根目录。


% cd /net/gumbo

Autofs 只能挂载主机 gumbo已导出文件系统,即服务器上可供网络用户使用的那些文件系统,而不是本地磁盘上的那些文件系统。因此,gumbo 中的所有文件和目录可能都无法通过 /net/gumbo 使用。

使用 /net 访问方法时,服务器名称位于路径中,且与位置相关。如果要将导出的文件系统从一个服务器移动到另一个服务器,则该路径可能无法再正常工作。应针对所需的文件系统在映射中特别设置一项,而不应使用 /net


注 –

Autofs 仅在挂载时检查服务器的导出列表。挂载服务器的文件系统之后,在自动取消挂载该服务器的文件系统之前,autofs 不会再次检查服务器。因此,只有在取消挂载客户机上的文件系统,然后重新挂载之后,才能“看到”新导出的文件系统。


Autofs 直接映射

直接映射是自动挂载点。使用直接映射时,客户机上的挂载点与服务器上的目录之间存在直接关联。直接映射具有全路径名并显式指示这种关系。以下是典型的 /etc/auto_direct 映射:


/usr/local          -ro \

   /bin                   ivy:/export/local/sun4 \

   /share                 ivy:/export/local/share \

   /src                   ivy:/export/local/src

/usr/man            -ro   oak:/usr/man \

                          rose:/usr/man \

                          willow:/usr/man 

/usr/games          -ro   peach:/usr/games 

/usr/spool/news     -ro   pine:/usr/spool/news \

                          willow:/var/spool/news 

直接映射中的行具有以下语法:

key [ mount-options ] location

key

key 是直接映射中挂载点的路径名。

mount-options

mount-options 是要应用于此特定挂载的选项。仅在这些选项不同于映射缺省值时,才需要这些选项。每种特定类型的文件系统的选项都列在该文件系统的挂载手册页中。例如,有关特定于 CacheFS 的挂载选项,请参见 mount_cachefs(1M) 手册页。有关在不同 NFS 版本中使用 CacheFS 选项的信息,请参见使用 CacheFS 访问 NFS 文件系统

location

location 是文件系统的位置。对于 NFS 文件系统和高层 Sierra 文件系统 (High Sierra file system, HSFS),分别以 server:pathname 和 :devicename 形式指定一个或多个文件系统指定。


注 –

pathname 不应包括自动挂载的挂载点。pathname 应该为文件系统的实际绝对路径。例如,起始目录的位置应列为 server:/export/home/username,而不是 server:/home/username


与主映射一样,以 # 开头的行是注释。# 之后直到行尾的所有文本都将被忽略。要将较长的行拆分为较短的行,请在行尾放置一个反斜杠。

在所有的映射中,直接映射中的项最类似于 /etc/vfstab 中相应的项。/etc/vfstab 中可能存在如下所示的项:


dancer:/usr/local - /usr/local/tmp nfs - yes ro 

其等效的项则以如下形式出现在直接映射中:


/usr/local/tmp     -ro     dancer:/usr/local

注 –

自动挂载程序映射之间不会出现任何选项关联。添加到自动挂载程序映射中的任何选项将覆盖以前搜索到的映射中列出的所有选项。例如,auto_master 映射中包含的选项将被任何其他映射中的相应项所覆盖。


有关与此类型的映射关联的其他重要功能,请参见Autofs 如何为客户机选择最近的只读文件(多个位置)

挂载点 /-

示例 6–3 中,挂载点 /- 通知 autofs 不要将 auto_direct 中的项与任何特定挂载点关联。间接映射使用在 auto_master 文件中定义的挂载点。直接映射使用在已命名映射中指定的挂载点。请记住,在直接映射中,关键字或挂载点是全路径名。

NIS 或 NIS+ auto_master 文件只能具有一个直接映射项,因为在名称空间中挂载点必须是唯一的值。作为本地文件的 auto_master 文件可以具有任意数目的直接映射项(如果这些项不重复)。

Autofs 间接映射

间接映射使用关键字的替代值在客户机上的挂载点与服务器上的目录之间建立关联。间接映射对于访问特定文件系统(如起始目录)非常有用。auto_home 映射便是间接映射。

间接映射中的行具有以下通用语法:

key [ mount-options ] location

key

key 是间接映射中的简单名称(不含斜杠)。

mount-options

mount-options 是要应用于此特定挂载的选项。仅在这些选项不同于映射缺省值时,才需要这些选项。每种特定类型的文件系统的选项都列在该文件系统的挂载手册页中。例如,有关特定于 NFS 的挂载选项,请参见 mount_nfs(1M) 手册页。

location

location 是文件系统的位置。可以 server:pathname 形式指定一个或多个文件系统。


注 –

pathname 不应包括自动挂载的挂载点。pathname 应该为文件系统的实际绝对路径。例如,目录的位置应列为 server:/usr/local,而不要列为 server:/net/server/usr/local


与主映射一样,以 # 开头的行是注释。# 之后直到行尾的所有文本都将被忽略。要将较长的行拆分为较短的行,请在行尾放置一个反斜杠 (\)。示例 6–3 说明包含以下项的 auto_master 映射:


/home      auto_home        -nobrowse    

auto_home 是包含要在 /home 下挂载的项的间接映射的名称。典型的 auto_home 映射可能包含以下内容:


david                  willow:/export/home/david

rob                    cypress:/export/home/rob

gordon                 poplar:/export/home/gordon

rajan                  pine:/export/home/rajan

tammy                  apple:/export/home/tammy

jim                    ivy:/export/home/jim

linda    -rw,nosuid    peach:/export/home/linda

例如,假设上面的映射在主机 oak 上。假设用户 linda 在口令数据库中有一项,该项将她的起始目录指定为 /home/linda。只要 linda 登录计算机 oak,autofs 就会挂载位于计算机 peach 上的目录 /export/home/linda。她的起始目录以读写方式和 nosuid 进行挂载。

假设发生以下情况:用户 linda 的起始目录在口令数据库中列为 /home/linda。任何人(包括 Linda)都可以从使用特定主映射(引用上一个示例中的映射的主映射)设置的任何计算机访问此路径。

在上述情况下,用户 linda 可以在其中的任何一台计算机上运行 loginrlogin,并且已为她挂载了起始目录。

而且,此时 Linda 还可以键入以下命令:


% cd ~david

autofs 将为她挂载 David 的起始目录(如果允许所有权限)。


注 –

自动挂载程序映射之间不会出现任何选项关联。添加到自动挂载程序映射中的任何选项将覆盖以前搜索到的映射中列出的所有选项。例如,将使用任何其他映射中对应的项覆盖 auto_master 映射中包括的选项。


在没有名称服务的网络中,必须更改网络中所有系统上的所有相关文件(如 /etc/passwd)以允许 Linda 访问其文件。在运行 NIS 的网络中,应在 NIS 主服务器上进行更改并将相关的数据库传播到从属服务器。在运行 NIS+ 的网络中,执行更改后会自动将相关的数据库传播到从属服务器。