内容


让 UNIX 与 Windows XP 及 Mac OS X 一起工作

为您的客户端工作站提供良好服务器

Comments

引言

传统上,将 UNIX® 系统作为中央服务器,用于存储文件以及将文件提供给客户端工作站。UNIX 的强大网络功能和安全攻击的快速响应能力使它非常适合担当这个角色,但由于工具、服务器应用程序、客户端选项过多,即使在小型局域网(Local Area Network,LAN)上为各种客户端系统的混合环境提供良好服务,系统设置和配置也非常麻烦。

运行 Microsoft® Windows® 和 Apple 的 Mac OS X 的最流行的台式计算机工作站和便携式计算机可以方便地与 Windows 服务器进行通信,而不要求使用任何额外的软件或配置。它们对 Server Message Block (SMB) 或 Common Internet Filesystem (CIFS) 网络的支持通常称为 Windows 网络,从而使其成为自然而然的选择。幸运的是,SMB 或 CIFS 有免费的 UNIX 实现可用,称为 Samba。

Samba 实现了很多有用的文件(和打印)共享功能,如公共共享和按用户共享,甚至可以在小型网络上充当 Windows 主域控制器(primary domain controller,PDC)。为了提供另一种共享公共文件的方法,您将使用简单的 Apache Web 服务器设置来对此进行增强。

开始之前

如果您希望按本文所述进行操作,您将需要进行一些准备工作。此处所使用的所有工具都是开放源代码,是免费提供的。

Samba 是 SMB 或 CIFS 文件和打印共享与网络身份验证的开发源代码实现,Microsoft 的 Windows 和各种其他操作系统(包括 OS/2® 和 Mac OS X)使用的就是此类系统。此实现通常用于 Linux® 系统,安装在其他 UNIX 系统上的可能性较小。如果尚未获得此实现,请访问 Samba 网站(请参阅参考资料),以获取相关代码并进行安装。

Apache 是全球最流行的 Web 服务器,如果您使用的是流行的 Linux 分发,则可能已经将其安装并在运行。如果您未安装 Apache 并运行,请前往 Apache Software Foundation 网站(请参阅参考资料)进行下载并安装运行。您将使用 Apache 来提供对稍后将设置的公共文件存储区域的匿名访问。

UNIX 服务器、台式计算机客户端

最简单的小型网络莫过于通过路由器或交换机(大部分家庭网络路由器都在设备中包含了至少四个交换端口)连接的一台服务器和一台客户端工作站。这可能随时间增长而扩大,通常的扩展方法是添加更多的客户端和在服务器上添加存储空间。可以在下面的图 1 中看到此类网络。

图 1. 简单的小型网络
简单的小型网络
简单的小型网络

在此设置中,服务器充当用于共享文件、备份(可能包括打印机共享)的中央位置。客户端会根据情况与服务器及其他客户端进行通信。

为了让此过程平稳地进行,应使用服务器进行单一的身份验证,以便在客户端经过身份验证后与其共享公共文件区域和各个用户的私有文件区域,甚至可以考虑为未经过身份验证的客户端提供对公共文件的匿名访问。最后一个功能非常不错,可用于您的朋友在不要求使用服务器帐户的情况下使用其计算机访问您的网络。

以下各个部分将演示在 UNIX 系统上使用 Samba 和 Apache 实现所有这些功能的方法。

服务器身份验证

为了让您的客户端工作站使用 UNIX 服务器进行身份验证,您需要将 Samba 设置为 PDC。这样就提供了进行身份验证的中央位置,且能与 Windows XP Professional 和 Mac OS X 客户端良好地配合,而无需进行其他工作。Windows XP Home 不支持域,如果您在 LAN 上使用 XP Home,则必须使用另一种身份验证技术。有关更多信息,请参阅 Samba 文档(可通过参考资料部分获得)。

将 Samba 配置为域控制器

作为 root 登录后,找到 smb.conf 文件(通常位于 /etc/samba 中)并使用您习惯使用的文本编辑器对其进行编辑。请注意,如果愿意,还可以使用 sudo 以 root 的身份编辑该文件(在本文中,我将假定您已作为 root 登录;如果不是,请在本文给出的任何命令前键入 sudo,以作为 root 而不是目前的身份进行运行)。

找到 smb.conf 文件的 [global] 部分,并添加以下选项;如果已经有了这些选项,请对其进行更改,以与在清单 1 中所示的匹配。

清单 1. 添加到 Samba 的 [global] 部分的配置数据
[global]
      workgroup = WORKS
      domain logons = yes
      security = user
      local master = yes
      os level = 65
      preferred master = yes
      domain master = yes
      encrypt = yes
      smb passwd file = /etc/samba/passwd
      domain logons = yes
      logon path = \\%n\profiles\%u
      logon drive = S:

这会将域名设置为 WORKS(也可以将其更改为其他名称),并告知 Samba 要求使用用户级别的安全性进行域登录。就是这样,user 对应于标准域身份验证系统。之所以将其称为用户 (user),是因为除了常规的域登录名之外,域中的计算机还具有用户帐户。计算机需要通过域控制器的身份验证,然后才会被视为可信系统,从而得以与域的其他部分进行交互。

您还需要设置域登录并将 S: 驱动器(显然是在 Windows 计算机上)的自动映射设置为 \\SERVERNAME\%u(将 SERVERNAME 替换为您的 Samba 服务器的名称)。%u 将替换为用户的名称,以便自动扩展为每个用户的唯一共享名称。logon path 设置用于漫游配置文件,以供移动工作站(如便携式计算机)使用。

接下来,需要添加用于网络登录服务的 [netlogon] 部分,如下面的清单 2 中所示。

清单 2. [netlogon] 部分
[netlogon]
      command = The domain logon service.
      path = /home/netlogon
      guest ok = yes
      public = no
      writable = no
      share modes = no

如果尚不存在,则必须创建 [netlogon] 部分中指示的路径,且所指向的位置应该为空。在身份验证期间将要求使用此共享。

进行了这些更改后,需要添加计算机帐户(以便域控制器知道并信任工作站)和用户帐户。

添加计算机帐户

对于域控制器而言,计算机只是另一种类型的用户而已,它需要具有自身的帐户(但尾部带有一个“$”)。如果需要进一步隔离 Samba 用户,则还应该为此类用户创建一个新组。清单 3 显示了如何在 Fedora Core 4 Linux 上使用 groupadd 命令进行此任务;其他 UNIX 系统具有用于添加新组和用户的类似实用工具或详细说明。

清单 3. 为 Samba 添加一个组和计算机帐户
/usr/sbin/groupadd smbusers
for system in machine1 machine2 ; do \
    /usr/sbin/useradd -g smbusers -d /dev/null -s /dev/null $machine\$ ; \
    smbpasswd -m -a $machine ; \
done

这将创建 smbusers 组,并随后添加 machine1 和 machine2 的计算机帐户。添加了每个用户后,其帐户详细信息将添加到 Samba password 文件。

现在可以为常规用户添加帐户。

关于 Windows XP 计算机帐户的一点说明

当首次从新添加的 Windows 计算机登录到 Samba 服务器时,将需要使用 Samba 服务器的 root 密码以 root 的身份登录。这会在服务器上对计算机的帐户进行身份验证(将计算机添加到常规 Windows 服务器域的域管理员可进行相同的操作,但将使用域管理员帐户)。以后将不再需要进行此操作;在计算机经过了身份验证后,用户可以使用任何有效帐户登录到 Samba 服务器。

添加用户帐户

添加用户帐户与添加计算机帐户类似;如果用户尚不存在于 Samba 服务器上,则需要创建该用户,然后使用 smbpasswd 命令将该用户添加到 Samba password 文件。以下代码演示了如何在 Fedora Core 4 Linux 上使用 useradd 命令进行此任务;其他 UNIX 系统具有用于添加新用户的类似实用工具或详细说明。

/usr/sbin/useradd -g smbusers username
smbpasswd -a username

这会将 username 添加到系统和 Samba password 文件中。将会提示您设置 username 的密码。请记住告知用户您所设置的密码!

重新启动 Samba

由于已经更改了 Samba 的配置,因此需要重新启动两个 Samba 后台程序 smbdnmbd,以便它们重新加载其配置文件。在 Fedora Core 4 上,将使用以下命令:

/etc/rc.d/init.d/smb restart

这将使用 smb init.d 脚本(在启动计算机时,也用此脚本来启动 Samba)来重新启动服务器,如图 2 中所示。

图 2. Samba 正在重新启动
Samba 正在重新启动
Samba 正在重新启动

如果您的 UNIX 不是 Fedora Core 4,可以始终使用 smbcontrol 命令来告知后台程序重新加载其配置文件:

smbcontrol nmbd reload-config
smbcontrol smbd reload-config

共享目录

现在已经将 Samba 配置为域控制器,并向其告知了您网络上的计算机和用户的信息,接下来应设置一些有用的文件共享了。

至少,可以在服务器上提供相应的个人目录和公共共享(经过身份验证的用户可以在此存储文件,以供任何人访问)。还将设置一个完全开放的共享区域,任何人都可以在该区域存储和检索文件。

清单 4 所示的 [homes] 部分添加到您的 smb.conf 文件,以在用户登录到 Samba 服务器时创建用户的主目录。此共享对其他用户不可见(不可浏览),即使这些用户经过了服务器的身份验证也不行。对于客户端工作站,其主共享以 \\SERVER\user 形式提供,其中 SERVER 是 Samba 服务器的名称,而 user 是其用户 ID。作为有效列表使用的 %S 宏表示当前会话名称,将为当前登录用户的名称。

清单 4. 向用户提供主目录
[homes]
    comment = Home Directories
    valid users = %S
    read only = no
    browseable = no

接下来,您将添加 [public] 和 [shared] 部分,以分别创建 \\SERVER\public 和 \\SERVER\shared 共享目录(和前面一样,其中的 SERVER 为您的 Samba 服务器的名称)。这两个共享的设置几乎完全相同,但有一点差异。对于 [public] 共享,只有 Samba 用户组的成员(使用 %G 宏表示)才允许对该共享进行写入操作。而任何人都可以对 [shared] 共享进行写入操作(请参阅清单 5)。

清单 5. 两个公共共享
[public]
    comment = Public files
    public = yes
    browseable = yes
    write list = %G
    path = /data/public

[shared]
    comment = Totally open shared area
    public = yes
    browseable = yes
    read only = no
    path = /data/shared

如果您信任访问您的 Samba 服务器的人员,则应该像此处一样,只创建一个完全开放的共享;例如,在过去,开放 FTP 服务器就被滥用作盗版软件的集散地。

向 smb.conf 配置文件添加了这些共享后,请记得重新启动 Samba 或告知它重新加载其配置文件(请参阅重新启动 Samba 部分)。

更方便地进行访问

现在应该能正常地为希望登录到 Samba 服务器的系统和用户提供服务了;不过,现在还希望通过 Web 浏览器提供访问,以便任何人都能从您的公共共享中下载文件。将通过将共享添加到 Samba 服务器上运行的 Apache Web 服务器来实现此目标。

找到 httpd.conf 文件(我的这个文件位于 /etc/httpd/conf 中),并添加清单 6 中的代码。这两个声明 <Alias> 和 <Directory> 将在服务器上创建 http://server/public/ 和 http://server/shared/,并打开目录列表,以便从任何 Web 浏览器进行访问。

清单 6. 提供对公共共享的 Web 访问
Alias /public/ "/data/public/"
<Directory "/data/public">
	Options Indexes MultiViews
	AllowOverride None
	Order allow,deny
	Allow from all
</Directory*>
Alias /shared/ "/data/shared/"
<Directory "/data/shared">
	Options Indexes MultiViews
	AllowOverride None
	Order allow,deny
	Allow from all
</Directory>

保存文件,并使用 apachectl 命令告知 Apache 重新加载其配置文件并激活新 URL。

/usr/sbin/apachectl restart

除了提供这些共享目录方便的 Samba 访问外,还可以供使用 Web 浏览器的任何人进行访问。

总结

通过使用强大且具有良好支持的免费软件(如 Samba 和 Apache),可以帮助进行 UNIX 服务器与 Windows 及 Mac OS X 客户端工作站的集成。Samba 通过充当 PDC 来提供身份验证服务。它能够提供共享目录,客户端可以使用标准技术来方便地加载这些目录。通过将 Apache 添加到混合环境中,还可以方便地提供对公共共享目录未经身份验证的只读访问。共享资源是使用 LAN 环境的目的之一,如果能够共享资源,可减少与安装和配置网络相关的工作量。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=123979
ArticleTitle=让 UNIX 与 Windows XP 及 Mac OS X 一起工作
publish-date=05252006