การเซ็ต Password Protect Directory ใน Apache
การเซ็ต Password Protect Directory ใน Apache
กรกฎาคม 12, 2006, 9:13 am
การกำหนดสิทธิ์การเข้าถึงเว็บไซต์ของเราในบาง 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 อาจจะมีที่อยู่ไม่เหมือนกันนะครับ
ก่อนอื่นสร้างไฟล์เก็บ 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 อาจจะมีที่อยู่ไม่เหมือนกันนะครับ