Message Queue 提供平面檔案使用者儲存庫和指令行工具,即使用者管理員公用程式 (imqusermgr),您可以使用此工具寫入和管理平面檔案使用者儲存庫。以下各節描述平面檔案使用者儲存庫,以及您如何使用使用者管理員公用程式寫入和管理儲存庫。
平面檔案使用者儲存庫是針對實例的。您啟動的每個代理程式實例,都會自動建立預設的使用者儲存庫 (稱為 passwd)。此使用者儲存庫的所在目錄名稱,與此儲存庫相關聯之代理程式實例名稱相同 (請參閱附錄 AMessage QueueTM 資料的特定平台位置):
…/instances/instanceName/etc/passwd
此儲存庫在建立時就有兩個項目。表 7–1 的每一列表示一個項目。
表 7–1 使用者儲存庫中的初始項目
使用者名稱 |
密碼 |
群組 |
狀態 |
---|---|---|---|
admin |
admin |
admin |
active |
guest |
guest |
anonymous |
active |
這些初始項目可讓 Message Queue 代理程式在安裝之後立即使用,而無需管理員的介入:
初始 admin 使用者項目可讓您使用 imqcmd 指令和預設的 admin 使用者名稱和密碼來管理代理程式實例。您應該更新此初始項目以變更密碼 (請參閱變更預設管理員密碼)。
以下各節介紹如何寫入和管理平面檔案使用者儲存庫。
Message Queue 使用者管理員公用程式 (imqusermgr) 可讓您編輯或寫入平面檔案使用者儲存庫。本節介紹使用者管理員公用程式。後續各節介紹如何使用 imqusermgr 子指令完成特定的工作。
如需 imqusermgr 指令的完整參考資訊,請參閱第 13 章, 指令行參照。
操作使用者管理員之前,請注意以下事項:
如果代理程式專用的使用者儲存庫不存在,您必須啟動對應的代理程式實例來建立儲存庫。
必須在安裝代理程式的主機上執行 imqusermgr 指令。
您必須擁有寫入儲存庫的適當權限:也就是說,在 Solaris 和 Linux 上,您必須是超級使用者或是第一個建立代理程式實例的使用者。
以下各節中的範例均假設為預設的代理程式實例。
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 群組不一樣的是,您應當限制此群組的存取權限,或者應在部署時移除此群組中的使用者。
若要變更使用者的群組,您必須刪除此使用者項目,然後為此使用者增加其他項目,指定新的群組。
您不能將系統建立的群組重新命名或刪除,也不能建立新群組。但是,您可以指定用來定義群組成員可執行作業的存取規則。如需更多資訊,請參閱使用者授權:存取控制特性檔案。
增加使用者至儲存庫時,使用者的狀態預設為使用中。若要讓此使用者變成非使用中狀態,您必須使用更新指令。例如,以下指令可讓使用者 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 管理工具 (包括管理主控台) 時,您均應提供新的密碼。