本节介绍如何使用 Calendar Server 实用程序 D.5 cscal 来管理用户日历的说明。
本节包含以下管理任务:
要显示所有日历、用户拥有的所有日历或特定日历的属性,使用 cscal 实用程序 list 命令。
以下示例演示了使用 cscal 的三个不同任务。
可使用以下命令列出日历数据库中的所有日历:
cscal list
可使用以下命令列出 jsmith 拥有的所有日历:
cscal - o jsmith list
可使用以下命令列出日历 ID 为 jsmith:meetings 的日历的所有属性:
cscal -v list jsmith:meetings
要从 Calendar Server 删除一个或多个日历,使用 cscal 实用程序 delete 命令。此实用程序将删除日历,但并不会从 Directory Server 中删除用户。
以下两个示例演示了可利用 cscal delete 完成的不同任务:
可使用以下命令删除日历 ID 为 jsmith@sesta.com:meetings 的特定日历:
cscal delete jsmith@sesta.com:meetings
可使用以下命令删除主要所有者为 jsmith@sesta.com 的所有日历:
cscal -o jsmith@sesta.com delete
delete 命令将从日历数据库中删除所有日历信息,并且不能撤消。删除日历后,只有在已经对日历数据进行了备份的情况下才能恢复它。有关更多信息,参见 第 17 章,备份和恢复 Calendar Server 数据。
如果您已使用 Calendar Server 实用程序命令 csuser delete 或者 Delegated Administrator 控制台或实用程序删除了一个或多个用户,则用户所拥有的日历可能仍存在于数据库中。
可以用两种方法来删除用户的日历。要使用的方法取决于删除用户所使用的工具:
csuser 实用程序用于删除 LDAP 目录下的用户以及该用户的默认日历,但不会删除该用户可能拥有的其他任何日历。有关如何使用 cscal 来删除这些日历的说明,参见在 Calendar Server 版本 6.3 中删除使用 csuser 删除的用户的所有日历。
Delegated Administrator 不会删除任何日历。使用 Delegated Administrator 将用户标记为已删除,然后使用 Calendar Server 实用程序 csclean 删除标记为已删除的用户的所有日历。
有关如何使用 csclean 来删除已删除的用户的日历的说明,参见删除由 Delegated Administrator 删除的用户的所有日历。
有关使用 Delegated Administrator 实用程序的说明,参见 《Sun Java System Communications Services 6 2005Q4 Delegated Administrator Guide》。
有关使用 Delegated Administrator 控制台的说明,请参见联机帮助。
运行 cscal list 命令来查找已删除的所有者 uid 的所有日历。
cscal -o owner list
使用 cscal 命令来删除此所有者的所有日历。
cscal -o owner delete
通过再次运行 csuser list 来验证是否已删除所有日历。
如果您已使用 commadmin 将用户标记为已删除,并且该用户的 LDAP 条目已被清除,则使用此过程。
Delegated Administrator 不会删除日历。使用 csclean 实用程序来删除已使用 Delegated Administrator 标记为已删除的任何用户的所有日历。
使用 csclean 来删除标记为已删除但尚未被清除的用户的所有日历。
例如,要删除最近 10 天 sesta.com 域中标记为已删除的用户的所有日历,则应执行如下命令:
csclean -g 10 clean sesta.com
如果用户已从 LDAP 中清除,那么您必须使用 cscal。
要允许用户访问其日历,必须首先使用 cscal enable 命令来启用日历。
以下示例演示了如何启用日历:
可通过以下命令,使用默认配置设置来启用日历 jsmith@sesta.com:meetings:
cscal enable jsmith@sesta.com:meetings
可使用以下命令启用日历 jsmith@sesta.com:meetings,但不允许重复预订:
cscal -k no enable jsmith@sesta.com:meetings
要防止用户访问日历,使用 cscal 实用程序的 disable 命令。disable 命令将禁止用户访问日历,但并不会从日历数据库中删除信息。
例如,要防止用户访问 jsmith@sesta.com:meetings ,使用以下命令:
cscal disable jsmith@sesta.com:meetings
要修改日历的属性,使用 cscal 实用程序的 modify 命令。
例如,可使用以下命令来更改 AllAdmins 的组预定访问控制设置并将 RJones@sesta.com 指定为另一个所有者:
cscal -a "@@o^c^wd^g" -y RJones@sesta.com modify AllAdmins
以下内容介绍了上面的示例中所使用的两个命令变量:
-a "@@o^c^wd^g" 将授予所有者对 AllAdmins 组件(事件和任务)的写入和删除权限。
-y RJones@sesta.com 指定其他所有者的用户 ID。
要从日历删除属性值,使用 cscal modify 命令并用两个双引号 ("") 指定选项的值。
以下三个示例显示如何删除不同的属性:
可使用以下命令从 jsmith@sesta.com:meetings 删除描述:
cscal -d "" modify jsmith@sesta.com:meetings
可使用以下命令从 jsmith@sesta.com:meetings 日历删除所有类别:
cscal -g "" modify jsmith@sesta.com:meetings
可使用以下命令从 jsmith@sesta.com:meetings 删除“其他所有者”:
cscal -y "" modify jsmith@sesta.com:meetings
如果用户的默认日历对于 Communications Express 用户界面客户端不可见但仍存在于数据库中,则可通过更新用户的 LDAP 条目中的两个属性来恢复日历并使其再次可见。
要恢复日历,确保用户的 LDAP 条目中的以下属性的值为用户的全限定 calid:
icsCalendar
icsSubscribed
对于 Schema 版本 2,使用以下方法之一更新属性:
使用 ldapmodify Directory Server 实用程序。
使用 Calendar Server 实用程序的 csuser reset 命令。
使用 Delegated Administrator 实用程序的 commadmin user modify 命令。
使用 Delegated Administrator 控制台通过编辑“用户属性”页添加默认日历名。
对于 Schema 版本 1,使用 csattribute add 命令更新属性。
要将用户日历从一个后端服务器移至其他后端服务器,请执行以下操作:
在原始服务器上,使用 D.19 csuser 实用程序禁用日历用户。例如,可使用以下命令禁用用户 ID 和 calid 为 bkamdar 的用户:
csuser disable bkamdar
在原始服务器上,使用D.10 csexport实用程序将用户的每个日历从日历数据库导出到某个文件中。例如:
csexport -c bkamdar calendar bkamdar.ics
将导出的日历文件 (*.ics) 从原始服务器复制到新服务器上。
在新服务器上,针对已导出的每个日历,使用D.11 csimport实用程序将日历从此文件导入到日历数据库中。例如:
csimport -c bkamdar calendar bkamdar.ics
在 LDAP 目录服务器上,使用 D.3 csattribute 实用程序更新日历所有者的 icsDWPHost LDAP 属性,以指向新的后端服务器。要更新属性,必须先删除该属性,然后再添加它并为其指定新值。例如,要将新服务器名设置为 sesta.com:
csattribute -a icsDWPHost delete bkamdar csattribute -a icsDWPHost=sesta.com add bkamdar |
在新服务器上,使用 D.19 csuser 实用程序来启用用户日历的日历用户。例如:
csuser enable bkamdar
在新服务器上,使用以下命令验证这些属性是否正确以及是否已正确移动了每个日历。例如:
cscal -v -o bkamdar list bkamdar ... csattribute -v list bkamdar |
在原始服务器上,删除刚刚移动的每个日历。例如:
cscal -o bkamdar delete bkamdar
-o 选项将删除主要所有者为 bkamdar 的所有日历。
如果您要在将日历移至不同的后端服务器之后使用 CLD 高速缓存选项,则应清除 CLD 高速缓存以删除该服务器名称。CLD 高速缓存中的过期条目可以阻止前端服务器在日历被移动后查找此日历。
要清除 CLD 高速缓存,请执行以下操作:
停止 Calendar Server。
删除 /var/opt/SUNWics5/csdb/cld_cache 目录中的所有文件,但不删除 cld_cache 目录本身。
重新启动 Calendar Server。