สิทธิ์ Apache


1

ฉันกำลังพยายามให้ LAMP ทำงานกับ OSx Lion และมีปัญหาเล็กน้อย

ให้ Apache, MySQL และ PHP ตั้งค่าและใช้งานได้ดี ได้เปิด "เว็บไซต์" ภายใต้การแบ่งปันในการตั้งค่า ลบโฟลเดอร์ ~ / user_name / Sites ต้นฉบับและสร้างลิงก์สัญลักษณ์ของ Sites ไปยังไดเรกทอรีที่มี ~ / ชื่อผู้ใช้

ตอนนี้เมื่อฉันพยายามเรียกใช้http: // localhost / ~ user_nameฉันจะได้รับ:

ห้ามคุณไม่ได้รับอนุญาตให้เข้าถึง / ~ user_name บนเซิร์ฟเวอร์นี้

ฉันจะเปลี่ยนการอนุญาตเหล่านี้ได้ที่ไหนและอย่างไร


1
ฉันขอแนะนำMAMPซึ่งเหมือนกับ LAMP แต่โดยเฉพาะกับ Mac ฉันใช้มันบ่อยมากโดยไม่มีปัญหาการอนุญาต
Nathan Greenstein

Apache จะไม่ติดตาม symlink ตามค่าเริ่มต้น แต่ก่อนที่เราจะพยายามแก้ปัญหานั้นก่อนอื่นมาเริ่มการตั้งค่าพื้นฐานกันก่อน คุณสามารถสร้าง~/Sitesโฟลเดอร์ขึ้นใหม่สร้างไฟล์ html อย่างน้อยหนึ่งไฟล์และลองเข้าถึงมันได้http://localhost/~user/the-file.htmlหรือไม่?
nohillside

ขอบคุณ @patrix มันใช้งานได้ดี ลบลิงก์ sym และฉันสามารถเข้าถึง localhost / ~ user / test.html ได้
David

สิ้นสุดการทำให้สิ่งนี้ทำงานโดยเปลี่ยนสิ่งต่อไปนี้ใน httpd.conf <ไดเรกทอรี /> ตัวเลือก - สารบัญรวม FollowSymLinks หลายมุมมอง AllowOverride None ตัวเลือกสั่งอนุญาต, ปฏิเสธอนุญาตจากทั้งหมด </Directory>
เดวิด

เพียงติดกับรูทเอกสารเริ่มต้น ( /Library/WebServer/Documents) และสร้าง symlink ไว้ในโฟลเดอร์โฮมของคุณ
Abhi Beckert

คำตอบ:


2

เมื่อเข้าสู่เว็บไซต์ใน "localhost" ของคุณมีสิทธิ์ที่จำเป็นหลายประการ เนื้อหา localhost อาจอยู่ในไดเรกทอรี Sites ของคุณซึ่งในกรณีนี้คำสั่งเหล่านี้อาจช่วยป้องกันข้อความ "Forbidden"

ตรวจสอบให้แน่ใจว่าไดเร็กทอรี Users อนุญาตให้อ่านไดเร็กทอรีได้:

cd /
sudo chmod -v 755 Users

ตรวจสอบให้แน่ใจว่าไดเร็กทอรีชื่อผู้ใช้อนุญาตการอ่านไดเร็กทอรี:

cd Users
sudo chmod -v 755 username

ตรวจสอบให้แน่ใจว่าไดเรกทอรี Sites ของคุณอนุญาตให้อ่านไดเรกทอรีได้:

cd ~
chmod -v 755 Sites

ทุกไดเรกทอรีย่อยของ Sites ต้องการการเข้าถึงเพื่ออ่าน:

cd ~/Sites
find ~/Sites -type d -print -exec chmod 755 {} \;

ทุกไฟล์ในเว็บไซต์และไดเรกทอรีย่อยจำเป็นต้องมีการเข้าถึงเพื่ออ่าน:

cd ~/Sites
fing ~/Sites -type f -print -exec chmod 644 {} \;

Apache ใช้กลุ่ม _www ดังนั้นเพื่อให้ Apache สามารถเข้าถึงทุกอย่างในไดเรกทอรีไซต์ได้อย่างเต็มที่ให้ตั้งค่าแอตทริบิวต์เพิ่มเติมด้วยสิ่งนี้:

chmod -R +a "group:_www allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" ~/Sites

1

สมมติว่ามีบางคนที่เคยใช้ OS X ในสภาพแวดล้อมการใช้งานจริงมันเป็นเรื่องดีที่ให้ Apache ทำสิ่งที่ต้องการด้วยรูทเอกสาร คุณสามารถทำได้ด้วยคุณสมบัติ "การสืบทอด" ของ ACL:

sudo chmod -R +a "group:_www allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" /Library/WebServer/Documents/

คำสั่งดังกล่าวจะให้กลุ่ม apache เริ่มต้นเต็มรูปแบบการเข้าถึงแบบอ่าน / เขียนทุกอย่างในรูทเอกสารเริ่มต้นและใช้แฟล็ก "การสืบทอด" เพื่อให้ไฟล์ / ไดเร็กทอรีใหม่ใด ๆ ที่สร้างขึ้นจะสามารถเขียนได้โดย apache แม้ว่า apache ไม่ได้สร้างขึ้น

ฉันต้องการเรียกใช้คำสั่งนี้:

sudo chmod -R +a "group:staff allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" /Library/WebServer/Documents/

ซึ่งจะให้ผู้ใช้ "พนักงาน" (โดยทั่วไปนั่นหมายถึงผู้ใช้ทุกคน "ของจริง") สามารถเข้าถึงทุกอย่างได้อย่างเต็มที่แม้กระทั่งไฟล์ที่สร้างโดย apache


-1

คุณสามารถใช้chmodเพื่อตั้งค่าการอนุญาตในโฟลเดอร์ที่ไซต์ของคุณอยู่ ตรวจสอบให้แน่ใจว่าผู้ใช้ Apache กำลังทำงานเนื่องจากอาจอ่านข้อมูลใด ๆ ในโฟลเดอร์นั้น

  1. เปิดเทอร์มินัล
  2. cd /path/to/website
  3. chmod -r 644 .

ที่ควรทำ ระวังว่านี่จะทำให้ไฟล์ต้นฉบับ php ของคุณสามารถอ่านได้กับทุกคน


การอนุญาตเหล่านั้น (466) นั้นผิดจริงๆ อนุญาตให้ผู้ใช้เข้าถึงแบบอ่านอย่างเดียว แต่ทุกคนสามารถอ่านและเขียนได้ ยกเว้นว่าพวกเขาจะไม่อนุญาตให้ใครก็ตามที่เรียกใช้ (การค้นหา aka) เข้าถึงไดเรกทอรีจึงไม่มีใครสามารถเข้าถึงไฟล์ที่อยู่ภายใน (เพียงแค่อ่าน & อาจจะเขียนชื่อ)
Gordon Davisson

ฉันคิดว่าคุณหมายถึง chmod 644
Andrew Vit

1
644 เหมาะสมกว่า แต่ยังคงให้สิทธิ์การเข้าถึงเพื่อเรียกใช้ (จำเป็นสำหรับไดเรกทอรี) chmod -R u=rwX,go=rX .จะทำงานได้เพราะ chmod ปฏิบัติต่อการอนุญาต "X" เป็น "x หากเหมาะสม"
Gordon Davisson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.