htaccess مخفف عبارت hypertext access، فایل تنظیمات دایرکتوری در آپاچی به صورت پیش فرض هست. وقتی روی وب سرور بخواهیم یک دایرکتوری خاص را امن کنیم، می توانیم از .htaccess استفاده می کنیم. رایج ترین روش هم گذاشتن احراز هویت برای کاربر روی برخی از صفحه ها هست.
در این مقاله می خواهم به شما نشان دهم چطور تنظیمات احراز هویت در آپاچی را انجام دهید. من این تنظیمات را روی سرور دبیان انجام داده ام. همچنین باید با یک ابزار کامند لاین به سرورمان وصل شویم. من از putty برای این کار استفاده می کنم.
نکته: لطفا با دسترسی root، دستور ها را اجرا کنید.
نحوه ی تنظیم احراز هویت در آپاچی با استفاده از .htaccess
1- یک فایل .htaccess در پوشه ای که می خواهیم، ایجاد می کنیم. با دستور زیر، این فایل را ایجاد کنید:
touch .htaccess
با دستور زیر فایل را باز می کنیم:
nano .htaccess
سپس محتوای زیر را در آن قرار داده (به جای مقدار /opt/web/، مسیر دایرکتوری خودتان را قرار دهید.) و ذخیره کنید:
AuthType Basic
AuthName "Secure Content"
AuthUserFile /opt/web/.htpasswd
require valid-user
- AuthType: نوع احراز هویت را مشخص می کند. Basic به این معنی است که هیچ رمزگذاری وجود ندارد و هش رمز عبور به صورت متن واضح یا همان clear text ارسال می شود.
- AuthName: محتوایی است که با درخواست نام کاربری و رمز عبور در صفحه ی وب نمایش داده می شود.
- AuthUserFile: فایلی است که اطلاعات کاربری، کاربر را ذخیره می کند.
- require valid-user: نشان می دهد که فقط درخواست های تایید شده، می توانند صفحه را بارگیری کنند.
2- حالا باید کاربر را در htpasswd که در فایل htaccess تعریف کردیم، ایجاد کنیم. می توانید کاربر و رمز عبور را به صورت متن ساده یا رمزگذاری شده md5 اضافه کنید.
افزودن رمز عبور در قالب متن ساده:
# htpasswd -c /opt/web/.htpasswd myuser
افزودن رمز عبور با فرمت md5 crypt
# htpasswd -cm /opt/web/.htpasswd myuser
- -c: فقط برای اولین بار در هنگام ایجاد فایل .htpasswd استفاده می شود. اگر برای بار دوم از آن استفاده کنید، فایل موجود را حذف می کند و یک فایل جدید را دوباره ایجاد می کند.
- -m : برای ذخیره رمز عبور در فرمت md5 استفاده می شود.
با وارد کردن این دستور از شما دو بار می خواهد که پسورد مورد نظر خود را وارد کنید:
برای این که مطمئن شوید کاربر ساخته شده است دستور زیر را وارد کنید:
# nano .htpasswd
محتوایی مانند تصویر زیر مشاهده خواهید کرد که کاربر myuser با پسورد آن نمایش داده می شود:
3- نوبت به پیکربندی Apache می رسد تا به احراز هویت .htaccess اجازه دهد.
به طور پیش فرض آپاچی اجازه ی استفاده از htaccess. را نمی دهد، بنابراین ما باید تنظیم های زیر را در فایل httpd.conf سرورمان، به روزرسانی کنیم تا احراز هویت مبتنی بر htaccess. از متغیر Allowoverride، برای تعریف این که .htaccess توسط apache خوانده می شود یا خیر، استفاده می کنیم.
From: AllowOverride none
To: AllowOverride AuthConfig
تنظیم AuthConfig فقط به احراز هویت موجود در htaccess. اجازه می دهد، بقیه تنظیم ها (در صورت وجود) نادیده گرفته می شود. برای اجازه دادن به همه ی تنظیم های تعریف شده در فایل htaccess. از "All" به جای AuthConfig استفاده کنید.
دقت کنید که ممکن است در سرور شما فایل httpd.conf وجود نداشته و به جای آن فایل apache2.conf وجود داشته باشد. در مسیر /etc/apache2 می توانید آن را پیدا کنید. می توانید دستور ls را وارد کرده تا فایل کانفیگ خود را پیدا کنید. برای مثال تصویر زیر لیست فایل ها در مسیر سرور ما را نشان می دهد و همان طور که مشاهده می کنید فایل کانفیگ ما apache2.conf است.
دستور زیر را وارد کنید تا فایل کانفیگ باز شود:
# nano apache2.conf
سپس به دنبال بخشی باشید که عبارت AllowOverride در آن جا نوشته شده است. دایرکتوری های متفاوتی ممکن است وجود داشته باشد، شما برای پوشه ی خود، کد زیر را وارد و ذخیره کنید:
<Directory /opt/web/>
Options Indexes FollowSymLinks
AllowOverride All
Order deny,allow
Require all granted
</Directory>
نتیجه مشابه تصویر زیر خواهد شد. دایرکتوری ما /opt/web است.
4- در مرحله ی آخر، آپاچی را دوباره راه اندازی (ریستارت) و تنظیم ها را تست می کنیم. فراموش نکنید که بعد از ایجاد هر نوع تغییر در فایل پیکربندی آپاچی (httpd.conf یا apache2.conf)، باید وب سرویس آپاچی را دوباره، راه اندازی کنید. برای ما که روی اوبونتو/دبیان استفاده کردیم کد زیر را اجرا می کنیم:
# service apache2 restart
or
# /etc/init.d/apache2 restart
حال باید تست کنیم که آیا به درستی انجام شده است یا خیر. برای این کار سعی کنید یک فایل در پوشه ی وب سایت خودتان را باز کنید، خواهید دید که از شما نام کاربری و پسورد می خواهد. می توانید این کار را کامند لاین با دستور nano انجام دهید یا یک صفحه از وب سایت را باز کنید مانند شکل زیر:
بسیار خب، کار ما به اتمام رسیده است. امیدوارم این مقاله برایتان مفید باشد.