9. 扩展记录
扩展记录是在Leopard的OD中引入的概念. 正如这个名字隐含的, 扩展记录是在另一个引入的记录上添加了信息的记录. 扩展记录允许实施一个本来在前面目录服务中没有的记录应用到一个用户记录. 这一点对主目录服务器没有扩展架构权限的管理很有用.
为了实施扩展记录, 要把主OD绑定到根目录服务, 把对象从根目录引入, 然后用Mac OS X特殊的属性增加到引入的记录上, 比如MCX设置, IMHandle和WeblogURI等. Mac OS X客户被绑定到主OD和其它的目录服务. 当Mac OS X客户查找目录时, 它首先找到扩展记录然后覆盖原先的记录.
大多数情况, 仅在根目录服务中没有定义的扩展记录属性,才被客户接受. givenname, gidNumber和UniqueID等属性就是不能用扩展记录来覆盖的例子. homeDirectory也在一般的目录服务中使用, 但是这是在AD插件中一个特殊的例子(参见6节中的C小节). AD插件动态地根据其它用户信息生成一些Mac OS X专署的属性, 例如"NFSHomeDirectory"属性值就是从AD的homeDirectory属性派生的. 仅当"Use UNC path from Active Directory to derive network home location"打开时, homeDirectory属性值被重格式化为AD值。
根据AD插件的这个特性, 当设定不"Use UNC path from Active Directory to derive network home location"时, 就可以把从AD得到的homeDirectory属性值覆盖. 下面介绍如何实施扩展记录, homeDirectory将作为一个例子.
A. 在ODM构造容器中配置扩展记录
扩展记录存储在OD的构造容器的"augmentconfiguration"记录中. 它包括扩展节点(也就是节点包含扩展信息), 扩展节点(亦即"外节点")可以用不同的记录类型来扩展.
一个典型的扩展记录:
<?xml version=”1.0” encoding=”UTF-8”?> <!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http:// www.apple.com/DTDs/PropertyList-1.0.dtd”> <plist version=”1.0”> <dict> <key>Augment Attribute List</key> <dict> <key>dsRecTypeStandard:Users</key> <array> <string>dsAttrTypeStandard:ServicesLocator</string> </array> </dict> <key>Augment Directory Node Name</key> <string>/LDAPv3/master.apple.edu</string> <key>Augment Search</key> <true/> <key>Augmented Directory Node Name</key> <string>/Active Directory/All Domains</string> </dict> </plist> |
上面的配置显示这个扩展记录可以定义ServicesLocater属性在主OD. 当从另外一个目录服务引入对象时,这个"augmentconfig"构造记录会被自动生成.
2. 在WGM的偏好中, 选中'Show "All Records" tab and Inspector'. 点Ok.
3. 点选Users标签, 在Server菜单中选择"New Augmented User Records", 弹出面板中查找可以引入的用户记录. 即可以查找用户,也可以查找AD中的组以引入属于该组的所有用户.
4. 选择至少一个记录,点击"Create"按钮,然后"Done".
5. 点击Inspector标签(在右边的牛眼图标)
6. 在构造容器中应该包含一个叫"augmentconfiguration"的记录, 点击那个组, 然后在Inspector的右边点击"XMLPlist"属性. 点击"Edit"按钮来查看内容, 它应该和上面列出的类似.
7. 这个练习我们添加三个属性到augmentconfiguration记录的"Augment Attribute List"中(在ServicesLocator下面)
<string>dsAttrTypeStandard:HomeDirectory</string> <string>dsAttrTypeStandard:NFSHomeDirectory</string> <string>dsAttrTypeStandard:Keywords</string> |
8. 保存.
这些步骤只需要做一次, 也就是没必要在每次引入用户记录的时候都做.
B. 扩展用户记录
1. 点击Users标签, 选择其中一个扩展记录. 扩展记录带有蓝色凝胶图标.
在右边的记录中, 仅有3项:Baisc, Advanced,和Inspector. Basic的内容不可编辑, 而Advanced仅仅和iCal服务器设置相关. 在Inspector中可以添加任何我们想要的. 我们来添加Home目录属性.
注:不要混淆Native和Standard属性, 例如, "homeDirectory"是一个Native属性, 而"HomeDirectory"是一个Standard属性. 它们分别对应与不同的其它属性:
dsAttrTypeStandard:NFSHomeDirectory <--> dsAttrTypeNative:homeDirectory
dsAttrTypeStandard:HomeDirectory <--> dsAttrTypeNative:apple-user-homeurl
一般地, 最好隐藏Native或者Standard属性, 因为它们互相映射而不太了解时会造成困惑. 在Inspector框中点击”Options...“按钮, 取消选择"Show Standard attributes.", 来隐藏Standard"属性.
2. 点击homeDirectory属性, 然后"Edit"按钮. 在Edit面板里, 输入*local*路径到用户的Home目录. 例如:
/Network/Servers/yourserver.domain.com/Users/username
记住如果路径不是启动卷,需要加入/Volumes在路径中, 比如:
/Network/Servers/yourserver.domain.com/Volumes/Homes/username
3. 如果扩展记录中没有"apple-user-homeurl"属性, 点击”New attribute...“按钮, 设置名字为”apple-user-homeurl“,属性是:
<home_dir><url>afp://yourserver.domain.com/Users</ url><path>username</path></home_dir> |
4. 保存.
重复上面的步骤设置所有的扩展记录. 如果有较多的记录要编辑,那么使用dscl工具来自动化过程更好。
在Home目录宿主服务器和客户端完成下面的步骤
5. 首次检查机器已经绑定到OD和AD, 并且在AD插件中禁止了"Use UNC path from Active Directory to derive network home location"选项
6. 重启动DirectoryService后台程序来让系统认知OD节点的扩展记录
sudo killall DirectoryService |
7. 记录的扩展过程作为/Search节点发生在客户端(和Home目录服务器), 运行下面的命令来查看OD的扩展记录是如何校对来自AD的记录:
host10:~ apple$ dscl localhost > read /LDAPv3/master.apple.edu/Augments/Users:labadmin/ AppleMetaNodeLocation: /LDAPv3/master.apple.edu GeneratedUID: 0D3870FD-BFEF-4E8E-8216-5BBFBB3AB5A1 HomeDirectory: <home_dir><url>afp://services.apple.edu/ Users</url><path>labadmin</path></home_dir> NFSHomeDirectory: /Network/Servers/services.apple.edu/Users/ labadmin PasswordPlus: ******** PrimaryGroupID: 20 RealName: Lab Admin RecordName: Users:labadmin RecordType: dsRecTypeStandard:Augments ServicesLocator: (null):(null):calendar UniqueID: 221802749 UserShell: /usr/bin/false > read /Active/ Directory/All/ Domains/Users/labadmin/ AppleMetaNodeLocation: /Active Directory/apple.edu AuthenticationAuthority: 1.0;Kerberosv5;FD3AA261-AE21-4A60- 9D86-9DA5B7234850;labadmin@APPLE.EDU;APPLE.EDU; FirstName: Lab GeneratedUID: FD3AA261-AE21-4A60-9D86-9DA5B7234850 LastName: Admin Password: ******** 48 PasswordPlus: ******** PrimaryGroupID: 278245951 RealName: Lab Admin RecordName: labadmin lab admin labadmin@apple.edu APPLE/labadmin APPLE/lab admin Lab Admin RecordType: dsRecTypeStandard:Users SMBAccountFlags: 805306368 SMBGroupRID: 513 SMBHome: //master/Users/labadmin SMBHomeDrive: H: SMBLogoffTime: 0 SMBLogonTime: 128614125322148848 SMBPasswordLastSet: 128566355521191920 SMBPrimaryGroupSID: S-1-5-21-2554006548-4090241852- 3873005326-513 SMBSID: S-1-5-21-2554006548-4090241852-3873005326-1201 UniqueID: 221802749 UserShell: /bin/bash > read /Search/Users/labadmin/ dsAttrTypeNative:distinguishedName: CN=Lab Admin,CN=Users,DC=apple,DC=edu ... FirstName: Lab GeneratedUID: 0D3870FD-BFEF-4E8E-8216-5BBFBB3AB5A1 HomeDirectory: <home_dir><url>afp://services.apple.edu/ Users</url><path>labadmin</path></home_dir> LastName: Admin NFSHomeDirectory: /Network/Servers/services.apple.edu/Users/ labadmin Password: ******** PasswordPlus: ******** PrimaryGroupID: 278245951 RecordType: dsRecTypeStandard:Users ServicesLocator: (null):(null):calendar SMBAccountFlags: 805306368 SMBGroupRID: 513 SMBLogoffTime: 0 SMBLogonTime: 128582793083305216 SMBPasswordLastSet: 128582365602518032 SMBPrimaryGroupSID: S-1-5-21-2554006548-4090241852- 3873005326-513 SMBSID: S-1-5-21-2554006548-4090241852-3873005326-1136 UniqueID: 221802749 UserShell: /bin/bash |
C. 批量处理扩展用户记录
对于一个习惯动手的用户, 管理扩展用户记录很容易,但是如果(译者注: 使用上面手动方式)管理数百的用户,简直是不可完成的任务, 特别是扩展用户Home目录属性. 下面的代码演示如何使用dscl命令来生成扩展记录以及Home目录属性. 这个jiaobe年还为扩展记录添加了标签, 从而允许使用关键子在WGM中搜索.
host10:~ apple$ dscl /LDAPv3/master.apple.edu > auth diradmin apple > create /Augments/Users:labadmin RealName “Lab Admin” > create /Augments/Users:labadmin GeneratedUID E426858E-DA85- 4085-BB28-4DEE094357A1 > create /Augments/Users:labadmin HomeDirectory <home_dir><url>afp://services.apple.edu/Users</ url><path>labadmin</path></home_dir> > create /Augments/Users:labadmin NFSHomeDirectory /Network/ Servers/services.apple.edu/Users/labadmin > create /Augments/Users:labadmin UniqueID 221802749 > create /Augments/Users:labadmin PrimaryGroupID 20 > create /Augments/Users:labadmin Keywords “ad_group” |
生成扩展记录后, 在文件服务器上运行下面的命令(也就是例子中的services.apple.edu)来为所有的引入用户创建Home目录.
services:~ admin$ sudo createhomedir -s |
参考本文后面的资源部分, 哪里有一个完整的循环过程完成在主OD中为一组用户组添加扩展记录.
这里有一点有关使用扩展记录的提示:
- 如果用户网络Home目录在AD中没有定义,那么HomeDirecory属性可以被覆盖, 但是NFSHomeDirectory不行. 因此, 网络Home目录共享将被安装在/Users目录,而不是/Network/Server/server.apple.ed/sharepoint。 这样只有当用户登录,用户的Home目录才有效, 一旦登出/Users目录将可供本地用户使用.
- 扩展记录本能被用在OD组, 所以它们不能象管理用户一样.
- 可以是用apple已经定义的关键字来扩展记录,但是它们不会在WGM中显示, 它们也无法被查找, 比如"dscl /Search search".
原文链接: http://blog.csdn.net/afatgoat/article/details/3946825