现在的情况
我有一个 OmniOS 文件服务器,它以前处于工作组模式,并使用本地用户/组(在服务器本身上创建)和本地passwd
密码来验证访问 Windows CIFS/SMB 共享的用户。一切按预期运行,/usr/bin/ls -V
在 ACL 中显示本地用户和组名称,Windows 用户还可以从 Explorer 的 Windows 安全选项卡中设置和修改权限。
预期结果和采取步骤
现在我想将此服务器移动到由 samba4 AD DC(域模式)提供服务的 Active Directory 域。为了方便以后添加更多服务器,我想停止使用本地凭据,而是利用中央 AD 来管理用户、组和密码。文件服务器毫无问题地加入到测试域中,然后我为管理员帐户添加了基本的映射:
root@omnios:/root# idmap list
add winuser:[email protected] unixuser:root
add wingroup:[email protected] unixgroup:root
之后,就可以以管理员身份登录,使用 Explorer 安全选项卡向 AD 用户和组授予权限,然后使用这些 Windows 用户帐户访问文件夹。无需进一步设置,权限工作正常(打开安全选项卡时,从 SID 到 AD 用户名的转换在很短的时间内可见)。
由于除系统用户/组之外没有本地用户/组,因此/usr/bin/ls -V
显示自动创建的数字 ID(root/Administrator 除外,其映射在 中是硬编码的idmap
)。
drwx------+ 3 root root 3 Oct 17 13:45 test
user:root:rwxpdDaARWcCos:fd----I:allow
user:2147483651:rwxpdDaARWcCos:fd----I:allow
根据文档,这些应该在重启时丢失,但在我的简单测试用例中它们似乎仍然存在。(编辑:我似乎判断错误,重新启动文件服务器后权限仍然存在,但nobody
在重新启动域控制器后它们被删除并更改为。)我有点不愿意使用这种简单模式,因为以后可能会出现麻烦(见第三个问题)。
问题
我已经阅读命名服务的不同选项的文档,但有些部分我还是不清楚。
- 许多示例都涉及两组不同的用户帐户(Unix/Windows),这些帐户应进行转换,以便输入 AD 的用户也可以登录 Solaris 系统、拥有 shell 等等。通常,还必须映射/转换不同的名称(例如
[email protected] <=> jdoe
)。另一方面,就我而言,用户帐户不应存储在 Solaris 主机上,不需要登录,也不必进行名称转换。如果之后应该正确命名 ACL,是否还需要在每个 Solaris 主机上(通过脚本或手动)创建这些用户帐户(除了 AD)? - AD DC 已将每个新创建用户的自动生成的 UID 和 GID 值设置为 LDAP 属性 - 是否可以/建议使用这些值代替用户名/组名?我假设这将是 Solaris 方面的 IDMU 版本,但文档没有提到除了更改设置之外还需要做什么。
- 文档从未提及如果服务器脱离域、移入另一个域、在没有可用 DC 的情况下启动、再次更改为工作组模式或添加具有相同配置的第二台服务器会发生什么情况。在我当前的设置中,所有本地用户将始终保持不变,因此只要客户端的用户/密码组合正确,就会授予他们访问权限。假设设置更改为域模式,在丢失域控制器后,所有 ACL 都将无用(并且必须手动重新创建),因为新域将使用新的 SID,并且无法进行用户名映射,这是正确的吗?如果是,通常要做什么来防止这种情况发生?
除了这三个问题的答案之外,我还在寻找一种最佳实践或总结,以指导我走上正确的道路。我假设它将是使用 AD 或 LDAP 的基于目录的名称映射(我都有,它们会自动同步),但我不太确定。我不想以后给自己挖坑(丢失或无法使用的 ACL)或做无用功(设置实际上永远不需要的额外名称信息系统)。我真的很喜欢基于内核的 CIFS 共享的易用性和稳定性,并希望找到一种可以继续使用的解决方案,只需在 AD/LDAP 而不是本地系统中使用用户名/密码。