分类:
2009-09-15 14:42:08
AIX 上的 Samba |
级别: 中级 Radhika A. Parameswaran, 高级软件开发工程师, IBM 2009 年 2 月 12 日 Samba 是免费的开放源码软件套件,它在 Windows® 客户机和 UNIX® 类平台之间提供无缝的文件和打印服务。它可以在 AIX®、BSD® UNIX、Linux®、IBM® 390 和 OpenVMS 等 UNIX 类平台上运行。Samba 使用安装在主机服务器上的 TCP/IP 协议。如果正确地配置的话,这个服务器软件使主机机器能够共享文件和打印机,让 Windows 客户机能够访问它们。 Samba 是免费的开放源码软件套件,它在 Windows 客户机和 UNIX 类平台之间提供无缝的文件和打印服务。 它可以在 AIX、BSD UNIX、Linux、IBM 390 和 OpenVMS 等 UNIX 类平台上运行。Samba 使用安装在主机服务器上的 TCP/IP 协议。如果正确地配置的话,这个服务器软件使主机机器能够共享文件和打印机,让 Windows 客户机能够访问它们。 Samba 的 AIX 版本的重要特性包括:
Samba 的 AIX 版本不提供以下特性:
Samba 可以在支持 AIX 6100-02 或更高的任何计算机上运行。服务器必须至少有:
每台客户机 PC 必须安装一个 LAN 适配器;应该连接网络;在客户机上应该安装 Windows 98、Server 2003、NT®、Vista® 或 XP®。 注意,Samba 与 Fast Connect 不兼容。因此,必须卸载现有的 Fast Connect 版本。 AIX 上的 Samba 需要以下包:
要想连接 Samba 服务器,必须创建用户和共享。存储共享的相关信息的配置文件是 /usr/lib/smb.conf。可以使用 AIX 中的文本编辑器或 SWAT 界面编辑此文件。 按照以下步骤配置 SWAT:
配置了 SWAT 之后,就可以在浏览器中通过以下 URL 连接它: SWAT 页面为所有配置参数提供帮助。还可以在 AIX 命令行上通过 man 命令访问手册页。 Samba 有两个守护进程(nmbd 和 smbd),需要运行它们 Samba 才能正常工作。 nmbd 是一个服务器,它可以理解和响应 NetBIOS over IP 命名服务请求,比如 Windows 95/98/ME、Windows NT、Windows 2000、Windows XP 和 LanManager 客户机等 SMB/CIFS 客户机产生的请求。它还参与浏览协议,从而构建 Windows 网络邻居视图。 smbd 是服务器守护进程,它向 Windows 客户机提供文件共享和打印服务。这个服务器使用 SMB(或 CIFS)协议向客户机提供文件空间和打印服务。 可以在命令行上用以下命令启动这两个守护进程:
可以在 /var 目录中找到这两个守护进程的日志文件 log.nmbd 和 log.smbd。 还可以在 /etc/inittab 中添加以下行,从而在系统重新引导时自动启动这些守护进程:
现在,在每次重新引导期间都会启动这些守护进程。这两个守护进程会出现在进程列表中:
可以使用 SWAT 中的 Password 菜单或使用 pdbedit 实用程序创建新用户:
添加的新用户实际上是一个 AIX 用户。可以使用 smbpasswd 实用程序修改现有用户的密码:
可以通过编辑 smb.conf 文件或使用 SWAT 中的 Shares 菜单创建新的共享。下面是 smb.conf 文件中的共享定义示例:
可以使用 testparm 实用程序测试 smb.conf 的内容。如果出现错误,可以通过编辑 smb.conf 解决问题,然后重新测试:
在 AIX 计算机上,可以使用 smbclient 实用程序列出到共享的连接:
还可以使用 smbclient 实用程序连接共享:
可以用以下命令检查当前目录:
可以用以下命令关闭 Samba 服务器:
可以用以下命令中断共享的连接:
例如:
注意,如果在客户机中打开了任何文件,这些命令就不生效。 可以在服务器计算机上运行以下命令设置客户机超时:
超时之后,客户机连接被中断。 另一种方法是在 smb.conf 中设置计时器,如下所示:
连接一个客户机并让驱动器空闲一分钟。一分钟之后,驱动器就会中断连接。 在服务器计算机上运行以下命令 ping 客户机:
例如:
来自客户机的响应是一个 PONG 消息。 Samba 为 nmbd 和 smbd 守护进程提供日志。nmbd 日志记录在 /var/log.nmbd 中,smbd 日志记录在 /var/log.smbd 中。
本节讨论 Samba 中的一些重要特性及其配置方法。 前一节介绍的身份验证方法是用户级安全措施。用户是在 Samba 服务器上定义的。客户机通过服务器中定义的一个用户进行身份验证。smb.conf 中的全局选项是:
这是 Samba 服务器的默认选项。 在 Samba 中编译了一个标准的内部用户列表,包括 nobody、Administrator 等用户。是否能够访问文件或打印机资源取决于是否作为这些标准用户之一成功地通过了身份验证。 如果一个资源应该只允许某一特定用户访问,那么可以在 smb.conf 中配置:
在这个配置示例中,只允许 ann 访问 /tmp,但是访客用户可以访问 /samba。
在采用服务器级安全性时,可以把身份验证信息传递给另一个服务器。这也称为传递身份验证。下面是 smb.conf 中的配置:
在此示例中,允许用户 “mary” 访问 share2,允许 “nobody” 访问 share1。 域控制器对域中的所有计算机(包括 Windows 和 AIX 计算机)进行身份验证。一个域通常属于同一个子网。Samba 可以起到域控制器的作用。smb.conf 应该包含以下代码:
在 Windows 客户机设置中,加入这个 Samba 域。在远程用户列表中添加来自 Samba 域的权限。这些用户不必存在 Windows 中,但是必须存在 Samba 域中。 Samba 是域控制器。Windows 计算机是域的成员。当在 Windows 客户机上选择一个域并输入用户名和密码时,向 Samba 服务器发送身份验证请求。可以向另一个 Samba 服务器(域控制器)传递身份验证信息,如下所示:
在此示例中,jhelum 作为域控制器运行 Samba 服务器。身份验证信息会传递给 jhelum。 如果域控制器是未知的,无法在 smb.conf 中指定,那么 Samba 服务器可以在域中搜索域控制器。应该在 smb.conf 中这样设置:
如果 Windows 上安装了 Active Directory (AD) 服务器,那么可以把 Samba 配置为把所有连接转发给 Active Directory 服务器以执行身份验证。 可以按以下方式实现这种身份验证。 在 AD 和 Samba 中创建用户 rocky 并设置不同的密码。假设 AD 安装在 Windows 客户机 9.124.101.235 上。按以下方法配置 smb.conf:
映射为使用两个不同密码的用户 rocky(分别针对 Samba 和 AD)。两者都会通过身份验证。 多用户登录功能允许多个客户机通过同一个服务器连接访问共享资源。 为了测试此功能,在一台 Windows 计算机上安装 Windows Terminal Server。重新引导此计算机。把一个驱动器映射到 Samba 服务器。从另一个客户机通过 Remote Desktop 服务连接这台 Windows 计算机。 应该能够看到并访问映射的驱动器,不会出现密码提示。只需登录此计算机即可。 应该只在映射的客户机和 Samba 服务器之间出现交互。在与 Samba 服务器交互时,任何地方都不会出现第二个客户机的 IP。 通过在 smb.conf 中设置以下参数,可以启用访客登录:
可以为错误的密码或错误的用户名实现访客帐户。如果选项是 bad password,那么可以用所有密码或空密码登录服务器。如果选项是 bad user,只能用错误的用户名登录,而不能使用 Samba 登录。设置方法如下:
分配给访客登录的用户由 guest account 参数表示:
Samba 允许为共享文件或打印机指定用户或权限。 在共享的定义中可以使用以下选项:
用具有读/写权限的任何其他用户(非根用户)把一个 Windows 客户机驱动器连接到这个共享,创建一个新文件。检查在共享中创建的文件的权限。新文件应该具有 root 和 system 的权限。 要想只允许特定的用户读/写共享,应该在 smb.conf 中使用以下配置:
当在 Samba 中禁用密码加密时,身份验证由 AIX 执行。只有在启用密码加密的情况下,才会进行 Samba 身份验证。 在 smb.conf 中添加以下配置:
在 AIX 中创建一个在 Samba 中不存在的用户。如果在 Windows 客户机中使用此用户连接一个驱动器,就会发现是由 AIX 对用户进行身份验证。现在,在 smb.conf 中做以下修改:
尝试连接以上用户。此操作应该会失败,错误消息指出此用户不存在。 这表明,当禁用加密时,由 AIX 对用户进行身份验证。当启用密码加密时,由 Samba 执行身份验证,也就是上面的第二种情况。 MSDFS 允许把多个文件服务器无缝地集成在同一个逻辑名称空间中,这会产生以下结果:
MSDFS 被组织为 MSDFS 根文件共享的拓扑,其中可以包含指向其他本地或远程文件共享的 MSDFS 链接。这些 MSDFS 链接显示为子目录,所以只要在远程服务器上正确地验证用户的身份,就会透明地重定向到远程文件共享。(Windows 客户机软件管理 MSDFS 重定向和远程服务器身份验证)。 要想在 Samba 中使用此特性,应该在 smb.conf 文件中指定 MSDFS 根。
用以下配置链接到 DFS 根:
这里的 beas.in.ibm.com\\radhika 是一个共享,beas 也运行 Samba,并在编译时采用 --with-msdfs 选项。如果从 Windows 客户机映射 tmp 共享,那么可以访问 t1 的目录。因此,此特性使用户可以从 DFS 根访问共享的目录。 Samba 支持 AIXC 和 NFSv4 ACL。下面介绍在 Samba 中使用 NFSv4 ACL 的配置细节。 用 v2=extended attribute /samba 创建一个新的文件系统。检查文件系统支持的 ACL 类型:
创建新文件 test1.txt 并检查此文件的 ACL:
如果禁用了
查看 test1.txt 的 ACL:
在 UNIX 权限和 NFS4 ACL 之间没有固定的映射。因此,如果对比 NFSv4 ACL 和 ls –l 列表中的权限,可能会产生误解。 在 Windows 客户机上使用用户 "john"(他属于 system 组)映射一个驱动器。在 /samba 中创建一个新文件。因为对于这个组拒绝删除操作(D),所以服务器不允许删除此文件。 SMB 签名为 Samba 服务器提供相互身份验证和消息身份验证功能。在默认情况下,SMB 签名是禁用的。如果启用此特性,还会用数字签名检验每个消息。 为了启用 SMB 签名,应该在 smb.conf 中添加以下配置:
在 Windows 客户机上启用 SMB 签名。在此之后,SMB 头就会包含注解 “Security signatures are enabled”。 大文件是指超过 4G 的文件。Samba 服务器在默认情况下支持大文件。它不需要设置任何参数。要想测试此特性,可以通过映射的驱动器把一个大文件从 AIX 传输到 Windows 客户机。此操作应该会成功。 可以跨 Windows 客户机共享和访问 AIX 中的打印机资源。 请考虑在 AIX 中配置的以下打印队列。
可以在 smb.conf 中添加打印机共享:
在同一子网中,可以在 Windows 网络邻居中看到配置的打印机。另外,在其他子网中,可以作为新打印机添加连网的打印机。 可以使用 SMB 客户机测试打印服务:
可以从 Windows 向这个连网的打印机发送打印请求。 Samba 用以下选项支持 DOS 文件属性:
下图显示权限与 DOS 属性的映射关系。 可以在共享的目录中创建一个文件并设置一些权限位。可以使用 SMB 客户机工具查看权限: 在 AIX 中:
从 smbclient:
在 Samba 中默认实现目录更改通知特性。当从客户机修改一个目录(比如创建新文件)时,Samba 生成一个 "NT NOTIFY" 消息。 如果必须修改更改时间间隔,那么像下面这样编辑 smb.conf:
iptrace 显示 NT NOTIFY 请求和响应。 在一台 Windows 客户机上禁用 NETBIOS over TCP/IP 并重新引导。现在连接一个驱动器。连接会成功,这说明在 Samba 中允许 NETBIOS-less 连接。 在同一子网中的 Windows 客户机的网络邻居中可以看到 Samba 服务器。 可以按以下方式测试此特性。需要一台与 Samba 服务器在同一子网中的 Windows 客户机。假设 Samba 服务器在 jhelum 中运行,9.124.113.100 是同一子网中的 Windows 客户机。 编辑 smb.conf:
现在在 Windows 客户机中查看网络邻居。在客户机的网络邻居中可以看到 Samba 服务器。 网络浏览是指让 Windows 和 Samba 服务器能够显示在 Windows 网络邻居中。在网络邻居中,以图标显示服务器,如果展开图标,就会显示此服务器上可用的共享和打印机。 一个域主浏览器整理来自所有子网上的本地主浏览器的浏览列表,这样就可以在工作组和子网之间进行浏览。另外,域主浏览器应该作为它自己子网的本地浏览器。 可以通过以下设置让 Samba 成为浏览主:
在 smb.conf 中,可以设置 nmbd 在重复广播 LAN Manager 公告之前等待的时间间隔(以秒为单位):
现在,在 Windows 客户机上测试连接。 使用 SMB 客户机工具测试浏览主功能:
下面是相关的 log.nmbd 片段:
Samba 名称服务器 AIXFVT21 现在是 9.124.101.199 子网上 SAMBA 工作组的本地主浏览器。 注意,
在 AIX 中,可以使用 tcpdump 命令跟踪客户机和服务器之间传输的消息包。 在服务器上启动 tcpdump 命令:
例如:
客户机和服务器之间的事务完成之后,可以停止 tcpdump 进程。然后,可以使用 Ethereal 或其他工具查看创建的跟踪文件。 /var/log.smbd 记录来自 SMB 守护进程的消息,/var/log.nmbd 记录来自 nmb 守护进程的消息。 在 smb.conf 中可以提高日志级别:
可以根据需要在日志中查看错误消息。
本文讲解了如何设置和配置 Samba 服务器,解释了如何定义共享和从 Windows 访问共享,还讨论了不同的身份验证机制。 |