Birçok nedenden dolayı, bir web sunucusundaki belirli dizinlere veya sadece sayfamızın veya blogumuzun içeriğine, kullanıcı adı ve şifreye dayalı bir kimlik doğrulama hizmeti aracılığıyla kontrollü erişim sağlamak çok yararlı olabilir. Kısıtlı hizmetler içeren bir web sitesine girmek istediğimizde görünen tipik pencere gibi bir şeyden bahsediyorum.
Kimlik doğrulama formuyla pencere oluşturmanın birkaç yolu vardır, ancak sunucu düzeyinde ilginç bir çözüm sağlanmıştır. htpasswd. Apache tarafından kimlik doğrulama hizmetlerinde kullanılmak üzere şifreleri şifrelenmiş bir biçimde saklamak olan bir yardımcı programdır. Kullanımı, belirli dizinleri veya dosyaları http aracılığıyla yalnızca tanımlanmış kullanıcılara ve herkesin ücretsiz olarak erişmesine gerek kalmadan göstermemize izin verir.
Çok gösterişli bir konu olmadığını anlıyorum ama bazıları için faydalı olabilir. Onları can sıkıntısı ile öldürmemek için görüntüleri daha didaktik hale getirmek için kullanacağım.
Önceki hususlar: Kullanacağım Ubuntu Sunucusu 12.04.1 y Apache 2.2.22 kontrollü bir ortamda.
Başlıyoruz.
Bazılarının zaten bildiği gibi, varsayılan olarak mevcut Apache siteleri dizinde saklanır / Var / www / ve bu örnek için HTML şablonuyla bir dizin oluşturacağım ve onu .htpasswd ile korumaya çalışacağım.
Korunacak dizin / var / www / örnek / sonraki sayfayı yerleştirdiğim yer.
1. .htpasswd dosyasını oluşturacağız.
Yerleştirileceği yer önemli ve onu genel bir dizinin dışına yerleştirmek tavsiye edilenden daha fazla olabilir. Benim durumumda, kişisel klasörüme (genel bir Apache dizini olmayan) ve .htpasswd adıyla yerleştireceğim. (Önceden onu böyle adlandırmak gerekli değildir, ancak gizli olan her zaman iyidir).
Aşağıdaki komutla "Luke" adını verdiğim bir web kullanıcısı için .htpasswd dosyasını oluşturuyorum.
# htpasswd -c /home/krel/.htpasswd Luke
Parolayı iki kez sağlamamızı isteyecek, benim durumumda "skywalker" (tırnak işaretleri olmadan) koydum. Kontrolsüz bir ortamda daha güçlü şifreler oluşturmalıyız. Linux'ta varsayılan şifreleme MD5'tir, ancak Unix'te standart bir crypt () uygulamasıdır ve 8 karakterden az şifreler için savunmasız olabilir. Şimdi BSD'de de aynı olup olmadığından şüphem var.
- -c → dosyayı oluşturmak için
- /home/krel/.htpasswd → dosyanın mutlak yolu.
- Luke → kullanıcı adı (istediğiniz her şey olabilir)
Benzer şekilde, internette bunun için servisler varken kimseyi terminali kullanmaya zorlamıyorum:
http://www.web2generators.com/apache/htpasswd_generator
http://www.htaccesstools.com/htpasswd-generator/
Sonucu bir metin dosyasına ve isterseniz .htpasswd adıyla kopyalıyoruz. Bu yöntemle ilgili olarak, bir sonraki paragrafta yorumladığımı okumayı bırakmayın.
Bizim durumumuzda dosyanın /home/krel/.htpasswd beklediğimiz yerde oluşturulduğunu göreceğiz. Görüntüde, bu yöntemle dosyanın, Ubuntu'da www-data olarak adlandırılan apache kullanıcısına ve grubuna ait olduğunu vurguladım. Bu önemlidir, çünkü .htpasswd'yi başka bir şekilde oluşturduysak, 644 izne sahip olduğundan emin olmalıyız.
Şimdi cesaretlerinin nasıl olduğunu göreceğiz:
Gördüğünüz gibi, kullanıcı var (Luke) ama şifre şifreli.
Bu şekilde, Luke kullanıcısı için .htpasswd'yi zaten oluşturduk ve tasarladık, sonuçta parola için bir konteynerden başka bir şey değil. "Hepsi tek bir komutla" iyi bir slogan olacaktır.
2. Apache'yi bu hizmeti sitede kullanacak ve izin verecek şekilde yapılandırın.
# nano /etc/apache2/sites-available/default
Birkaç ana makineniz varsa, bunların her biri üzerinde çalışması gerekir, benim durumumda yalnızca varsayılan olarak gelen bir tane sahibim. Bu dosyanın bir yedeğini almanın her zaman iyi olduğunu unutmayın.
Bu dosya varsayılan yapıya sahiptir:
ServerAdmin webmaster @ localhost
..................
..................
Belirli bir dizine erişmek için .htpasswd kullanımının belirtileceği tam olarak Virtualhost başlıkları içindedir. Bunu aşağıdaki resim göründüğü ve örneğimize uygun şekilde yapıyoruz:
Korumak için dizini koymanız gerekir.
AuthType Basic
Tarayıcı ile görüşülen kullanıcı ve parola türüdür, bu durumda şifreleme olmadan Temeldir.
Başka bir müzakere türü daha var: Özet, bu kullanıcı adı ve parolayı şifreler, ancak son söz, tarayıcının söz konusu hizmeti destekleyip desteklemediğine dairdir. Özet, koklayıcılara karşı biraz daha sağlam bir uygulama olduğu söylenebilir. Sizi bu konuyu araştırmaya davet ediyorum.
AuthName "Girmeden önce kapıyı çalın."
Kullanıcıya giriş formu ile birlikte tarayıcıda görünecek bir mesajdır ve istediğimiz olabilir.
AuthUserFile /var/www/.pass/.htpasswd
.Htpasswd dosyasının yolu. Bu nedenle, .htpasswd olarak adlandırmanın bile gerekli olmadığını söylüyorum, basitçe yolu koymak aynı şekilde çalışacaktır.
Require valid-user
Bu satır, kişiselleştirilmiş şifreleri olan birden çok kullanıcı için tasarlanmıştır. Tek kullanıcı olması durumunda aşağıdaki varyant olarak özetlenebilir.
Kullanıcı el_que_sea gerektir
Benim örneğimde şunlar olabilir: Kullanıcı Luke gerektir
Ve nihayet her şeyi içine alıyoruz
Apache'yi yeniden başlatıyoruz:
# service apache2 restart
Hadi deneyelim.
Doğru şekilde kimlik doğrulaması yapmazsak 401 Hatası alırız.
Diğer taraftan, doğru kullanıcı adı ve şifreyi girersek, büyük bir rahatsızlık vermeden geçmemize izin verirdi.
Ek ipuçları.
- Önceden oluşturulmuş bir htpasswd dosyasına daha fazla kullanıcı eklemek için bu komutu kullanabilirsiniz
htpasswd -mb /home/krel/.htpasswd Kullanıcı Şifresi
"Kullanıcı gerektir" seçeneğini belirlediyseniz ve "Geçerli kullanıcı gerektir" ayarını yapmadıysanız, yeni kullanıcıyı ve ardından bir boşlukla ayırarak öncekini eklemelisiniz. Misal:
Kullanıcı Luke Anakin gerektir
- Kullanıcı gruplarını kullanın
Bireysel kullanıcılar yerine aşağıdaki web sitesinde gruplarla çalışmayı tercih edersek veya buna ihtiyaç duyarsak, bunu ayrıntılı olarak açıklarlar ve bu mükemmel bir makale.
http://www.juanfelipe.net/node/23
- Ayrıca başka bir şifreleme türü de ayarlayabiliriz, örneğin: SHA
htpasswd -sb /home/krel/.htpasswd Kullanıcı Şifresi
Burada bir SHA şifresinin kaydının .htpasswd'ye nasıl yansıtılacağına dair bir resim var. Her ikisinde de "skywalker" idi.
Daha fazla bilgi edinin.
htpasswd - -help
Bu konuda daha derinlere inmek istiyorsanız, RTFM her zaman iyidir!
http://httpd.apache.org/docs/2.0/es/howto/auth.html
http://httpd.apache.org/docs/2.2/misc/password_encryptions.html
Bu PHP betiğini Granada Üniversitesi sayfasından htaccess ve htpasswd oluşturucu oluşturmak için meraklı buldum. Uygulamaya koyamadım ama sizi "akılla gözetlemeye" davet ediyorum.
Birinin ilgilenmesi durumunda bu sayfadan aldığım HTML şablonu.
http://www.templatemo.com/
Umarım bu htpasswd sunumunu beğenmişsinizdir.
Şimdi yazıyı tekrar okurken küçük bir karışıklık yaptığımı fark ettim. Site yapılandırmasındaki satırları açıkladığımda, AuthUserFile'a /var/www/.pass/.htpasswd'yi ne zaman koymalıyım:
/home/krel/.htpasswd.
Görselde iyi ama orada benden kaçtı, makaleyi daha önce o rota ile yapmıştım ama son dakikada değiştirdim ve düzeltebilirim gibi görünüyor.
Şimdiden özür dilerim.
Nautilus için herhangi bir alternatif?
Sanırım sorduğun şey ters gidiyor ama yine de sana cevap veriyorum.
Cryptkeeper ile dizinleri ve buna benzer şeyleri korumanın faydalı olacağına inanıyorum.
Dürüst olursam, cücelerden nefret ettiğim bir şey nautilus ise. Dolphin (KDE), bu tür koruma, gpg ile şifreleme vb. Şeyler için çok daha güçlüdür.
Krel, buraya getirdiğin tüm dersler için ve özellikle çok yaygın konular olmadığın için teşekkürler ...
Şerefe !!! ...
Merhaba her şey yolunda gitti ama .. krom sekmesini kapatıp başka bir tane açtığımda adresi yazıyorum ve şifre sormuyor ...
gösterişli olmadığını kim söyledi.
Tam aradığım şeydi ve daha iyi açıklanması imkansız
çok teşekkür ederim.
Bir tebrik
Merhaba, bilgiler için çok teşekkür ederim, özellikle de .htpasswd'ye birden fazla kullanıcı ekleme kısmı.
Çok yaşa!
Tebrikler, çok iyi bir makale, net ve sindirilebilir. Çok teşekkür ederim
Kullanıcı adı ve şifreyi girdiğimde bana 500 hata veriyor
AuthType Basic
Kimlik Doğrulama Adı "Tocc tocc"
AuthUserFile /var/www/html/.pass/.htpasswd
Kullanıcı Akira gerektir
Diğer yorumlara bakmadan yorum yaptığım için ne kadar harika oluyor perodna.
Harika harika gönderi çalışıyor
Merhaba, iyi öğretici, ancak "htpasswd" ye bir alternatif var mı? Neden linux mint 17.3 kullandığımı soruyorum ve komuta sahip değilim… onu kurmak zorunda mıyım?
Tamam, anladım… sudo apt-get install apache2-utils ile yüklemem gerekiyordu
Merhaba, mükemmel öğretici, tam olarak burada belirtildiği gibi yaptım, tek şey 2. maddede belirtilenleri yürütmek yerine:
nano / etc / apache2 / sites-available / default
Benim için çalıştı
nano /etc/apache2/sites-etkin/000-default.conf
Selamlar, benim için çalışmıyor 🙁 klasörüm sunucumda görünmüyor, yani / var / 222 / html / içerik klasörümü korudum ve tarayıcıdan girdiğimde içerik klasörü görünmüyor. Yardım