การเซ็ต Apache ให้มีการถาม User และ Password เมื่อเข้าเว็บ

เว็บเพจบางหน้าต้องการระบบความปลอดภัยให้มีการถาม Username และ Password ก่อนที่จะเข้าเว็บได้  ความสามารถแบบนี้สามารถทำได้บน Apache Web Server ซึ่งมีขั้นตอนในการทำดังต่อไปนี้ :

1. การสร้างผู้ใช้และกำหนดรหัสผ่านโดยใช้โปรแกรม htpasswd ซึ่งโปรแกรมนี้จะมาพร้อมกับการติดตั้ง Apache ซึ่งจะอยู่ที่ /usr/bin โดยการสร้างผู้ใช้และกำหนดรหัสผ่านให้ใช้คำสั่งดังนี้ :

htpasswd  -c  <Filename>  <ผู้ใช้>                //สำหรับการสร้างผู้ใช้คนแรก
htpasswd  <Filename>  <ผู้ใช้>                    //สำหรับผู้ใช้คนต่อไป

ตัวอย่างเช่นต้องการให้
user ที่ชื่อ sormchai และ somsak สามารถเข้าเว็บได้ก็ให้ไปที่ command prompt แล้วป้อนคำสั่งดังนี้

#htpasswd -c /etc/htuser somchai
New password:
Re-type new password:
Adding password for user somchai

#htpasswd /etc/htuser somsak
New password:
Re-type new password:
Adding password for user somsak

จากข้างบนนี้เป็นการสร้างไฟล์ /etc/htuser สำหรับใช้เก็บ user ของโปรแกรม htpasswd (จะตั้งชื่อไฟล์เป็นชื่ออื่นก็ได้ครับ)
และต้องกำหนดคุณสมบัติของไฟล์ /etc/htuser ให้สามารถอ่านและ execute ได้ดังนี้

#chmod 605 /etc/htuser

ในกรณีที่มีผู้ใช้หลายคนก็สามารถจะสร้างกลุ่มผู้ใช้ทีคล้ายกับไฟล์ /etc/group เพื่อระบุว่าผู้ใช้คนไหนอยู่กลุ่มไหนนั่นเอง  การสร้างกลุ่มผู้ใช้เพียงแต่สร้างไฟล์ข้อความที่มีรูปแบบดังนี้

< ชื่อกลุ่ม > : < สมาชิก 1 > <สมาชิก 2 > เช่นอาจจะเป็นดังนี้

websecure:       somsak, somchai, somsri
Other:                   guest

2.การปรับค่าไดเร็คตีฟ ให้เข้าไปเพิ่ม directory ในไฟล์คอนฟิกของ Apache คือที่ไฟล์ /etc/httpd/conf/httpd.conf เพื่อกำหนด ผู้ใช้/กลุ่ม และตำแหน่งของเว็บเพจที่จะให้ถาม user และ password โดยตัวอย่างต่อไปนี้เป็นการระบุชื่อ user โดยตรง ( Require user) :

<Directory "var/www/html/phpmyadmin">
  AllowOveride None
  AuthUserFile /etc/htuser
  AuthName "phpmyadmin"
  AuthType Basic
  Require user somchai
  Require user somsak
</Directory>

จากข้างบนนี้เป็นการกำหนดให้ไดเร็คทอรี่
/var/www/html/phpmyadmin ป็น directory รือเว็บเพจที่ต้องมีการป้อน username ละ password ่อนถึงจะเข้าไปดูได้  โดย user ี่กำหนดมีสองคนคือ somchai ับ somsak

และถ้าต้องการระบุผู้ใช้เป็นกลุ่ม
(Require group) ก็ให้เพิ่มบรรทัดที่เป็น  AuthGroupFile  เข้าไป และเปลี่ยน Require user เป็น Require group ดังนี้ :

<Directory "var/www/html/phpmyadmin">
  AllowOveride None
  AuthUserFile /etc/htuser
  AuthGroupFile /etc/htgroup
  AuthName "phpmyadmin"
  AuthType Basic
  Require group websecure 
</Directory>

สุดท้ายอย่าลืม
restart httpd (Apache) นะครับ