- ประเด็นของปัญหาโพสนี้มีอยู่ว่า เราอัพไฟล์ขึ้น server debian โดยสร้าง virtual host ไว้ ให้คนอื่นสามารถมา download ไฟล์เหล่านี้ได้เลย
- แต่ลืมไปว่า มัน public เกินไป เลยอยากตั้งรหัส เมื่อจะเข้ามาเอาไฟล์ที่ พาธ url นั้น
- วิธีคือ กำหนดค่าให้ virtual host นั้น authen ด้วย user ที่สร้างด้วย htpasswd
- แก้ไข virtual host ใน /etc/apache2/sites-available เช่นไฟล์ default หรือ www.site.com ของเรา
- โดยเปลี่ยนค่าหรือเพิ่ม AuthConfig ของ AllowOverride หรือใส่ All ก็ได้เหมือนกัน
Alias /public "/var/www/sites/public/"
<Directory "/var/www/sites/public/">
Options Indexes MultiViews FollowSymLinks
#AllowOverride None
# AllowOverride AuthConfig
AllowOverride All
</Directory>Allow from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
- หรือเราไม่ต้องใส่ AllowOverride AuthConfig ก็ได้ แต่ต้องคอมเม้นหรือไม่ใช้ AllowOverride None ก็เป็นพอ คอนฟิกจะได้แบบนี้
Alias /public "/var/www/sites/public/"
<Directory "/var/www/sites/public/">
Options Indexes MultiViews FollowSymLinks
#AllowOverride None
</Directory>Allow from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
- จากนั้น restart sevice
$ sudo /etc/init.d/apache2 restartStep # 2: Create a password file with htpasswd
- สร้าง folder เก็บไฟล์ user:password ของเราที่จะใช้เข้า url ดังกล่าว
$ sudo mkdir -p /home/secure/
- จากนั้นทำการสร้างไฟล์เก็บ user ชื่อ vivek (แล้วแต่จะตั้ง) กด Enter จะมี prompt ให้เราใส่รหัส
$ sudo htpasswd -c /home/secure/apasswords vivek
- ทำการเปลี่ยน permission ให้ไฟล์ที่เก็บ user:password เรา ให้ user ที่ใช้เข้าเว็บ (www-data) สามารถอ่านไฟล์ที่เก็บ user:password ได้
# chown www-data:www-data /home/secure/apasswords
# chmod 0660 /home/secure/apasswords
- สร้าง folder ไซต์ของเรา
# mkdir -p /var/www/sites/public/
- เข้าไปที่ folder site เรา จากนั้นสร้างไฟล์ชื่อ .htaccess
# cd /var/www/sites/public/
# vi .htaccess
- โดยไฟล์ .htaccess จะมี content ประมาณด้านล่างนี้
AuthType BasicStep # 3: Test your configuration
AuthName "Restricted Access"
AuthUserFile /home/secure/apasswords
Require user vivek
เพิ่มเติม
- ในกรณีที่เราต้องการเพิ่ม user เข้าไปในไฟล์อีก เราสามารถใช้คำสั่งแบบเดิม แต่ไม่ต้องใส่ option -c เข้าไปด้วยเท่านั้นเอง
$ sudo htpasswd /home/secure/apasswords user
- หรือถ้าต้องการลบ user ในไฟล์นั้นก็ทำได้โดยใช้ option -D เข้าไป
$ sudo htpasswd -D /home/secure/apasswords userสภาพแวดล้อม
- Debian 6.0.1 64bit
- ในกรณีทำเสร็จแล้วใช้ไม่ได้ให้ตรวจสอบ error
# tailf -f /var/log/apache2/access.log
# tailf -f /var/log/apache2/error.log
No comments:
Post a Comment