В программе 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
.Эта опция выдает желаемое сообщение, когда я пробую его на своей рабочей станции.