<-
Apache > HTTP 伺服器 > 文件 > 版本 2.4 > 程式

htdbm - 操作 DBM 密碼資料庫

可用的語言:  en  |  fr  |  tr 

htdbm 用於操作 DBM 格式檔案,這些檔案用於儲存透過 mod_authn_dbm 執行 HTTP 使用者的基本驗證時所使用的使用者名稱與密碼。請參閱 dbmmanage 文件,以取得關於這些 DBM 檔案的更多資訊。

Support Apache!

另見

top

概要

htdbm [ -T資料庫類型 ] [ -i ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C 成本 ] [ -t ] [ -v ] 檔案名稱 使用者名稱

htdbm -b [ -T資料庫類型 ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C 成本 ] [ -t ] [ -v ] 檔案名稱 使用者名稱 密碼

htdbm -n [ -i ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C 成本 ] [ -t ] [ -v ] 使用者名稱

htdbm -nb [ -c ] [ -m | -B | -d | -s | -p ] [ -C 成本 ] [ -t ] [ -v ] 使用者名稱 密碼

htdbm -v [ -T資料庫類型 ] [ -i ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C 成本 ] [ -t ] [ -v ] 檔案名稱 使用者名稱

htdbm -vb [ -T資料庫類型 ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C 成本 ] [ -t ] [ -v ] 檔案名稱 使用者名稱 密碼

htdbm -x [ -T資料庫類型 ] 檔案名稱 使用者名稱

htdbm -l [ -T資料庫類型 ]

top

選項

-b
使用批次模式;例如:從命令列取得密碼,而不用提示。由於密碼在命令列上清晰可見,因此應小心使用此選項。請參閱 -i 選項,以了解如何使用腳本。
-i
從 stdin 讀取密碼,不進行驗證(用於腳本使用)。
-c
建立 passwdfile。若 passwdfile 已存在,則重寫並刪除。此選項不能與 -n 選項結合使用。
-n
將結果顯示為標準輸出,而不是更新資料庫。由於省略了 passwdfile 參數(通常為第一個參數),因此此選項會變更命令列的語法。它不能與 -c 選項結合使用。
-m
使用 MD5 散列方式加密密碼。這在 Windows 和 Netware 上是預設設定。
-B
使用 bcrypt 散列方式加密密碼。此方式目前被認為非常安全。
-C
此旗標只能與 -B(bcrypt 散列)結合使用。它會設定用於 bcrypt 演算法的計算時間(數字越大越安全,但也越慢,預設為:5,可接受的範圍為:4 到 31)。
-d
使用 crypt() 散列方式加密密碼。Windows 和 Netware 以外的所有平台的預設設定。雖然 htdbm 可能在所有平台上都支援,但 httpd 伺服器在 Windows 和 Netware 上不支援。根據目前的標準,此演算法不安全
-s
使用 SHA 散列方式加密密碼。方便使用 LDAP 目錄交換格式 (ldif) 從 Netscape 伺服器進行遷移或遷移到 Netscape 伺服器。根據目前的標準,此演算法不安全
-p
使用純文字密碼。雖然 htdbm 支援在所有平台上建立,但 httpd 程式只有在 Windows 和 Netware 上接受純文字密碼。
-l
在 stdout 上列印資料庫中的每個使用者名稱和註解。
-v
驗證使用者名稱和密碼。此程式會印出一個訊息,指出提供的密碼是否有效。若密碼無效,則此程式會以錯誤代碼 3 結束。
-x
刪除使用者。若使用者名稱存在於指定的 DBM 檔案中,則會予以刪除。
-t
將最後一個參數當做註解來詮釋。當指定這個選項時,可以附加一個字串到指令列中;這個字串會儲存在資料庫的「Comment」欄位中,與指定的使用者名稱相關聯。
filename
DBM 格式檔案的檔名。通常沒有副檔名 .db.pag.dir。如果給定 -c,如果 DBM 檔案尚未存在,則會建立;如果已經存在,則會更新。
username
passwdfile 中建立或更新的使用者名稱。如果 username 不存在於這個檔案中,則會新增一個條目。如果它已經存在,則會變更密碼。
password
要雜湊並儲存在 DBM 檔案中的明文密碼。僅在 -b 旗標中使用。
-TDBTYPE
DBM 檔案類型(SDBM、GDBM、DB 或「預設」)。
top

錯誤

您應該知道,存在許多不同的 DBM 檔案格式,而且很可能您的系統上會存在支援多種格式的函式庫。三個主要的範例為 SDBM、NDBM、GNU GDBM 和 Berkeley/Sleepycat DB 2/3/4。很遺憾的是,這些函式庫都使用不同的檔案格式,而且您必須確保 filename 使用的檔案格式與 htdbm 預期的格式相同。htdbm 目前無法判定它查看的 DBM 檔案類型。如果用於錯誤的格式,它將只會傳回空白,或者可能會建立一個不同名稱的不同 DBM 檔案,或者在最糟的情況下,如果您打算寫入它,它可能會損毀 DBM 檔案。

您通常可以使用大多數 Unix 系統提供的 file 程式,來查看 DBM 檔案的格式。

top

結束狀態

如果使用者名稱和密碼已成功新增或更新到 DBM 檔案,則 htdbm 傳回狀態碼 0(「true」)。如果 htdbm 在存取檔案時遇到某些問題,則傳回 1;如果指令列有語法問題,則傳回 2;如果密碼是互動輸入且驗證輸入不符,則傳回 3;如果其操作中斷,則傳回 4;如果值過長(使用者名稱、檔名、密碼或最終計算的記錄),則傳回 5;如果使用者名稱包含非法字元(請參閱限制部分),則傳回 6;如果檔案不是有效的 DBM 密碼檔案,則傳回 7

top

範例

htdbm /usr/local/etc/apache/.htdbm-users jsmith

新增或修改使用者 jsmith 的密碼。系統會提示使用者輸入密碼。如果在 Windows 系統上執行,密碼將使用修改過的 Apache MD5 演算法進行雜湊;否則,將使用系統的 crypt() 常式。如果檔案不存在,htdbm 除了傳回錯誤外,不會做任何事。

htdbm -c /home/doe/public_html/.htdbm jane

建立一個新檔案並儲存在一個記錄中,供使用者 jane 使用。使用者會被提示輸入密碼。如果檔案已存在且無法讀取或無法寫入,檔案不會被變更,而 htdbm 會顯示一則訊息並傳回錯誤狀態。

htdbm -mb /usr/web/.htdbm-all jones Pwd4Steve

透過 MD5 演算法,加密命令列的密碼 (Pwd4Steve),並將其儲存在指定的檔案中。

top

安全性考量

htdbm 管理的網路密碼檔案,不應存在於 Web 伺服器的 URI 空間 —— 也就是說,不應使用瀏覽器取得檔案。

不建議使用 -b 選項,因為使用時會在命令列中顯示明文密碼。

使用 crypt() 演算法時,請注意密碼只會使用前 8 個字元來組成。如果提供的密碼較長,多出的字元會被默默地捨棄。

SHA hashing 選項不使用加鹽:對於給定的密碼,只有一個雜湊表示法。crypt() 和 MD5 格式透過在前置隨機加鹽字串,來實作置換表示法,以使針對密碼的字典攻擊更困難。

依現今標準,SHA 和 crypt() 格式並不安全。

top

限制事項

在 Windows 平台上,由 htdbm 雜湊的密碼長度,不得超過 255 個字元。更長的密碼會被截斷為 255 個字元。

htdbm 使用的 MD5 演算法,僅適用於 Apache 軟體;使用其雜湊的密碼無法與其他 Web 伺服器一起使用。

使用者名稱上限為 255 位元組,且不得包含 : 字元。

可用的語言:  en  |  fr  |  tr 

top

意見

注意事項
此處並非問答區。放置於此處的留言應提出針對文件或伺服器改善的建議,且若已被執行或被認為無效/離題,我們的管理員可能會將留言移除。有關如何管理 Apache HTTP 伺服器的疑問,應導向我們的 IRC 頻道(#httpd,在 Libera.chat 上),或傳送到我們的 郵遞清單