15.6. 挂载远程 NetWare 卷

IPX 通常用于在 Linux 文件系统中挂载 NetWare 卷。 这样可以在其他操作系统和 Linux 之间实现基于文件的数据共享。 Volker Lendecke 为 Linux 开发了 NCP 客户端和一套相关的工具,从而使数据共享成为可能。

在 NFS 环境中,我们会使用 Linux 的 mount 命令来挂载远程文件系统。 不幸的是,NCP 文件系统有其独特的要求,使其无法构建到正常的 mount 中。 Linux 提供了一个 ncpmount 命令,我们将改用它。 ncpmount 命令是 Volker 的ncpfs软件包中的工具之一,该软件包在大多数现代发行版中都以预打包形式提供,也可以从 ftp.gwdg.de/pub/linux/misc/ncpfs/目录中获取源代码。 在撰写本文时,当前版本为 2.2.0。

在挂载远程 NetWare 卷之前,必须确保正确配置了 IPX 网络接口(如前所述)。 接下来,您必须知道要在其上挂载的 NetWare 服务器的登录详细信息; 这包括用户 ID 和密码。 最后,您需要知道要挂载哪个卷以及要将其挂载到哪个本地目录下。

15.6.1. 一个简单的 ncpmount 示例

ncpmount 的一个简单示例如下所示
# ncpmount -S ALES_F1 -U rick -P d00-b-gud /mnt/brewery
此命令将ALES_F1文件服务器的所有卷挂载到/mnt/brewery目录下,使用 NetWare 登录名rick和密码d00-b-gud.

ncpmount 命令通常设置为 setuid root,因此任何 Linux 用户都可以使用它。 默认情况下,该用户拥有连接,只有他或 root 用户才能卸载它。

NetWare 体现了 的概念,这类似于 Linux 中的文件系统。 NetWare 卷是 NetWare 文件系统的逻辑表示,它可能是一个单独的磁盘分区,也可能分布在多个分区上。 默认情况下,Linux NCPFS 支持将卷视为由整个文件服务器表示的较大逻辑文件系统的子目录。ncpmount 命令使已挂载文件服务器的每个 NetWare 卷都显示为挂载点下的子目录。 如果您想要访问整个服务器,这很方便,但是由于复杂的技术原因,如果您希望这样做,您将无法使用 NFS 重新导出这些目录。 我们稍后将讨论一种更复杂的替代方案,它可以解决这个问题。

15.6.2. ncpmount 命令的详细说明

ncpmount 有大量的命令行选项,允许您在管理 NCP 挂载时具有相当大的灵活性。 其中最重要的是在 表 15-2 中描述。

表 15-2. ncpmount 命令参数

参数描述

–Sserver

要挂载的文件服务器的名称。

–Uuser_name

登录到文件服务器时要使用的 NetWare 用户 ID。

–Ppassword

用于 NetWare 登录的密码。

–n

对于没有关联密码的 NetWare 登录名,必须使用此选项。

–C

此参数禁用密码自动转换为大写。

–cclient_name

此选项允许您指定谁拥有与文件服务器的连接。 这对于 NetWare 打印很有用,我们稍后将更详细地讨论它。

–uuid

应显示为挂载目录中文件所有者的 Linux 用户 ID。 如果未指定,则默认为调用 ncpmount 命令的用户的用户 ID。

–ggid

应显示为挂载目录中文件所有者的 Linux 组 ID。 如果未指定,则默认为调用 ncpmount 命令的用户的组 ID。

–ffile_mode

此选项允许您指定挂载目录中文件应具有的文件模式(权限)。 该值应以八进制指定,例如,0664. 您实际拥有的权限是使用此选项指定的文件模式权限,该权限使用您的 NetWare 登录 ID 对文件服务器上的文件拥有的权限进行屏蔽。 您必须在服务器上具有权限,并且具有此选项指定的权限才能访问文件。 默认值从当前的umask.

–ddir_mode

此选项允许您指定挂载目录中的目录权限。 它的行为方式与 –f 选项相同,不同之处在于默认权限是从当前的umask. 在授予读取访问权限的地方授予执行权限。

–Vvolume

此选项允许您指定要挂载在挂载点下的单个 NetWare 卷的名称,而不是挂载目标服务器的所有卷。 如果您希望使用 NFS 重新导出已挂载的 NetWare 卷,则此选项是必需的。

–ttime_out

此选项允许您指定 NCPFS 客户端将等待服务器响应的时间。 默认值为 60 毫秒,超时以百分之一秒为单位指定。 如果您的 NCP 挂载遇到任何稳定性问题,您应该尝试增加此值。

–rretry_count

NCP 客户端代码会尝试多次将数据报重新发送到服务器,然后才确定连接已断开。 此选项允许您将重试计数从默认值 5 更改。

15.6.3. 隐藏您的 NetWare 登录密码

将密码放在命令行上存在一定的安全风险,就像我们使用 ncpmount 命令一样。 如果其他活动的并发用户碰巧运行了诸如 topps 之类的程序,他们可能会看到密码。 为了降低其他人看到和窃取 NetWare 登录密码的风险,ncpmount 能够从用户主目录中的文件中读取某些详细信息。 在此文件中,用户保留与他或她打算挂载的每个文件服务器关联的登录名和密码。 该文件名为~/.nwclient并且必须具有0600权限,以确保其他人无法读取它。 如果权限不正确,ncpmount 命令将拒绝使用它。

该文件具有非常简单的语法。 任何以 # 字符开头的行都将被视为注释并被忽略。 其余行的语法如下
fileserver/userid password
fileserver是支持您要挂载的卷的文件服务器的名称。 该userid是您在该服务器上的帐户的登录名。 该password字段是可选的。 如果未提供,ncpmount 命令会在用户尝试挂载时提示用户输入密码。 如果password字段指定为 – 字符,则不使用密码; 这相当于–n命令行参数。

您可以提供任意数量的条目,但 fileserver 字段必须唯一。 第一个 fileserver 条目具有特殊的意义。 ncpmount 命令使用–S命令行参数来确定要使用的条目。~/.nwclient如果未使用–S参数指定服务器,则假定第一个服务器条目是~/.nwclient,并将其视为您的首选服务器。 您应该将您最常挂载的文件服务器放在文件中的第一个位置。

15.6.4. 一个更复杂的 ncpmount 示例

让我们看一个更复杂的 ncpmount 示例,其中涉及我们描述的许多功能。 首先,让我们构建一个简单的~/.nwclient文件
# NetWare login details for the Virtual Brewery and Winery
#
# Brewery Login
ALES_F1/MATT staoic1
#
# Winery Login
REDS01/MATT staoic1
#
确保其权限正确
$ chmod 600 ~/.nwclient

让我们将 Winery 服务器的一个卷挂载在共享目录的子目录下,指定文件和目录权限,以便其他人可以从那里共享数据
$ ncpmount -S REDS01 -V RESEARCH -f 0664 -d 0775 /usr/share/winery/data/
此命令与~/.nwclient显示的文件结合使用,会将RESEARCH卷从REDS01服务器挂载到/usr/share/winery/data/目录,使用 NetWare 登录 IDMATT以及从~/.nwclient文件检索的密码。 挂载文件的权限为0664,目录权限为0775.