由於許多原因,通過基於用戶名和密碼的身份驗證服務來控制對Web服務器上某些目錄的訪問或者僅對頁面或博客內容的訪問進行控制非常有用。 我說的是類似於我們要進入服務受限的網站時出現的典型窗口。
有幾種生成帶有身份驗證表單的窗口的方法,但是提供了服務器級別的有趣解決方案 htpasswd的。 它是一個實用程序,其功能是以加密形式存儲密碼,以供Apache在身份驗證服務中使用。 它的使用將使我們僅通過HTTP向特定用戶顯示某些目錄或文件,而不必向所有人免費提供。
我知道這不是一個浮華的主題,但對某些人可能有用。 為了避免無聊地殺死他們,我將使用圖像使其更具說服力。
先前的考慮:我將使用 Ubuntu服務器12.04.1 y 阿帕奇2.2.22 在受控環境中。
我們開始。
眾所周知,默認情況下,可用的Apache站點存儲在目錄中 在/ var / WWW / 在此示例中,我將創建一個帶有HTML模板的目錄,並嘗試使用.htpasswd對其進行屏蔽。
要保護的目錄是 / var / www / example / 我放置下一頁的位置。
1.我們將創建.htpasswd。
它所處的位置具有重要意義,將其放置在公共目錄之外可能比建議的要多。 就我而言,我會將其放置在我的個人文件夾(不是公共Apache目錄)中,並將其命名為.htpasswd (先驗沒有必要那樣稱呼,但是被隱藏的總是好的)。
使用以下命令,我為名為“ Luke”的Web用戶創建.htpasswd文件。
# htpasswd -c /home/krel/.htpasswd Luke
它將要求我們提供兩次密碼,在我的情況下,我已輸入“ skywalker”(不帶引號)。 在不受控制的環境中,我們必須建立更強的密碼。 Linux上的默認加密是MD5,但在Unix上,它是crypt()的標準實現,對於少於8個字符的密碼,它很容易受到攻擊。 現在出現的問題是,在BSD中是否相同。
- -c→創建文件
- /home/krel/.htpasswd→文件的絕對路徑。
- Luke→用戶名(可以是您想要的任何名稱)
同樣,當互聯網上有服務時,我也不強迫任何人使用該終端:
http://www.web2generators.com/apache/htpasswd_generator
http://www.htaccesstools.com/htpasswd-generator/
如果需要,我們將結果復製到一個文本文件中,並命名為.htpasswd。 關於這種方法,請不要停止閱讀下一段中我的評論。
在我們的例子中,我們將看到文件已生成在我們期望它們位於/home/krel/.htpasswd的位置。 在圖像中,我強調了使用這種方法,該文件屬於apache組和用戶,在Ubuntu中稱為www-data。 這很重要,因為如果我們以其他任何方式生成了.htpasswd,則必須確保它具有644權限。
這樣,我們已經為用戶Luke創建並設計了.htpasswd,最後,它不過是密碼的容器。 “只用一個命令就可以”是一個很好的口號。
2.配置Apache以在站點上使用並允許該服務。
# nano /etc/apache2/sites-available/default
如果您有多個主機,則它們必須在每個主機上工作,在我的情況下,默認情況下,我只有一個。 不要忘記備份該文件總是好的。
該文件具有默認結構:
ServerAdmin網站管理員@本地主機
..................
..................
正是在Virtualhost標題內,將指定使用.htpasswd來訪問特定目錄。 我們這樣做是因為下面的圖像出現並適合我們的示例:
您必須放置目錄以進行保護。
AuthType基本
它是與瀏覽器協商的用戶和密碼的類型,在這種情況下,它是“基本”,沒有加密。
還有另一種協商方式:摘要,即加密用戶名和密碼的方式,但是最後的決定權是瀏覽器是否支持上述服務。 可以說Digest是針對嗅探器的更健壯的實現。 我邀請您深入研究。
AuthName“進入前敲門。”
這是一條消息,它將以登錄形式在瀏覽器中顯示給用戶,並且可以是我們想要的消息。
AuthUserFile /var/www/.pass/.htpasswd
.htpasswd文件的路徑。 因此,我說甚至沒有必要將其命名為.htpasswd,只需放置路徑即可。
需要有效的用戶
該行專為具有個性化密碼的多個用戶而設計。 如果是單個用戶,則可以總結為以下變體。
需要用戶el_que_sea
以我為例: 需要用戶Luke
最後,我們用
我們重新啟動apache:
# service apache2 restart
咱們試試吧。
相反,如果我們輸入正確的用戶名和密碼,它將使我們通過,而不會帶來很大的不便。
其他提示。
- 要將更多用戶添加到已創建的htpasswd文件中,可以使用此命令
htpasswd -mb /home/krel/.htpasswd用戶密碼
如果設置了“需要用戶”而不是“需要有效用戶”,則必須添加新用戶,後跟前一個用戶,並用空格分隔。 例:
需要用戶Luke Anakin
- 使用用戶組
如果我們更願意或需要與以下網站上的小組合作而不是個人用戶,他們會詳細解釋,這是一篇很棒的文章。
http://www.juanfelipe.net/node/23
- 我們還可以設置另一種加密類型,例如:SHA
htpasswd -sb /home/krel/.htpasswd用戶密碼
這是在.htpasswd中如何反映SHA密碼註冊的圖像。 兩者都是“天行者”。
了解更多。
htpasswd--幫助
如果您想更深入地研究這個主題,RTFM總是不錯的選擇!
http://httpd.apache.org/docs/2.0/es/howto/auth.html
http://httpd.apache.org/docs/2.2/misc/password_encryptions.html
我還從格拉納達大學的頁面發現了這個PHP腳本,對創建htaccess和htpasswd生成器感到好奇。 我尚未將其付諸實踐,但我邀請您“明智地嘗試”。
如果有人感興趣,我會從此頁面獲得HTML模板。
http://www.templatemo.com/
希望您喜歡這個htpasswd演示文稿。
現在再次閱讀該帖子後,我意識到自己已經一團糟。 當我解釋站點配置中的內容時,在AuthUserFile中,我將/var/www/.pass/.htpasswd放在應為的位置:
/home/krel/.htpasswd。
在圖像中,它很好,但是它使我無所適從,這是因為我以前曾使用該路線撰寫過該文章,但是在最後一分鐘我更改了它,看來我可以糾正它。
我事先表示歉意。
鸚鵡螺的任何替代選擇?
您的要求我認為相反,但我仍然會回答您。
我相信使用Cryptkeeper可以保護目錄之類的東西。
老實說,如果我討厭侏儒是鸚鵡螺。 海豚(KDE)在保護,使用gpg進行加密等方面的功能正更加強大。
克雷爾(Krel),感謝您在此處帶來的完整教程,尤其是不是那麼常見的主題...
乾杯! ...
您好,一切順利,但是..當我關閉Chrome標籤並打開另一個標籤時,我寫下了地址,並且不要求輸入密碼...
誰說這不是浮華。
這正是我想要的,更好的解釋是不可能的
非常感謝。
的問候語
您好,非常感謝您提供的信息,尤其是在.htpasswd中添加多個用戶的部分。
上帝祝福你!
恭喜,這是一篇很好的文章,清晰易懂。 非常感謝
輸入用戶名和密碼時出現500錯誤
AuthType基本
AuthName“ Tocc tocc”
AuthUserFile /var/www/html/.pass/.htpasswd
需要用戶Akira
在不查看其他評論的情況下,發表評論對我來說真是太好了。
偉大的偉大作品
嗨,不錯的教程,但是“ htpasswd”可以替代嗎? 我問為什麼我使用linux mint 17.3,但沒有命令……我必須安裝它嗎?
好的,我知道了...我必須使用sudo apt-get install apache2-utils安裝它
您好,優秀的教程,我完全按照此處的指示進行了操作,唯一的是,它沒有執行第2點中指示的內容:
nano / etc / apache2 /網站可用/默認
它對我有用
納米/etc/apache2/sites-enabled/000-default.conf
問候,它對我不起作用🙁我的文件夾未出現在服務器上,即,我保護了/ var / 222 / html / content文件夾,並且當我從瀏覽器進入時,內容文件夾也未出現。 救命