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 和密码。 最后,您需要知道要挂载哪个卷以及要将其挂载到哪个本地目录下。
ncpmount 的一个简单示例如下所示
# ncpmount -S ALES_F1 -U rick -P d00-b-gud /mnt/brewery |
ncpmount 命令通常设置为 setuid root,因此任何 Linux 用户都可以使用它。 默认情况下,该用户拥有连接,只有他或 root 用户才能卸载它。
NetWare 体现了 卷 的概念,这类似于 Linux 中的文件系统。 NetWare 卷是 NetWare 文件系统的逻辑表示,它可能是一个单独的磁盘分区,也可能分布在多个分区上。 默认情况下,Linux NCPFS 支持将卷视为由整个文件服务器表示的较大逻辑文件系统的子目录。ncpmount 命令使已挂载文件服务器的每个 NetWare 卷都显示为挂载点下的子目录。 如果您想要访问整个服务器,这很方便,但是由于复杂的技术原因,如果您希望这样做,您将无法使用 NFS 重新导出这些目录。 我们稍后将讨论一种更复杂的替代方案,它可以解决这个问题。
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 更改。 |
将密码放在命令行上存在一定的安全风险,就像我们使用 ncpmount 命令一样。 如果其他活动的并发用户碰巧运行了诸如 top 或 ps 之类的程序,他们可能会看到密码。 为了降低其他人看到和窃取 NetWare 登录密码的风险,ncpmount 能够从用户主目录中的文件中读取某些详细信息。 在此文件中,用户保留与他或她打算挂载的每个文件服务器关联的登录名和密码。 该文件名为~/.nwclient并且必须具有0600权限,以确保其他人无法读取它。 如果权限不正确,ncpmount 命令将拒绝使用它。
该文件具有非常简单的语法。 任何以 # 字符开头的行都将被视为注释并被忽略。 其余行的语法如下
fileserver/userid password |
您可以提供任意数量的条目,但 fileserver 字段必须唯一。 第一个 fileserver 条目具有特殊的意义。 ncpmount 命令使用–S命令行参数来确定要使用的条目。~/.nwclient如果未使用–S参数指定服务器,则假定第一个服务器条目是~/.nwclient,并将其视为您的首选服务器。 您应该将您最常挂载的文件服务器放在文件中的第一个位置。
让我们看一个更复杂的 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/ |