403 ห้ามใช้ไฟล์ที่ / var / www / html เมื่อพยายามดาวน์โหลด?


4

ฉันกำลังพยายามคัดลอกไฟล์จากเซิร์ฟเวอร์ของฉันไปยังคอมพิวเตอร์เดสก์ท็อปของฉัน ฉันวางมันใน/var/www/html(ที่หน้าเว็บที่มี) 403 Forbiddenและเมื่อฉันพยายามที่จะดาวน์โหลดได้ที่ฉันได้รับ ฉันลองchmod 777กับไฟล์แล้ว แต่ก็ไม่สามารถแก้ไขได้

ฉันทำอะไรผิดและทำไมฉันจึงได้รับข้อผิดพลาดนี้

คำตอบ:


10

คุณต้องแก้ไขไฟล์เพื่อให้มันเป็นของผู้ใช้ Apache โดยค่าเริ่มต้น Apache จะทำงานในฐานะwww-dataผู้ใช้ (พบในwww-dataกลุ่ม) คุณสามารถใช้chownเพื่อแก้ไขเจ้าของไฟล์ (อาจต้องใช้กับsudo):

chown -R www-data:www-data /var/www/html

ท้ายที่สุดคุณต้องมั่นใจว่าไฟล์นั้นมีการอ่านและดำเนินการอนุญาตอย่างน้อยสำหรับผู้ใช้ Apache คุณได้ทำมาแล้วนี้ที่คุณกล่าวว่า แต่หลังจากการปรับเปลี่ยนทั้งหมดที่เจ้าของสิทธิ์ / ls -l /var/www/htmlไฟล์คุณควรให้แน่ใจว่าทุกอย่างโอเคโดยการเรียกใช้ เพื่อเป็นการรักษาความปลอดภัยคุณควรลบการอนุญาตทั้งหมดสำหรับผู้ใช้รายอื่น:

chmod -R 0550 /var/www/html

โปรดทราบว่าหากคุณใช้ PHP หรือภาษาสคริปต์อื่นซึ่งต้องมีการเข้าถึงเพื่อเขียนคุณอาจต้องแก้ไขรูปแบบการอนุญาตด้านบน0770แทน ข้อควรระวังให้ใช้หน้ากากนั้นในไดเรกทอรีที่จำเป็นเท่านั้น (เช่นเพื่อเขียนข้อมูลแคชของเว็บไซต์หรืออัปโหลดไฟล์)


chown: ผู้ใช้ที่ไม่ถูกต้อง 'www-data: www-data'
MetaGuru

ยังพยายาม apache เป็นผู้ใช้และมันก็ไม่ได้ให้ข้อผิดพลาด แต่ฉันก็ยังไม่สามารถดาวน์โหลดไฟล์ (403)
MetaGuru

@ Ryan คุณต้องตรวจสอบhttpd.confหรือapache2.confไฟล์ของคุณเพื่อดูว่าชื่อผู้ใช้ Apache ที่แท้จริงคืออะไร
Breakthrough

ตกลงจะทำ เป็นไปได้ไหมว่าประเภทไฟล์มีสิทธิ์ต่างกันด้วย? เพราะฉันสามารถเรียกดูหน้า html ที่อุดมไปด้วยภาพและเช่นในเส้นทางเดียวกัน
MetaGuru

@Ryan ตรวจสอบls -lว่าใครเป็นเจ้าของไฟล์เหล่านั้นและมีสิทธิ์อะไรบ้าง คุณพยายามเข้าถึงไฟล์ HTML ดิบหรือหน้าไดนามิกบางประเภท (เช่น PHP / Python / Ruby) หรือไม่? นอกจากนี้ยังให้แน่ใจว่าคุณไม่ได้ระบุชนิดของกฎการปิดกั้นใด ๆ ในของคุณ.htaccess, httpd.confหรือแฟ้มการกำหนดค่าเว็บไซต์
Breakthrough

4

ฉันใช้ CentOS 7 + Apache คำสั่งเดียวที่แก้ไขปัญหาของฉันคือ (เพราะฉันลอง chown + chmod ก่อน):

sudo setenforce 0 # ปิดการใช้งาน SELinux

จากนั้นฉันสามารถดาวน์โหลดไฟล์ (ในกรณีของฉัน anyfile.zip) แต่มันสามารถเปิดประตูให้ผู้โจมตีเขียนและรันโค้ดได้


0

คุณอาจเปิดใช้งานSELinuxอยู่ วิธีที่ง่ายที่สุดสำหรับวัตถุประสงค์ปัจจุบันคือการ chown ไฟล์ที่เป็นปัญหาให้กับ ID ผู้ใช้ Apache ที่กำลังทำงานอยู่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.