As Good A Place As Any

Tim Thomas's Blog

Monday Apr 28, 2008

在 Domain 模式下配置 OpenSolaris CIFS Server

最近的博客中,我发表了在 Workgroup 模式下配置 OpenSolaris CIFS Server 的文章。现在,我将介绍在 Active Directory 环境中完成本操作的过程。

与以前一样,我的工作环境是安装了 Solaris Nevada build 86 的 Sun Fire X4500....

root@isv-x4500b # uname -a
SunOS isv-x4500b 5.11 snv_86 i86pc i386 i86pc

大部分我所使用的命令和系统实际文件我都会按原样展示..但有时候必须编辑字段。

1. 将 OpenSolaris 服务器配置为 Active Directory Domain Server 的 DNS 客户机

要执行此操作,请创建/修改文件 /etc/resolv.conf,以对 Active Directory Domain Controller 执行查询。

root@isv-x4500b # cat /etc/resolv.conf
domain sspg.central.sun.com
nameserver 192.168.2.1
search sspg.central.sun.com central.sun.com

现在,设置 /etc/nsswitch.conf,以便通过 DNS 解析该主机。可以修改现有的 /etc/nsswitch.conf 文件,或者直接将 /etc/nsswitch.dns 复制到 /etc/nsswitch.conf 中。

要检查 DNS 是否可以正常运行,可以使用 nslookup 查询已知主机,运行一些简单的测试。

2. 设置 Kerberos

编辑文件 /etc/krb5/krb5.conf 并设置如下字段,请根据您的环境自行调整。下面只是 /etc/krb5/krb5.conf 文件的一部分。手册在第 42 和 43 页中详细介绍了此步骤。

<--snip-->
[libdefaults]
        default_realm = SSPG.CENTRAL.SUN.COM

[realms]
        SSPG.CENTRAL.SUN.COM = {
                kdc = domaincontroller.sspg.central.sun.com
                admin_server = domaincontroller.sspg.central.sun.com
                kpasswd_server = domaincontroller.sspg.central.sun.com
                kpasswd_protocol = SET_CHANGE
        }

[domain_realm]
        .sspg.central.sun.com = SSPG.CENTRAL.SUN.COM
<--snip-->

3. 同步 Server 与 Domain Controller 的时钟

这一步很容易漏掉..您以后可能会由于 Kerberos 初始化问题而无法连接域.....我的亲身经历!!!

手册在第 43 页描述了同步时钟的各种方式....我使用的方式如下:

root@isv-x4500b # ntpdate domaincontroller.sspg.central.sun.com

4. 启动 CIFS 服务

root@isv-x4500b # svcadm enable -r smb/server
svcadm:svc:/milestone/network depends on svc:/network/physical, which has multiple instances.

可以忽略该消息。

5. 连接 Domain

要完成此步骤,您需要知道具有域管理员权限的 Active Directory 用户(本例中为 aduser)的用户名和密码。

这部分流程曾一度让我困惑,而手册在第 43 页中介绍了一些使用 sharectl 的明显多余的步骤,而且这种方式也是无效的..以下方式可以成功:

root@isv-x4500b # smbadm join -u aduser sspg.central.sun.com
Enter domain password:
Joining 'sspg.central.sun.com' ... this may take a minute ...
Successfully joined domain 'sspg.central.sun.com'

如果失败,请确保您没有跳过步骤 3。如果服务器之间的时间差异太大,当您尝试连接 Domain 时,您将在系统日志中看到 Kerberos 消息。如果不是这个问题,请查询故障排除指南

6. 停止和启动 CIFS Server

root@isv-x4500b # svcadm disable smb/server
root@isv-x4500b # svcadm enable -r smb/server
svcadm:svc:/milestone/network depends on svc:/network/physical, which has multiple instances.

7. 创建 ZFS 文件系统

我已经具有称为 tank 的 ZFS 存储池。

root@isv-x4500b # zfs create -o casesensitivity=mixed tank/cifs1

8. 通过 SMB 共享 ZFS 文件系统和自定义共享名称

root@isv-x4500b # zfs sharesmb=on tank/cifs1

默认的共享名称是 tank_cifs1..我们可以用以下方式将其更改为 cifs1 ..

root@isv-x4500b # zfs sharesmb=name=cifs1 tank/cifs1

可以使用 sharemgr 进行检查:

root@isv-x4500b # sharemgr show -vp
default nfs=()
zfs
    zfs/tank/cifs1 smb=()
          cifs1=/tank/cifs1

9. 设置共享目录的权限

我将使用 Active Directory 注册用户从两个 Windows 客户机中访问共享。我公开共享目录的权限,以避免将来可能遇到的任何访问问题。

root@isv-x4500b # chmod 777 /tank/cifs1

正如 Solaris CIFS Administrators Guide 所述,我需要使用 ZFS ACL(也可能是 Identity Mapping)进行试验,从而能够轻松地处理此操作;以后将介绍这些内容。

10. 访问共享

我从运行 Microsoft Windows Server 2003 的两个客户机(client 1client 2)中访问共享。

两个服务器都是同一个作为 CIFS 服务器的 Active Directory Domain 的成员。我作为不同的 Active Directory 注册用户登录每个服务器:user1 登录 client1user2 登录 client2

我将共享映射到两个客户机中。

映射共享

映射共享时,系统询问我在 Workgroup 模式下的用户 ID 和密码,但我可以在系统日志中看到认证已经发生,对共享的 rw 访问权限已经授予用户 [SSPG\user1][SSPG\user2]...

Apr  8 05:49:30 isv-x4500b smbsrv:NOTICE:smbd[SSPG\user1]:cifs1 rw access granted
Apr  8 05:49:53 isv-x4500b smbsrv:NOTICE:smbd[SSPG\user2]:cifs1 rw access granted

两个客户机可以看到相同的共享目录,而且我在两个客户机中的共享上创建了一些文件和文件夹,没有遇到任何问题。

更多信息

OpenSolaris Project:CIFS Server 主页

Open Solaris CIFS Documentation,包括 Solaris CIFS Administrators Guide & Troubleshooting Information

此外,请考虑加入 Open Solaris Storage Discuss Forum

Comments:

Post a Comment:
Comments are closed for this entry.
A Day At The Seaside

Calendar

About Me

View Tim Thomas's profile on LinkedIn

Available in

English

简体中文

日本語

Feeds

Search

Links

Navigation