AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
如果发送密码,则要求该密码是有效的。
The AMQ8077
您收到的错误是因为用户没有连接到队列管理器的权限。
您必须授予 OAM 权限才能允许clientadmin
to connect
到队列管理器。
默认情况下,在 Linux 上,您只能向用户所属的组授予 MQ OAM 权限,在您的情况下,该组是clientadmin
是 的成员。在 MQ v8.0 及更高版本中,如果以下设置已添加到 qm.ini,您还可以向用户本身授予 OAM 权限:
Service:
SecurityPolicy=user
上述设置不是必需的,它只是允许两种不同的方式授予 OAM 权限。这记录在 IBM MQ v8.0 知识中心页面“校长及团体”。该页面指出:
UNIX 和 Linux 系统
ACL 基于用户 ID 和组,您可以使用其中任何一个进行授权。
在版本 8.0 中,您可以使用基于用户的模型进行授权,这允许您同时使用用户和组。但是,当您在setmqaut命令时,新权限仅适用于该用户,而不适用于该用户所属的任何组。
See 可安装服务了解更多信息。
当您使用基于组的模型进行授权时,用户 ID 所属的主组将包含在 ACL 中。
不包括个人用户 ID,并且权限授予该组的所有成员。因此,请注意,您可能会通过更改同一组中另一个主体的权限而无意中更改主体的权限。
这记录在 IBM MQ v8.0 知识中心页面“可安装服务”。该页面指出:
SecurityPolicy=用户|组|默认
在 UNIX 和 Linux 系统上,该值指定队列管理器是否使用基于用户或基于组的授权。值不区分大小写。
如果不包含此属性,则使用默认值,即使用基于组的授权。重新启动队列管理器以使更改生效。
要授予 OAM 权限以连接到某个组的队列管理器,您可以使用 MQSC 命令来执行此操作SET AUTHREC
:
SET AUTHREC PROFILE('self') GROUP('groupname') OBJTYPE(QMGR) AUTHADD(CONNECT,DSP,INQ)
使用命令行工具也可以完成同样的工作setmqaut
:
setmqaut -m <queue_manager_name> -t qmgr -g groupname +connect +dsp +inq
要授予 OAM 权限以针对用户本身连接到队列管理器,您可以使用 MQSC 命令来执行此操作SET AUTHREC
:
SET AUTHREC PROFILE('self') PRINCIPAL('clientadmin') OBJTYPE(QMGR) AUTHADD(CONNECT,DSP,INQ)
使用命令行工具也可以完成同样的工作setmqaut
:
setmqaut -m <queue_manager_name> -t qmgr -p clientadmin +connect +dsp +inq
您还需要授予对要访问的队列的 PUT 或 GET 访问权限。以下示例使用 MQSC 命令SET AUTHREC
正在使用主体,但如果需要,您可以将其更改为使用组:
SET AUTHREC PROFILE('QUEUE.NAME') PRINCIPAL('clientadmin') OBJTYPE(QUEUE) AUTHADD(PUT,GET,BROWSE,DSP,INQ)
使用命令行工具也可以完成同样的工作setmqaut
:
setmqaut -m <queue_manager_name> -t queue -p clientadmin +put +get +browse +dsp +inq
更新2017/02/21
不建议在没有 SecurityPolicy=user 的情况下使用 -p 在 Linux 上设置权限。这是因为此操作不会针对使用 -p 指定的用户设置权限,而是针对运行命令时该用户的主要组设置权限。
这可能会导致各种情况,我能想到的一些例子如下:
- 如果您有两个用户具有相同的主要组,并且您为他们提供了不同的访问级别,那么他们最终都会获得与您运行的最后一个 setmqaut 命令所产生的相同的访问级别。
- 即使您一开始就为他们提供了相同级别的访问权限,您可能希望删除这两个用户之一的访问权限,并使用该权限发出类似的命令
-remove
指定的。结果会not您删除了两个用户之一的访问权限,但您却删除了两个用户的访问权限。
- UNIX 帐户的主要组更改并不罕见。如果用户在更改后不是与辅助组相同的组的成员,他们将失去对 MQ 的访问权限。
也不建议向非管理用户提供+all
,如果您这样做,您不妨将用户添加到mqm
组并为他们提供完整的 MQ 管理权限。
您应该向用户提供所需的特定权限。我在示例中提供了一组适用于大多数应用程序的有限权限。