As Good A Place As Any
Tim Thomas's Blog
在 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 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 1 和 client 2)中访问共享。
两个服务器都是同一个作为 CIFS 服务器的 Active Directory Domain 的成员。我作为不同的 Active Directory 注册用户登录每个服务器:user1 登录 client1;user2 登录 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
Posted at 09:00AM Apr 28, 2008 in Storage |