Программа поддержки MQ pac MA01-Q - PullRequest
1 голос
/ 15 марта 2012

Я хочу использовать программу Q из SupportPac MA01 для перемещения сообщений между двумя разными очередями. Он работает без каких-либо проблем на коробке 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 Ответ

1 голос
/ 16 марта 2012

В программе Q параметр -U устанавливает идентификатор пользователя в сообщении , но не идентификатор, используемый для подключения к QMgr .Если вы посмотрите на дескриптор соединения в очереди, пока вы подключены к Windows, вы увидите, что идентификатор, связанный с дескриптором, - это ваш логин, а не myuserid.Однако MQMD.UserID сообщения будет содержать myuserid после PUT.

Когда вы используете административные привилегии, эта авторизация предоставляется автоматически.В этом случае вы упомянули, что в окне Windows вы вошли в систему как администратор, который разрешил бы эту опцию.Если в окне AIX вы не используете идентификатор в группе mqm, то для использования опции -U необходимо явно предоставить полномочия +setid.

Например, предположим, что 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 может указывать опцию setID при подключении к первому QMgr, возможно, ошибки, которые вы видите, генерируются там.Если это так, запустите те же команды на источнике 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.

...и раздел Инфоцентра на Предоставление полномочий для установки контекста .

Кстати, я не смог найти опцию -u (строчные буквы), поэтому я предполагаюпросто опечатка в вашем посте, и вы на самом деле используете -U.Эта опция выдает желаемое сообщение, когда я пробую его на своей рабочей станции.

...