ข้อผิดพลาดต้องห้าม 403 บน Mac OS X Localhost


22

ฉันตั้งค่าการแชร์เว็บในการตั้งค่าระบบใน Mac OS X 10.6 และคลิกลิงก์ที่ให้ไว้ที่นั่น อาปาเช่ให้ฉัน 403 ข้อผิดพลาดนี้อย่างไม่สบายใจ:

พระราชวังต้องห้าม

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

บันทึกการเข้าถึงแสดง: 10.0.1.2 - - [30/Jun/2010:16:25:15 -0700] "GET /~myusername/ HTTP/1.1" 403 210

บันทึกข้อผิดพลาดแสดงขึ้น: [Wed Jun 30 16:26:09 2010] [error] [client 10.0.1.2] client denied by server configuration: /Users/myusername/Sites/

พอเข้าชมแล้วhttp: // localhost ก็ใช้งานได้ดี เป็นเพียงโฟลเดอร์ผู้ใช้สองโฟลเดอร์ที่ฉันมีปัญหาโฟลเดอร์ผู้ใช้อื่นซึ่งใหม่กว่าการอัปเกรดระบบของฉันทำงานได้ดี

ฉันเคยทำงานกับเครื่องของฉันใน Leopard มาก่อนดังนั้นฉันจึง chmodded ทุกอย่างใน~/Sites755 ซึ่งไม่ได้ทำอะไรดี ข้อเสนอแนะใด ๆ ฉันคิดว่าฉันได้ทำบางสิ่งกับเครื่องของฉันซึ่งเป็นสาเหตุของเรื่องนี้เนื่องจากฉันนึกภาพไม่ออกว่า Apple ทำอะไรแบบนี้

ฉันตั้งค่าลูกแพร์ด้วยคำแนะนำเหล่านี้แต่ฉันไม่รู้ว่านั่นอาจเป็นสาเหตุของมัน


ขออภัยถ้านี่เป็นคำถามโง่ ๆ แต่คุณจะไป URL ไหนกันแน่? ฉันถามเพราะ URL "/~myusername/index.html" เป็นเลขคี่ - ควรเป็น "~ myusername / index.html" หรือควรเป็น " localhost / ~ myusername / index.html " หรือบางอย่าง คล้ายคลึงกัน เพียงเริ่มจาก / จากนั้นเพิ่ม ~ myusername กลิ่นตลก นอกเหนือจากการตอบ (หรือแทนที่จะ) คุณสามารถเข้าไปที่ Console.app (/Applications/Utilities/Console.app) และค้นหา apache2 access_log และ error_log ดึงส่วนนั้นขึ้นมาล้างหน้าจอแล้วลอง URL อีกครั้งเพื่อดูว่าบันทึกข้อผิดพลาดบอกอะไรคุณ
Michael H.

@khedron: URL คือlocalhost / ~ myusername / index.htmlแต่ข้อผิดพลาดจะแสดงส่วน/ ~myusername/index.html
waiwai933

ตกลงแค่ตรวจสอบ บันทึก apache บอกว่าอะไรในคอนโซล (console.app)
Michael H.

@khedron: ฉันโพสต์การเข้าถึงและข้อผิดพลาดในการลงทะเบียนคำถาม มีอีกอันไหม
waiwai933

1
ฉันมีปัญหาเช่นเดียวกับคุณและฉันเพิ่งทำ: chmod 777 / Applications / XAMPP / htdocs / myusername มันใช้ได้สำหรับฉัน
Wassim Sboui

คำตอบ:


22

Apple มีเอกสารสนับสนุนสำหรับปัญหานี้ แก้ไขปัญหาที่เกี่ยวข้องกับการสร้างไฟล์/etc/apache2/users/yourusername.conf( yourusernameเป็นบัญชีชื่อสั้น ๆเช่นdanielbeck- มันมักจะเป็นชื่อของโฟลเดอร์ที่บ้านของคุณใน/Users) ที่มีเนื้อหาดังต่อไปนี้:

<Directory "/Users/yourusername/Sites/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

หลังจากนั้นให้เรียกใช้sudo chown root:wheel /etc/apache2/users/yourusername.confและรีสตาร์ท Apache


และเริ่มต้น apache ของคุณใหม่อีกครั้งเพียงดำเนินการsudo apachectl restartในเทอร์มินัลของคุณ
ไม่มี

15

เพื่อให้ Apache เห็นไฟล์ผู้ใช้ที่ Apache ทำงานเป็น (อาจwwwหรือ_www) ต้องมีสิทธิ์เข้าถึงไดเรกทอรีของไซต์ของผู้ใช้เหล่านี้ ต้องอ่าน / ดำเนินการเข้าถึงเนื้อหาของ~/Sitesไม่พอเพราะมันจะต้องมีการได้รับอนุญาตให้สำรวจจากสภาพเส้นทางไปยัง/ ~/Sitesเพื่อให้แน่ใจว่า/, /Users, /Users/myusernameและ/Users/myusername/Sitesทุกคนมีอย่างน้อยa+xได้รับอนุญาต (บิตดำเนินการในไดเรกทอรีช่วยให้ระดับของผู้ใช้ที่ต้องเข้าไปในไดเรกทอรีแม้ว่าอ่านเข้าถึงไม่ได้รับอนุญาต)

ls -lde / /Users/ /Users/myusername/ /Users/myusername/Sites

หากไดเรกทอรีใด ๆ เหล่านั้นไม่แสดงxชุดสุดท้าย(หนึ่งรายการสำหรับ "อื่น ๆ ") ให้ใช้สิ่งที่ต้องการchmod a+x ...ตั้งค่าสำหรับไดเรกทอรีนั้น

หาก ACL สำหรับไดเร็กทอรีใด ๆ เหล่านั้นแสดงว่าผู้ใช้wwwนั้นถูกปฏิเสธการเข้าถึงโดยเฉพาะจากนั้นใช้อาร์กิวเมนต์ที่เหมาะสมchmodเพื่อแก้ไข ACLs


บิตการดำเนินการถูกตั้งค่าไว้สำหรับไดเรกทอรีทั้งหมด แต่ฉันไม่ทราบวิธีตรวจสอบว่าผู้ใช้รายใดถูกปฏิเสธการเข้าถึงหรือไม่
waiwai933

นั่นคือสิ่งที่ "e" ใน "ls -lde" มีไว้สำหรับ มันแสดงรายการ ACLs (ถ้ามี) สำหรับแต่ละไฟล์
Spiff

2
การเปลี่ยนการอนุญาตใน / Users / myusername เป็น chmod 755 ได้แก้ไขปัญหาให้ฉันแล้ว
ทำเครื่องหมาย

คำสั่งนี้ไม่ได้ให้สิทธิ์ผู้ใช้ _www ในการเข้าถึงไดเรกทอรีรากของคุณรวมถึงไดเรกทอรี / ผู้ใช้ ฯลฯ ใช่ไหม มันอาจจะไม่ถูกต้องใช่มั้ย ช่องโหว่ด้านความปลอดภัยทั้งหมดเพื่อแชร์หน้าในโฟลเดอร์เดียว? พฤติกรรมนี้มีการบันทึกไว้ที่อื่นหรือไม่?
Tom Lianza

ตอบกลับความคิดเห็นของฉันฉันพบคำตอบนี้ ( serverfault.com/a/293063/14970 ) ซึ่งให้ลิงก์ไปยังเอกสารประกอบที่เชื่อถือได้เกี่ยวกับพฤติกรรมนี้: wiki.apache.org/httpd/13PermissionDenied
Tom Lianza

5

สำหรับการอ้างอิงฉันเพิ่งจัดการกับเรื่องนี้และไม่มีคำตอบที่นี่ทำงานในกรณีเฉพาะของฉัน ฉันกำลังกำหนดค่าโฮสต์เสมือน แต่ที่สำคัญกว่านั้นฉันต้องการไฟล์ htaccess เพื่อให้ใช้งานได้จริง

ฉันเปลี่ยนเป็น "AllowOverride None" เป็น "AllowOverride All" ในไฟล์ /etc/apache2/users/USERNAME.conf ของฉันและไซต์ทั้งหมดของฉันเริ่มถูกห้าม

ฉันเปลี่ยนกลับแล้วเปลี่ยนเป็นหนึ่งไซต์ในไฟล์ httpd-vhosts.conf ของฉันเท่านั้นและห้ามไซต์นั้นเท่านั้น

หลังจากดูบันทึกและการดูปัญหาเกิดขึ้นจากการเขียน url และการไม่ติดตาม FollowSymLinks ฉันกลับไปที่ไฟล์ USERNAME.conf ฉันสลับ "AllowOverride None" เป็น "AllowOverride All" และเพิ่ม "Options + FollowSymLinks" ในบรรทัดถัดไป

สิ่งต่าง ๆ เริ่มทำงาน ฉันมาจากการใช้ xampp บน windows และมีการตั้งค่าเหล่านี้จำนวนมากตั้งค่าทั้งเซิร์ฟเวอร์สำหรับหุ่นเหมือนฉัน


1
ขอบคุณมากใช้เวลาพอสมควรในการหาว่าเกิดอะไรขึ้นไม่ต้องยุ่งเกี่ยวกับ Apache / PHP สักระยะหนึ่งตอนนี้
Misha Reyzlin

1
ใช่Options +FollowSymLinksทำงานเหมือนมีเสน่ห์
agarie

2

ฉันมีปัญหาเดียวกัน: บัญชีของฉัน (เก่า) ไม่สามารถเข้าถึงได้ แต่บัญชีผู้ใช้อื่นที่สร้างขึ้นหลังจากอัปเกรดเป็น Lion ทำงานได้ดี

หลังจากให้แน่ใจว่า /etc/apache2/users/USERNAME.conf ของคุณมีลักษณะดังนี้:

<Directory "/Users/USERNAME/Sites/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

ทำราก sudo chown: wheel /etc/apache2/users/USERNAME.conf

ดูเหมือนว่าการตั้งค่าการอนุญาตนี้ไม่ได้ตั้งไว้ในระหว่างการอัพเกรดระบบปฏิบัติการและผู้ใช้ Apache ไม่สามารถอ่านไฟล์ปรับแต่งได้และเกิดข้อผิดพลาด

อย่างน้อยก็แก้ปัญหานี้ให้ฉัน


1
และอาจจะทำงานsudo apachectl restartหลังจากนั้น
Arjan

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

2

อัปเดตสำหรับ Lion ใน 10/2011 ฉันต้องเพิ่มด้วย

UserDir เปิดใช้งานดังนั้น /etc/apache2/extra/httpd-userdir.conf ของฉันจะเป็นดังนี้:

UserDir enabled 
UserDir Sites

#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf

<IfModule bonjour_module>
   RegisterUserSite customized-users
</IfModule>

1

การสนทนาอย่างต่อเนื่องจากความคิดเห็นคำถามเริ่มต้น - ดู/etc/apache2/httpd.confไฟล์ของคุณ ในเครื่องของฉันฉันมีสิ่งนี้:

# User home directories
Include /private/etc/apache2/extra/httpd-userdir.conf

ฉันสงสัยว่าคุณแสดงความคิดเห็นแล้ว ฉันจำการเปลี่ยนแปลงนี้ด้วยมือได้อย่างชัดเจนเมื่อเลื่อนจาก 10.5 เป็น 10.6 และค่าเริ่มต้นเปลี่ยนไป

สิ่งนี้อาจชัดเจน แต่คุณจะต้องใช้sudoเพื่อแก้ไขไฟล์เพราะจะเป็นเจ้าของโดย root


1
ไม่ฉันดูเหมือนของคุณจริงๆ
waiwai933

1

เคสของฉันคือ XAMPP + Mac OS X 10.7 + ไดเรกทอรีในโฟลเดอร์ Dropbox (อ้างอิงข้ามคำถามอื่นของฉันใน Stack Overflow)

403 การเข้าถึงที่ต้องห้ามถูกรายงานโดย Apache ดังนั้นฉันจึงปฏิบัติตามความคิดเห็นด้านบนเพื่อเปลี่ยนผู้ใช้ใน/XAMPP/xamppfiles/etc/httpd.confจากจากUser nobodyเป็นUser my_user_nameเป็น รีสตาร์ท Apache และทำงานได้ดี


0

คุณอาจไม่ได้เปิดดัชนี หากคุณไม่ได้คุณจะต้องสร้างไฟล์ดัชนี ( index.htmlหรือindex.php) http://localhost/~me/mypage.htmlหรือระบุไฟล์อย่างชัดเจนคือ


ขออภัยเพื่อตรวจสอบอีกครั้งฉันควรไปที่localhost / ~ myusername / index.htmlและมีไฟล์ชื่อ index.html ในโฟลเดอร์ Sites ของฉันใช่ไหม ถ้าเป็นเช่นนั้น 403 ก็ยังคงเกิดขึ้น
waiwai933

คุณไม่ควรไปเยี่ยม~myusernameเลยฉันเชื่อ ควรชี้ไปที่http://localhost/ /Users/youruser/Sites/
Josh K
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.