Apache HTTP 伺服器 2.4 版
htpasswd
用於建立和更新平面檔案,這些檔案用於儲存 HTTP 使用者基本驗證的使用者名稱和密碼。如果 htpasswd
無法存取檔案,例如無法寫入輸出檔案或無法讀取檔案以進行更新,它會傳回錯誤狀態且不進行任何更改。
可以將 Apache HTTP 伺服器提供的資源限制為僅限 htpasswd
建立的檔案中列出的使用者存取。此程式只能管理儲存在平面檔案中的使用者名稱和密碼。不過,它可以雜湊和顯示密碼資訊,以便在其他類型的資料儲存中使用。要使用 DBM 資料庫,請參閱 dbmmanage
或 htdbm
。
htpasswd
使用 bcrypt、Apache 修改過的 MD5 版本、SHA-1 或系統的 crypt()
例程來雜湊密碼。crypt()
支援基於 SHA-2 的雜湊(SHA-256 和 SHA-512)。htpasswd
管理的檔案可能包含不同編碼類型的密碼混合;某些使用者記錄可能具有 bcrypt 或 MD5 雜湊密碼,而同一檔案中的其他使用者記錄可能具有使用 crypt()
雜湊的密碼。
此手冊頁僅列出命令列參數。有關在 httpd
中設定使用者驗證所需的指令的詳細資訊,請參閱 Apache 手冊,該手冊是 Apache 發行版的一部分,也可以在 https://apache-httpd.dev.org.tw/ 中找到。
htpasswd [ -c ] [ -i ] [ -m | -B | -2 | -5 | -d | -s | -p ] [ -r rounds ] [ -C cost ] [ -D ] [ -v ] passwdfile username
htpasswd -b [ -c ] [ -m | -B | -2 | -5 | -d | -s | -p ] [ -r rounds ] [ -C cost ] [ -D ] [ -v ] passwdfile username password
htpasswd -n [ -i ] [ -m | -B | -2 | -5 | -d | -s | -p ] [ -r rounds ] [ -C cost ] username
htpasswd -nb [ -m | -B | -2 | -5 | -d | -s | -p ] [ -r rounds ] [ -C cost ] username password
-b
-i
選項。2.4.4 及更高版本中可用。-i
-c
-n
選項組合使用。-n
-c
選項組合使用。-m
-2
crypt()
的雜湊。大多數 Unix 平台都支援此功能。-5
crypt()
的雜湊。大多數 Unix 平台都支援此功能。-B
-C
-B
(bcrypt 雜湊)組合使用。它設定 bcrypt 演算法使用的計算時間(越高越安全但越慢,預設值:5,有效值:4 到 17)。-r
-2
或 -5
組合使用。它設定 SHA-2 演算法使用的雜湊輪數(越高越安全但越慢;預設值為 5,000)。-d
crypt()
雜湊。Windows 和 Netware 上的 httpd
伺服器不支援此功能。此演算法將密碼長度限制為 8 個字元。按照今天的標準,此演算法是不安全的。它曾經是 2.2.17 版之前的預設演算法。-s
-p
htpasswd
支援在所有平台上建立,但 httpd
守護程式只會在 Windows 和 Netware 上接受純文字密碼。-D
-v
passwdfile
-c
,則如果此檔案不存在,則會建立它;如果存在,則會覆寫和截斷它。username
password
-b
標誌一起使用。如果使用者名稱和密碼已成功新增或更新到 passwdfile 中,則 htpasswd
傳回零狀態(“true”)。如果 htpasswd
在存取檔案時遇到問題,則傳回 1
;如果命令列出現語法問題,則傳回 2
;如果互動式輸入密碼且驗證項目不匹配,則傳回 3
;如果其操作被中斷,則傳回 4
;如果值太長(使用者名稱、檔案名稱、密碼或最終計算的記錄),則傳回 5
;如果使用者名稱包含非法字元(請參閱限制章節),則傳回 6
;如果檔案不是有效的密碼檔案,則傳回 7
。
htpasswd /usr/local/etc/apache/.htpasswd-users jsmith
新增或修改使用者 jsmith
的密碼。系統會提示使用者輸入密碼。密碼將使用修改後的 Apache MD5 演算法進行雜湊。如果檔案不存在,htpasswd
將不會執行任何操作,只會傳回錯誤。
htpasswd -c /home/doe/public_html/.htpasswd jane
建立一個新檔案並在其中儲存使用者 jane
的記錄。系統會提示使用者輸入密碼。如果檔案存在且無法讀取或無法寫入,則不會更改它,並且 htpasswd
將顯示訊息並傳回錯誤狀態。
htpasswd -db /usr/web/.htpasswd-all jones Pwd4Steve
使用 crypt()
演算法加密命令列中的密碼 (Pwd4Steve
),並將其儲存在指定的檔案中。
由 htpasswd
管理的網路密碼檔案等不應位於網路伺服器的 URI 空間內——也就是說,它們不應可使用瀏覽器擷取。
此程式作為 setuid 可執行檔並不安全。不要將其設定為 setuid。
不鼓勵使用 -b
選項,因為使用它時,純文字密碼會顯示在命令列上。
使用 crypt()
演算法時,請注意只有密碼的前 8 個字元用於組成密碼。如果提供的密碼較長,則多餘的字元將被靜默丟棄。
SHA-1 雜湊格式不使用加鹽:對於給定的密碼,只有一個雜湊表示形式。crypt()
和 MD5 格式通過在前面加上隨機鹽字串來排列表示形式,以使針對密碼的字典攻擊更加困難。
按照今天的標準,SHA-1 和 crypt()
格式是不安全的。
大多數現代 Unix 系統都支援基於 SHA-2 的 crypt()
格式(SHA-256 和 SHA-512),並遵循 https://www.akkadia.org/drepper/SHA-crypt.txt 中的規範。
在 Windows 平台上,使用 htpasswd
雜湊的密碼長度不得超過 255
個字元。較長的密碼將被截斷為 255 個字元。
htpasswd
使用的 MD5 演算法特定於 Apache 軟體;使用它雜湊的密碼將無法與其他網路伺服器一起使用。
使用者名稱限制為 255
個位元組,且不得包含字元 :
。
計算 bcrypt 密碼雜湊值的成本會隨著 -C
選項指定的輪數增加而增加。apr-util
程式庫在 1.6.0
及更高版本中強制執行最大 17 輪。