การเซ็ต Password Protect Directory ใน Apache

การเซ็ต Password Protect Directory ใน Apache

การกำหนดสิทธิ์การเข้าถึงเว็บไซต์ของเราในบาง Directory เราสามารถเซ็ตได้ใน Config File ของ Apache แล้วก็สร้างไฟล์เก็บข้อมูล Password ผมมีวิธีเซ็ตง่ายๆ ตาม Step ดังนี้

ก่อนอื่นสร้างไฟล์เก็บ Username Password ของเรา โดยจะใช้คำสั่ง htpasswd ที่มีอยู่แล้วใน linux หรือ unix อื่นๆ วิธีสร้างไฟล์ขึ้นมาดังนี้

#htpasswd -c /etc/httpd/.webpasswd somchai
ระบบจะให้เรากำหนด Password เราก็กำหนดตาม และเมื่อจะเพิ่ม User ก็ใช้คำสั่ง

#htpasswd /etc/httpd/.webpasswd sompong
จะเห็นว่าไม่มี -c เพราะถ้า -c คือการ create file นั้นเอง ส่วนไฟล์ .webpasswd เราสามารถตั้งชื่อเป็นอะไรก็ได้และวางที่ไหนก็ได้

เสร็จแล้ว กำหนดสิทธิ์ของไฟล์ .webpasswd ดังนี้
#chmod 604 /etc/httpd/.webpasswd

หลังจากได้ไฟล์เก็บ username password แล้วก็เข้าไปแก้ไข httpd.conf ใน /etc/httpd/conf/httpd.conf
โดยไปในส่วนของ [Directory][/Directory] ( เปลี่ยนเครื่องหมาย [ เป็น < และเปลี่ยนเครื่องหมาย ] เป้น > ) แล้วเขียนเพิ่มดังนี้

[Directory "/var/www/html/private"]
AllowOverride None
AuthUserFile /etc/httpd/.webpasswd
AuthName "Private Folder"
AuthType Basic
Require user somchai
Require user sompong
[/Directory]
( เปลี่ยนเครื่องหมาย [ เป็น < และเปลี่ยนเครื่องหมาย ] เป้น > )

จาก config file คืออนุญาติให้ user somchai และ sompong เข้าได้

เสร็จแล้วตรวจสอบ httpd.conf ว่าเราเขียนถูกต้องหรือไม่ด้วยคำสั่ง
#service httpd configtest
ถ้าหากมีปัญหา ระบบจะรายงานบรรทัดที่ผิดพลาด แต่ถ้าไม่มีปัญหาระบบจะแจ้ง OK
เมื่อเรียบร้อยแล้ว ให้ Restart ใหม่ดังนี้
#service httpd restart

แค่นี้ครับ เรียบร้อย ลองเปิดเว็บเข้า Directory ที่เรา Protect ไว้ดูครับ ถ้าถูกต้องจะมี Popup เด้งขึ้นมาให้ใส่ Username และ Password เราก็ใส่ user ที่เรากำหนดให้อนุญาติเข้าได้ หากทำแล้วยังไม่ได้ ต้องการดู Error ว่าเป็นเพราะอะไร ให้ดูได้ด้วยคำสั่ง

#tail -f /var/log/httpd/error_log


ปล. ตัว apache ในตัวอย่างนี้ ให้ท่านปรับเปลี่ยนไปตามที่ท่านได้ทำการติดตั้งเอาไว้นะครับ ไฟล์ httpd.conf อาจจะมีที่อยู่ไม่เหมือนกันนะครับ
http://educms.pn.psu.ac.th/edu-blog/cat/index/5/