ncpfs—Linux 的 Novell Netware 连接性
今天的网络正变得日益复杂和多样化。系统管理员经常被迫面对由多种操作系统,甚至多种通信协议组成的网络。不足为奇的是,Linux 平台成功地适应了这些严苛的条件。Linux 支持非常广泛的网络协议,并且存在可以连接到几乎任何网络服务器的软件,甚至可以成为非 Unix 客户端的服务器。Samba 为 Windows 3.11/95/NT 网络提供客户端/服务器功能,Netatalk 负责 Macintosh 的 Appletalk,在本文中,我将讨论另一个程序,该程序允许任何 Linux 机器成为功能齐全的 Novell 客户端。
Novell 网络是世界上最流行的网络之一。因此,出现一些与 Novell 服务器交互的方式也就不足为奇了。一个典型的 Novell 网络由一台 Novell 服务器(通常专用于 Novell 运行)和许多客户端(PC 通常运行 DOS/Windows)组成。与 NFS Unix 网络不同,Novell 服务器(通常运行特殊的操作系统)和客户端(通常运行带有 Novell 驱动程序的 DOS/Windows)之间存在很大的软件差异。虽然存在商业产品可以实现 Novell 和 Unix 系统之间的交互,但 ncpfs 提供了一种强大、简单且免费的方式来实现此目的。
ncpfs 是由 Volker Lendecke (lendecke@namu01.Num.Math.Uni-Goettingen.de) 创建和维护的一套程序,可让您以各种方式访问 Novell 服务器。Novell 服务器提供的主要服务是其文件。Novell 服务器拥有多个卷,每个卷通常对应于硬盘驱动器或 CD-ROM。ncpfs 让您可以轻松挂载 Novell 服务器——用于挂载服务器的目录将包含一个目录,其中包含该服务器上可访问的每个卷,而在这些目录中将是实际的目录和文件。请注意,Novell 服务器允许您仅查看您有权查看的内容。
从以下位置获取最新版本的 ncpfs:ftp.gwdg.de:/pub/linux/misc/ncpfs 或:sunsite.unc.edu:/pub/Linux/system/Filesystems/ncpfs。解压它,并通过键入 make 和 make install 来编译工具。如果您有任何问题,请查阅 README 文件。
ncpfs 利用 NCP(Novell 核心协议)协议,该协议位于 IPX(互联网分组交换)之上。首先,确保内核(或作为可加载模块)中提供 IPX 支持。然后,您必须配置 IPX 接口。ncpfs 附带了 Linux IPX 工具,可让您创建 IPX 接口和路由,有点像 ifconfig 和 route。配置 IPX 系统最简单的方法是执行以下操作
ipx_configure --auto_interface=on \ --auto_primary=on
这尝试自动确定有关您接口的所有信息,并将其设置为主要接口。如果这不起作用,您将必须尝试手动配置。有关更多信息,请查阅 ipx_configure、ipx_interface、ipx_internal_net 和 ipx_route 的手册页。现在您已准备好运行 ncpfs 实用程序。
所有 ncpfs 工具的工作方式都类似。由于每个操作都需要访问 Novell 服务器,因此几乎每个命令执行都需要提供三件事:服务器名称、用户名和密码。有两种方法可以做到这一点
使用命令行参数:<command> -S <server name> -U <user name> -P <password>。这通常是一种繁琐的方法,因为每个命令都需要向其馈送这三个开关。
文件 ~/.nwclient 可能包含有关服务器的信息。每行可能包含以下语法的信息:<server_name>/<user_name> <password>
如果您指定 -S 命令行参数,程序将自动从此文件的相应行获取用户名和密码。否则,它将使用第一行。
为了直奔主题,要挂载 Novell 服务器,只需键入
ncpmount <mount_point>
再次,添加服务器、用户和密码的开关,或使用 ~/.nwclient。
您的挂载点将包含每个卷的目录,其中包含 Novell 服务器中的实际文件。ncpmount 还提供了许多选项来控制挂载,例如文件层次结构的 UID 和 GID。有关更多详细信息,请查阅 ncpmount.8。请注意,可以从同一台计算机多次挂载 Novell 服务器。另请注意,ncpmount 和 ncpumount 不必是 setuid,这使任何普通用户都可以在 Novell 服务器上挂载他们的帐户,从而为 ncpfs 在现实世界中的应用开辟了更多可能性。例如,要访问 Novell 服务器 MYSERV 上的卷 SYS 上的文件 \LOGIN\LOGIN.EXE,在 /mnt 上,作为用户 supervisor,密码为 12345(希望没有太多这样的密码),请执行
ncpmount -S MYSERV -U supervisor -P 12345 /mnt
或在 ~/.nwclient 中包含以下行
MYSERV/supervisor 12345并执行
ncpmount /mnt挂载 Novell 服务器后,文件 LOGIN.EXE 将表示为 /mnt/sys/login/login.exe。
要打印到 Novell 服务器,只需执行
nprint -q <queue_name> <file>
这将联系服务器上指定的打印队列,并将 <file> 作为打印作业发送到该队列。有关更多详细信息,请参阅 nprint.1。请注意,ncpfs 还提供打印服务器,允许 Linux 连接到 Novell 服务器的队列并将作业传输到 Linux 打印系统;有关更多信息,请参阅 pserver.1。
ncpfs 提供的另一项重要功能是直接访问绑定目录。绑定目录是 Novell 服务器保存有关用户、组以及几乎所有其他信息的数据库。不幸的是,通常只能使用 Novell 提供的工具访问绑定目录。虽然这些工具通常非常生动且用户友好,但当涉及到操作数百个用户和组时,它们的功能并不强大。在 Unix 中,通过提供对数据库的直接访问(例如 /etc/passwd)并使用 sed、awk 和 perl 等通用工具来解决此问题。ncpfs 提供了访问和修改绑定目录的工具,使精通技术的系统管理员可以编写灵活的 shell 脚本来修改 Novell 服务器的绑定目录。因此,例如,如果您希望更改每个用户的名称,使第三个字母为 x,您可以轻松地做到这一点。这种能力意味着,即使您不需要从 Linux 机器访问 Novell 服务器,您仍然可以出于管理目的找到 ncpfs 的用途。
工具 nwbocreate、nwbols、nwboprops 和 nwborm 允许您操作绑定目录对象(例如用户、组、打印队列等);工具 nwbpadd、nwbpcreate、nwbprm、nwbpset 和 nwbpvalue 将更改对象的属性。这些基本功能程序为 Linux 上的 Novell 管理实用程序开辟了无限的可能性,甚至比 DOS/Windows 上存在的实用程序更加多样化,因为 Novell Netware 通常不提供编程库。有关更多信息,请参阅它们的手册页。
ncpfs 提供的一些更出色的工具是
nwrights、 nwgrant、 nwrevoke 允许修改文件访问权限(如 Unix 的 chmod)
nsend 通过 Novell 服务器向用户发送消息(请注意,如果接收者也使用 ncpfs,则他们的计算机必须运行 kerneld 才能接收消息)
slist 列出网络上可用的 Novell 服务器;
nwpasswd 更改用户的密码;
pqlis 列出 Novell 服务器上可用的打印队列;
nwuserlist 列出登录到服务器的用户及其硬件地址
ncopy 在 Novell 服务器内复制文件,而无需通过网络发送它们
我的学校,耶路撒冷以色列希伯来大学高中 (www.leyada.jlm.k12.il) 大约在一年前决定上线。我们已经有一个由 60 台计算机组成的 Novell 网络正在运行,并且我们专门用一台 DX4-100 作为 Internet 服务器。然而,在许多情况下,学生和教师想要(或被要求)编写他们自己的 WWW 页面。起初,这个人会编写一个页面,然后我会手动将其复制到 Internet 服务器。这是一个非常笨拙的解决方案,最初只能工作,并且不允许用户编辑他们的页面。
在某个时候,我发现了 ncpfs。那时它还是一个非常实验性的项目,但它确实完成了我需要它做的大部分事情。现在,我们的 Novell 服务器 (freud.leyada.jlm.k12.il) 始终由我们的 Linux Internet 服务器 (www.leyada.jlm.k12.il) 作为 /novell 挂载(一个 cron 脚本检查是否是这样,如果不是,则挂载服务器)。httpd Web 服务器自动在 Novell 层次结构中的特定目录中查找页面,从而解决了问题。这个目录,比如 G:\WWW,包含我们的整个主页。当学生希望创建主页时,他会请求在该目录下为他打开一个目录,比如 G:\WWW\HOME\JOE。他收到对该目录的 Novell 写入权限,并且能够使用他喜欢的 Web 编辑器编辑 HTML 文件。这项技术还允许每个人使用 DOS 和 Windows 编辑 HTML 文件,这在我们的例子中是 Novell 客户端运行的方式。因此,用户通过 Windows 编辑 HTML 文件并使用 Netscape 检查它,而页面是实时的,因为 Linux 机器挂载了 Novell 服务器。
