MQ支持pac MA01-Q程序

时间:2012-03-15 05:39:39

标签: security authorization ibm-mq

我想使用SupportPac MA01中的Q程序在两个不同的队列之间移动消息。它在Windows机器上没有任何问题。

我正在尝试在AIX机器上运行它,并且收到 2035 - Not Authorized 错误消息。

当我执行复制命令时,我指定了标志-u <userid>,但它仍然在说明

MQOPEN on Object 'queue name' returned 2035 Not authorized..

我的命令行如下所示:

q -u <myuserid> -xb -m sourceQMgr -I sourceQueue -m TargetQMgr -oDestinationQueue -p20

用户<myuserid>确实具有从队列中读取和写入的相关权限。

感谢任何指示或帮助。

1 个答案:

答案 0 :(得分:1)

在Q程序中,-U参数设置消息中的用户ID,但不设置用于连接QMgr 的ID。如果在Windows框中连接时查看队列上的连接句柄,您将看到与句柄关联的ID是您的登录ID,而不是myuserid。但是,MQMD.UserID后消息的myuserid 包含PUT

使用管理权限时,将自动授予此授权。在这种情况下,您提到在Windows框中您以管理员身份登录,这将允许该选项。如果在AIX框中您未在mqm组中使用ID,则需要明确授予+setid权限才能使用-U选项。

例如,假设myuserid属于mygroup。要使-U选项正常工作,您需要执行此操作:

# +setid must be granted at both the QMgr *and* the queue
setmqaut -m TargetQMgr -t qmgr -g mygroup +connect +inq +setid
setmqaut -m TargetQMgr -n DestinationQueue -t queue -g mygroup +put +inq +setid

请注意,+setid仅适用于放置邮件而不是获取邮件。但是,因为Q程序可能在连接到第一个QMgr时指定setID选项,所以可能会在那里生成您看到的错误。如果是这种情况,请在源QMgr上运行相同的命令:

# +setid must be granted at both the QMgr *and* the queue
setmqaut -m SourceQMgr -t qmgr -g mygroup +connect +inq +setid
setmqaut -m SourceQMgr -n SourceQueue -t queue -g mygroup +browse +get +inq +setid

作为参考,请参阅Q程序的帮助,其中说明:

-U        Sets the user ID in the message.

...以及 Granting authority to set context 上的信息中心部分。

顺便说一下,我找不到-u(小写)选项,所以我假设它只是你帖子中的拼写错误,而你实际上正在使用-U。当我在工作站上试用它时,该选项会产生所需的信息。