Apache: chmod 755 ไม่เพียงพอที่จะตั้งค่า symlink หรือนามแฝงบน Apache httpd บน Mac OS 10.5 หรือไม่


15

บน Mac OS 10.5 เครื่องของฉันฉันต้องการจะตั้งค่าโฟลเดอร์ย่อยของ~/Documentsเหมือน~/Documents/foo/htmlจะเป็นhttp: // localhost / foo

สิ่งแรกที่ฉันคิดว่าทำคือใช้นามแฝงดังนี้:

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options Indexes FollowSymLinks MultiViews

    Order allow,deny
    Allow from all
</Directory>

สิ่งนี้ทำให้ฉันต้องห้าม 403 ใน error_log ฉันได้รับ:

[error] [client ::1] (13)Permission denied: access to /foo denied

โฟลเดอร์ย่อยที่มีปัญหามีการเข้าถึง chmod 755 ฉันได้ลองระบุไลค์เช่นhttp: //localhost/foo/test.phpแล้ว แต่นั่นก็ไม่ได้ผลเหมือนกัน ต่อไปฉันลองเส้นทาง symlink

เดินเข้าไป/Library/WebServer/Documentsและทำให้ symlink ~/Documents/foo/htmlให้ รูทเอกสารมี

Options Indexes FollowSymLinks MultiViews

สิ่งนี้ยังทำให้ฉันต้องห้าม 403:

Symbolic link not allowed or link target not accessible: /Library/WebServer/Documents/foo

ฉันต้องตั้งค่าอะไรอีก

วิธีแก้ปัญหา :

$ chmod 755 ~/Documents

โดยทั่วไปโฟลเดอร์ที่จะแชร์และโฟลเดอร์บรรพบุรุษทั้งหมดจะต้องสามารถดูได้โดยwwwผู้ใช้บริการ


ขอบคุณมากสำหรับการโพสต์การแก้ปัญหานี้ - นี้จริงๆช่วยฉันออกมาหลังจากที่การใช้จ่ายทุกเพศทุกวัยที่กำลังมองหาคำตอบ
Tomba

@Tomba ไม่มีปัญหา
Eugene Yokota

คำตอบ:


24

ฉันจะเดิมพันว่าไดเรกทอรีด้านบนไดเรกทอรีที่คุณต้องการเข้าถึงไม่มีสิทธิ์อนุญาตให้ Apache ทำการสำรวจ กลายเป็นผู้ใช้ที่ Apache ทำงานเป็น ( sudo -i -u apacheหรืออะไรก็ตาม) แล้วพยายามที่จะเปลี่ยนเป็นไดเรกทอรีที่น่าสนใจและlsมัน หากคุณไม่สามารถ (ตามที่คาดไว้) จากนั้นลองเข้าไปในไดเรกทอรีด้านบนทีละรายการจนกว่าจะให้คุณเข้าไปไดเรกทอรีย่อยของไดเรกทอรีนั้นคือไดเรกทอรีที่จำเป็นต้องo+xตั้งค่า ทำความสะอาดซ้ำแล้วซ้ำอีกตามต้องการ


1
ใช่ถ้า 'ไซต์' ทำงานคุณอาจจะมีปัญหาทางด้านขวาบนเอกสารถ้า 'ไซต์' ไม่ทำงานคุณอาจจะมีปัญหาทางด้านขวาบนไดเรกทอรีผู้ใช้ของคุณ (CAN นี้ผนวกกับ FileVault)
รัศมี

1
~ / เอกสารเท่ากับ 700
Eugene Yokota

ถ้าฉันทำงานsudo -i -u _wwwบน OS X (เนื่องจากผู้ใช้ Apache คือ _www โดยในการกำหนดค่าเริ่มต้น apache บน OS X) จากนั้นฉันwhoamiก็ยังคงได้รับชื่อผู้ใช้ของฉันไม่ใช่ _www
Jason S

ในการเปลี่ยนผู้ใช้อื่นด้วย sudo อย่างสมบูรณ์ฉันใช้ '-' ด้วยตัวเอง: sudo - www-data(สำหรับ Ubuntu)
Alexis Wilke

2

ใช้ +FollowSymlinks

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options +Indexes +FollowSymLinks +MultiViews

    Order allow,deny
    Allow from all
</Directory>

ตามที่httpd.apache.org/docs/2.0/en/mod/core.html#options "ถ้าตัวเลือกทั้งหมดในคำสั่งตัวเลือกนำหน้าด้วยสัญลักษณ์ + หรือ - ตัวเลือกจะถูกรวมเข้าด้วยกัน" จะช่วยได้อย่างไร ~ / เอกสารเป็น 700
Eugene Yokota

AFAIK FollowSymLinks ไม่เปิดใช้งานตัวเลือกอนุญาตให้เปิดใช้งานในระดับล่างของลำดับชั้นไดเรกทอรีเท่านั้น
Dave Cheney

1
นี่คือคำตอบที่ถูกต้องสำหรับฉัน ฉันแก้ไขไฟล์ conf ใน / etc / apache2 / users และอนุญาต FollowSymLinks (โดยไม่ต้อง +) อย่าลืมรีสตาร์ท
superluminary

1

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

การปิดใช้งานจะช่วยแก้ปัญหาได้


1

ตรวจสอบความเป็นเจ้าของ symlink เนื่องจากคุณอยู่ใน Mac OS X ดังนั้นเจ้าของ symlink จึงสามารถเปลี่ยนแปลงได้ ในการ/Library/WebServer/Documentsทำls -l

หาก symlink ของคุณไปยัง~/Documents/foo/htmlถูกเรียกfooและมีสิทธิ์เช่น

lrwxr-xr--  1 root  wheel 27  2 Nov 17:00 foo -> /Users/username/Documents/foo/html

จากนั้นตามค่าเริ่มต้นใน OS X Apache จะทำงานเป็นผู้ใช้ _www และกลุ่ม _www ดังนั้นในกรณีที่กล่าวถึงข้างต้นจะไม่สามารถข้าม symlink ไปที่ ~/Documents/foo/html

เรียกใช้man 8 chownบนเทอร์มินัลระบบของคุณหรือดูผู้ชายออนไลน์chown

คุณจะเห็นว่าการใช้-hตัวเลือกจะเปลี่ยนความเป็นเจ้าของของ symlink เองแทนที่จะเป็นไฟล์ที่ชี้ไปที่ (เป็นแหล่งที่มา) จากนั้นคุณสามารถทำสิ่งที่ชอบ

sudo chown -h :_www foo 

นี่จะเปลี่ยน simlink เป็น

lrwxr-xr--  1 root  _www 27  2 Nov 17:02 foo -> /Users/username/Documents/foo/html

และกลุ่ม Apache _www จะสามารถเข้าไปยังลิงค์ได้


0

ตรวจสอบไดเร็กทอรี / Users ของคุณ (ls -l / Users) เพื่อดูสิทธิ์ของผู้ใช้ของคุณ (บางคน)
นอกจากนี้ยังมีไดเรกทอรี 'Sites' อย่างถูกต้องบน localhost / ~ คน?


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