Para sa maraming mga kadahilanan maaari itong maging napaka kapaki-pakinabang upang kontrolado ang pag-access sa ilang mga direktoryo sa isang web server o sa mga nilalaman lamang ng aming pahina o blog sa pamamagitan ng isang serbisyo sa pagpapatotoo batay sa username at password. Nagsasalita ako tungkol sa isang bagay tulad ng karaniwang window na lilitaw kapag nais naming magpasok ng isang website na may mga pinaghihigpitang serbisyo.
Mayroong maraming mga paraan upang makabuo ng mga bintana na may form ng pagpapatotoo ngunit ang isang nakawiwiling solusyon sa antas ng server ay ibinigay htpasswd. Ito ay isang utility na ang pagpapaandar ay ang pag-iimbak ng mga password sa isang naka-encrypt na form upang magamit ng Apache sa mga serbisyo sa pagpapatotoo. Papayagan kami ng paggamit nito na magpakita ng ilang mga direktoryo o file sa pamamagitan ng http lamang sa mga kinilalang gumagamit at nang hindi kinakailangang malayang magagamit sa lahat.
Nauunawaan ko na ito ay hindi isang napakadulas na paksa ngunit maaari itong maging kapaki-pakinabang sa ilan. Upang hindi mapatay ang mga ito ng inip, gagamit ako ng mga imahe upang gawing mas hindi itoaktibo.
Mga dating pagsasaalang-alang: Gagamitin ko Ubuntu Server 12.04.1 y Apache 2.2.22 sa isang kontroladong kapaligiran.
Nagsisimula na kami
Tulad ng nalalaman na ng ilan sa inyo, bilang default ang mga magagamit na mga site ng Apache ay nakaimbak sa direktoryo / var / www / at para sa halimbawang ito ay lilikha ako ng isang direktoryo na may isang template ng HTML at subukang protektahan ito ng .htpasswd.
Ang direktoryo upang maprotektahan ay / var / www / halimbawa / kung saan ko inilagay ang susunod na pahina.
1. Lilikha kami ng .htpasswd.
Ang lugar kung saan ito matatagpuan ay may kaugnayang kahalagahan at ang paglalagay nito sa labas ng isang pampublikong direktoryo ay maaaring higit sa inirerekumenda. Sa aking kaso ilalagay ko ito sa aking personal na folder (na hindi isang pampublikong direktoryo ng Apache) at may pangalan na .htpasswd (Isang priori hindi kinakailangan na tawagan ito sa ganoong paraan, ngunit ang nakatago ay laging mabuti).
Gamit ang sumusunod na utos nilikha ko ang .htpasswd file para sa isang web user na pinangalanan ko bilang: "Luke".
# htpasswd -c /home/krel/.htpasswd Luke
Hihilingin sa amin na ibigay ang password nang dalawang beses, sa aking kaso inilagay ko ang "skywalker" (nang walang mga quote). Sa isang hindi kontroladong kapaligiran dapat tayong magtatag ng mga mas malalakas na password. Ang default na naka-encrypt sa Linux ay MD5 ngunit sa Unix ito ay isang karaniwang pagpapatupad ng crypt () at para sa mga password na may mas mababa sa 8 mga character maaari itong maging mahina. Ngayon mayroon akong pag-aalinlangan kung pareho ito sa BSD.
Ang istraktura ay ang istrakturang ito:
- -c → upang likhain ang file
- /home/krel/.htpasswd → absolute path ng file.
- Luke → ang username (maaari itong maging anumang nais mo)
Katulad nito, hindi ko pinipilit ang sinuman na gamitin ang terminal kapag may mga serbisyo sa Internet para dito:
http://www.web2generators.com/apache/htpasswd_generator
http://www.htaccesstools.com/htpasswd-generator/
Kinokopya namin ang resulta sa isang text file at may pangalan na .htpasswd kung nais mo. Tungkol sa pamamaraang ito, huwag ihinto ang pagbabasa ng kung ano ang aking puna sa susunod na talata.
Sa aming kaso makikita namin ang file na nabuo kung saan namin inaasahan ang mga ito /home/krel/.htpasswd. Sa imahe ay na-highlight ko na sa pamamaraang ito ang file ay kabilang sa pangkat ng apache at gumagamit, na sa Ubuntu ay tinatawag na www-data. Mahalaga ito sapagkat kung nakagawa kami ng .htpasswd sa anumang ibang paraan, dapat naming tiyakin na mayroon itong 644 na mga pahintulot.
Kaya, ngayon makikita natin kung ano ang kanilang lakas ng loob:
Tulad ng nakikita mo, mayroong gumagamit (Luke) ngunit naka-encrypt ang password.
Sa ganitong paraan nilikha na namin at dinisenyo .htpasswd para sa gumagamit na si Luke, sa huli ito ay hindi hihigit sa isang lalagyan para sa password. Ang "Lahat na may isang utos" ay magiging isang magandang catchphrase.
2. I-configure ang Apache upang magamit at payagan ang serbisyong iyon sa site.
# nano /etc/apache2/sites-available/default
Kung mayroon kang maraming mga host, dapat silang gumana sa bawat isa sa kanila, sa aking kaso mayroon lamang ako ng isa na dumarating bilang default. Huwag kalimutan na palaging mabuti na gumawa ng isang backup ng file na iyon.
Ang file na iyon ay may default na istraktura:
ServerAdmin webmaster @ localhost
..................
..................
Tiyak na sa loob ng mga heading ng Virtualhost na ang paggamit ng .htpasswd ay matutukoy upang ma-access ang isang tiyak na direktoryo. Ginagawa namin ito tulad ng paglabas ng imahe sa ibaba at naaangkop sa aming halimbawa:
Mabuti Ipinapaliwanag ko ang mga linya:
Kailangan mong ilagay ang direktoryo upang maprotektahan.
AuthType Basic
Ito ay ang uri ng gumagamit at password na nakipag-ayos sa browser, sa kasong ito ito ay Pangunahing, nang walang pag-encrypt.
Mayroong isa pang uri ng nakipag-ayos: Digest, ang isang ito ang naka-encrypt ng username at password, gayunpaman, ang huling salita ay ang browser kung sinusuportahan nito ang nasabing serbisyo. Maaaring sabihin ang Digest na ito ay isang medyo mas matatag na pagpapatupad laban sa mga sniffer. Inaanyayahan kita na tuklasin ito.
AuthName "Patok sa pintuan bago pumasok."
Ito ay isang mensahe na lilitaw sa gumagamit sa browser na may form sa pag-login at maaari itong maging ang nais namin.
AuthUserFile /var/www/.pass/.htpasswd
I-path ang file na .htpasswd. Para sa kadahilanang iyon ay sinasabi ko na hindi kinakailangan na pangalanan ito .htpasswd, simpleng paglalagay ng landas ay gagana ang pareho.
Mangailangan ang wastong-user
Ang linyang iyon ay idinisenyo para sa maraming mga gumagamit na may isinapersonal na mga password. Kung sakaling ito ay isang solong gumagamit, maaari itong ma-buod bilang sumusunod na pagkakaiba-iba.
Atasan ang gumagamit el_que_sea
Sa aking halimbawa ay maaaring: Hilingin ang gumagamit na si Luke
At sa wakas ay nakapaloob namin ang lahat
I-restart namin ang apache:
# service apache2 restart
Subukan Natin.
Kung hindi namin napatunayan nang tama makakakuha kami ng isang Error 401.
Sa kabaligtaran, kung ilalagay namin ang tamang username at password, papayagan kaming pumasa nang walang pangunahing abala.
Karagdagang mga tip.
- Upang magdagdag ng higit pang mga gumagamit sa isang nilikha na htpasswd file na maaari mong gamitin ang utos na ito
htpasswd -mb /home/krel/.htpasswd User Password
Kung itinakda mo ang "Hilingin ang gumagamit" at hindi "Hilingin ang wastong-gumagamit" dapat mong idagdag ang bagong gumagamit na sinusundan ng naunang isa at pinaghiwalay ng isang puwang. Halimbawa:
Atasan ang gumagamit na si Luke Anakin
- Gumamit ng mga pangkat ng gumagamit
Kung sa halip na mga indibidwal na gumagamit mas gusto namin o kailangang makipagtulungan sa mga pangkat sa sumusunod na website ipinapaliwanag nila ito nang detalyado at ito ay isang mahusay na artikulo.
http://www.juanfelipe.net/node/23
- Maaari rin kaming magtakda ng isa pang uri ng pag-encrypt, halimbawa: SHA
htpasswd -sb /home/krel/.htpasswd User Password
Narito ang isang imahe kung paano makikita ang pagpaparehistro ng isang SHA password sa .htpasswd. Sa kapwa ito ay "skywalker".
Matuto nang higit pa.
htpasswd - -help
Kung nais mong mapunta nang mas malalim sa paksang ito, ang RTFM ay palaging mabuti!
http://httpd.apache.org/docs/2.0/es/howto/auth.html
http://httpd.apache.org/docs/2.2/misc/password_encryptions.html
Natagpuan ko rin ang PHP script na ito na kakaiba mula sa pahina ng Unibersidad ng Granada upang lumikha ng isang htaccess at htpasswd generator. Hindi ko ito nagawang isagawa ngunit inaanyayahan kita na "mag-pry sa katalinuhan."
Ang template ng HTML na nakuha ko mula sa pahinang ito kung sakaling may interesado.
http://www.templatemo.com/
Inaasahan kong nagustuhan mo ang pagtatanghal na ito ng htpasswd.
Ngayon sa pagbabasa muli ng post napagtanto ko na gumawa ako ng isang maliit na gulo. Kapag ipinaliwanag ko ang mga linya sa pagsasaayos ng site, sa AuthUserFile inilalagay ko /var/www/.pass/.htpasswd kung kailan dapat:
/home/krel/.htpasswd.
Sa imahe ay mabuti ito ngunit doon ito nakatakas sa akin, dati ko nang ginawa ang artikulo sa rutang iyon, ngunit sa huling minuto ay binago ko ito at tila maaari kong iwasto ito.
Humihingi muna ako ng paumanhin.
Anumang alternatibo para sa nautilus ??
Kung ano ang itatanong mo sa tingin ko ay kabaligtaran ngunit sinasagot din kita.
Naniniwala ako sa Cryptkeeper na magiging kapaki-pakinabang upang protektahan ang mga direktoryo at mga bagay na tulad nito.
Kung matapat ako kung ang isang bagay na kinamumuhian ko tungkol sa gnome ay nautilus. Ang Dolphin (KDE) ay mas malakas na tiyak para sa mga bagay na ito ng pagprotekta, pag-encrypt sa gpg, atbp.
Krel, salamat sa kumpletong mga tutorial na dinala mo dito at lalo na sa hindi gaanong pangkaraniwang mga paksa ...
Cheers !!! ...
Kumusta ang lahat ay naging maayos ngunit .. nang isara ko ang tab na chrome at magbukas ng isa pa, isusulat ko ang address at hindi ito humihingi ng password ...
sinong nagsabing hindi ito marangya.
Ito lang ang hinahanap ko, at mas mahusay na ipinaliwanag imposible
Maraming salamat.
isang pagbati
Kumusta, maraming salamat sa impormasyon, lalo na ang bahagi ng pagdaragdag ng maraming mga gumagamit sa .htpasswd.
Pagpalain ka ng Diyos!
Binabati kita, ito ay isang napakahusay na artikulo, malinaw at natutunaw. Maraming salamat
Nagbibigay ito sa akin ng 500 error kapag nagpasok ako ng username at password
AuthType Basic
AuthName "Tocc tocc"
AuthUserFile /var/www/html/.pass/.htpasswd
Hilingin ang gumagamit na si Akira
Gaano kahusay ang nangyari sa akin para sa pagbibigay ng puna nang hindi tinitingnan ang iba pang mga puna perodna.
Gumagawa ng mahusay na mahusay na post
Kumusta, mahusay na tutorial, ngunit mayroong isang kahalili sa "htpasswd"? Nagtanong ako dahil gumagamit ako ng linux mint 17.3 at wala akong utos ... kailangan ko bang i-install ito?
Ok, naisip ko ito ... Kailangan kong i-install ito sa sudo apt-get install apache2-utils
Kumusta, mahusay na tutorial, ginawa ko ito nang eksakto tulad ng ipinahiwatig dito, ang tanging bagay ay sa halip na ipatupad kung ano ang ipinahiwatig sa point 2:
nano / etc / apache2 / sites-available / default
Gumana ito para sa akin
nano /etc/apache2/site-enified/000-default.conf
Pagbati, hindi ito gagana para sa akin 🙁 ang aking folder ay hindi lilitaw sa aking server, iyon ay, protektado ko ang aking / var / 222 / html / folder ng nilalaman, at kapag ipinasok ko mula sa browser ang folder ng nilalaman ay hindi lilitaw. Tulong