Message Queue 提供了一个平面文件用户系统信息库和一个命令行工具,即用户管理器实用程序 (imqusermgr),您可以使用它来填充和管理平面文件用户系统信息库。以下各节介绍平面文件用户系统信息库以及如何使用用户管理器实用程序来填充和管理该系统信息库。
平面文件用户系统信息库是特定于实例的。默认的用户系统信息库(名为 passwd)是为启动的每个代理实例自动创建的。此用户系统信息库所在的目录由与该系统信息库相关联的代理实例的名称标识(请参见附录 A, Message QueueTM 数据在特定平台上的位置):
…/instances/instanceName/etc/passwd
创建的系统信息库具有两个条目。表 7–1 中的每一行显示一个条目。
表 7–1 用户系统信息库中的初始条目
用户名 |
密码 |
组 |
状态 |
---|---|---|---|
admin |
admin |
admin |
处于活动状态 |
guest |
guest |
anonymous |
处于活动状态 |
这些初始条目使 Message Queue 代理安装后即可使用,不需要管理员的干预:
利用初始 admin 用户条目,您可以通过 imqcmd 命令使用默认的 admin 用户名和密码管理代理实例。您应更新此初始条目以更改密码(请参见更改默认的管理员密码)。
以下各节说明如何填充和管理平面文件用户系统信息库。
使用 Message Queue 用户管理器实用程序 (imqusermgr),您可以编辑或填充平面文件用户系统信息库。本节介绍了用户管理器实用程序。下文说明如何使用 imqusermgr 子命令完成特定任务。
有关 imqusermgr 命令的完整参考信息,请参见第 13 章,命令行参考。
使用用户管理器之前,请谨记以下事项:
如果特定于代理的用户系统信息库不存在,您必须启动相应的代理实例来创建此系统信息库。
必须在安装了代理的主机上运行 imqusermgr 命令。
您必须具有写入系统信息库的适当权限:即,在 Solaris 和 Linux 上,您的身份必须是 root 用户或首次创建代理实例的用户。
以下各节中的示例采用默认代理实例。
imqusermgr 命令包含子命令 add、delete、list 和 update。
add 子命令将用户和关联的密码添加到指定的(或默认的)代理实例系统信息库中,并可以选择指定用户所属的组。 该子命令语法如下所示:
add [-i instanceName] -u userName -p passwd [-g group] [ -s]
delete 子命令从指定的(或默认的)代理实例系统信息库中删除指定用户。 该子命令语法如下所示:
delete [-i instanceName] -u userName [ -s] [-f]
list 子命令显示有关指定的(或默认的)代理实例系统信息库中指定用户或所有用户的信息。 该子命令语法如下所示:
list [ -i instanceName] [-u userName]
update 子命令更新指定的(或默认的)代理实例系统信息库中指定用户的密码和/或状态。该子命令语法如下所示:
update [ -i instanceName] -u userName -p passwd [ -a state] [-s] [ -f]
update [-i instanceName] -u userName -a state [-p passwd] [-s] [-f]
表 7–2 列出了 imqusermgr 命令的选项。
表 7–2 imqusermgr 选项
选项 |
描述 |
---|---|
-a activeState |
指定用户是否处于活动状态 (true/false)。true 表示处于活动状态。这是默认值。 |
-f |
执行操作,无需用户确认。 |
-h |
显示用法帮助。不执行命令行上的其他选项。 |
-i instanceName |
指定命令要应用到的代理实例名。如果未指定,则采用默认实例名 imqbroker。 |
-p passwd |
指定用户密码。 |
-g group |
指定用户组。有效值包括 admin、user 和 anonymous。 |
-s |
设置无提示模式。 |
-u userName |
指定用户名。 |
-v |
显示版本信息。不执行命令行上的其他选项。 |
在代理实例的用户系统信息库中添加用户条目时,可以指定以下三个预定义组之一: admin、user 或 anonymous。如果不指定任何组,则默认属于 user 组。应按如下方式指定组:
admin 组。用于代理管理员。默认情况下,指定到该组中的用户可以配置和管理代理。您可以为 admin 组指定多个用户。
user 组。用于普通(非管理)Message Queue 客户端用户。多数客户端用户都属于 user 组。默认情况下,该组中的用户可以生成发往所有主题和队列的消息,使用来自所有主题和队列的消息,以及浏览任意队列中的消息。
anonymous 组。用于那些不想使用代理已知的用户名(可能是因为客户端应用程序不知道要使用的实际用户名)的 Message Queue 客户端。 此帐户类似于大多数 FTP 服务器中的匿名帐户。每次只能为 anonymous 组分配一个用户。 与 user 组不同,应限定 anonymous 组的访问权限,或者在部署时删除该组中的用户。
要更改用户所属的组,必须删除该用户的条目,然后为该用户添加另一个条目并为其指定新组。
您不能重命名或删除这些系统创建的组,也不能创建新组。但是,您可以指定访问规则,以定义该组的成员可以执行的操作。有关详细信息,请参见用户授权:访问控制属性文件。
向系统信息库中添加用户时,用户的默认状态是活动的。要使用户处于非活动状态,您必须使用 update 命令。例如,以下命令将使用户 JoeD 处于非活动状态:
imqusermgr update -u JoeD -a false
处于非活动状态的用户条目将保留在系统信息库中,但不能打开新连接。当某个用户处于非活动状态时,如果您试图添加具有相同名称的另一个用户,操作将失败。必须删除处于非活动状态的用户条目,或者更改新用户的名称,或者为新用户指定一个不同的名称。这样可以防止添加重复的用户名。
用户名不能包含星号 (*)、逗号 (,)、冒号 (:) 或者换行符或回车符。
用户名或密码必须至少包含一个字符。
如果用户名或密码包含空格,必须将整个用户名或密码用引号引起来。
除了命令 shell 限定的命令行中最多可输入的字符数之外,密码或用户名的长度没有限制。
要在系统信息库中添加用户,可以使用 add 子命令。例如,以下命令向默认代理实例用户系统信息库添加用户名为 Katharine、密码为 sesame 的用户。
imqusermgr add -u Katharine -p sesame -g user
要从系统信息库中删除用户,可以使用 delete 子命令。例如,以下命令删除用户 Bob:
imqusermgr delete -u Bob
要更改用户的密码或状态,可以使用 update 子命令。例如,以下命令将 Katharine 的密码更改为 aladdin:
imqusermgr update -u Katharine -p aladdin
要列出一个或所有用户的相关信息,可以使用 list 命令。以下命令显示名为 isa 的用户的相关信息:
imqusermgr list -u isa
% imqusermgr list -u isa User repository for broker instance: imqbroker ---------------------------------- User Name Group Active State ---------------------------------- isa admin true |
以下命令列出所有用户的相关信息:
imqusermgr list
% imqusermgr list User repository for broker instance: imqbroker -------------------------------------- User Name Group Active State -------------------------------------- admin admin true guest anonymous true isa admin true testuser1 user true testuser2 user true testuser3 user true testuser4 user false testuser5 user false |
为安全起见,应该将 admin 的默认密码更改为只有您自己知道的密码。以下命令将 mybroker 代理实例的默认管理员密码 admin 更改为 grandpoobah。
imqusermgr update mybroker -u admin -p grandpoobah
要快速确认此更改是否已生效,可以在代理实例运行时运行任何命令行工具。例如,以下命令将提示您输入密码:
imqcmd list svc mybroker -u admin
输入新密码 (grandpoobah) 将会被接受;而输入旧密码则会失败。
更改密码后,使用任何 Message Queue 管理工具(包含管理控制台)时都应该提供新密码。