ฉันจะตั้งค่า Apache2 DocumentRoot เป็นโฟลเดอร์“ vboxsf” VirtualBox Shared ได้อย่างไร (ปัญหาการอนุญาตหรือไม่)


17

ฉันติดตั้ง Ubuntu 11.04 เดสก์ท็อป 32 บิตบน VirtualBox VM พร้อมโฟลเดอร์แชร์ไปยังโฮสต์ โฟลเดอร์ที่ใช้ร่วมกันคือ

/media/sf_Dev/

ฉันต้องการเปลี่ยน Apache2 ให้ชี้DocumentRootไปที่โฟลเดอร์นั้นดังนั้นฉันจึงแก้ไข/etc/apache2/sites-available/defaultเพื่อแทนที่สองพา ธที่มีอยู่ในไฟล์นั้นเป็น / media / sf_Dev / แทนที่จะเป็น / var / www และจะไม่แสดง index.html

เมื่อฉันมองไปที่/varที่มีls -lฉันเห็น

drwxr-xr-x  2 root root ... www

และเมื่อls -l /media/ฉันเห็น

drwxrwx---  1 root vboxsf ... sf_Dev

และ Apache ดูเหมือนจะไม่เห็น index.html ฉันใส่ในไดเรกทอรีนั้น ( cp /var/www/index.html /media/sf_Dev/iirc)

ฉันยังพยายามแก้ไข envvars เพื่อให้กลุ่มเป็น vboxsf แต่ฉันคิดว่าฉันทำส่วนนั้นผิด

export APACHE_RUN_GROUP=www-data

ถึง

export APACHE_RUN_GROUP=vboxsf

ฉันทำอะไรผิดฉันต้องทำอย่างไรเพื่อให้ Apache2 ให้บริการไฟล์จากไดเรกทอรีนั้น (ในทางเทคนิคฉันต้องการให้บริการไฟล์สำหรับ apache จาก/media/sf_Dev/apache/wwwแต่ฉันคิดทีละขั้นตอนดังนั้นถ้าสิ่งนั้นช่วยให้คุณลัดวงจรได้

คำตอบ:


22

มันอาจจะง่ายที่สุดในการเพิ่มกลุ่ม vboxsf เป็นกลุ่มเสริมสำหรับ apache

อูบุนตู:

sudo usermod -a -G vboxsf www-data

Fedora:

sudo usermod -a -G vboxsf apache

สิ่งนี้ทำได้สำหรับฉันเมื่อฉันต้องการเข้าถึงโฟลเดอร์ที่แชร์อัตโนมัติซึ่งเมาท์ คุณอาจต้องการเพิ่มชื่อผู้ใช้ของคุณเองในกลุ่ม vboxsf เพื่อเข้าถึงไฟล์


แต่แอพ apache ทำงานภายใต้ชื่อผู้ใช้ apache หรือไม่ ฉันคิดว่ามันเปลี่ยนไป>.>
jcolebrand

คุณถูกต้องฉันผสมผู้ใช้ apache สำหรับ fedora และ ubuntu แก้ไขแล้ว :)
Fuu

1
บันทึกฉันหลายครั้งที่เล่นซอกับการติดตั้งด้วยตนเอง .. ขอบคุณ!
xorinzor

วิธีนี้แก้ไขให้ฉันใน Ubuntu 15. ขอบคุณมาก!
เอียนเลวิส

3

ดูเหมือนว่าปัญหาการอนุญาต คุณจะต้องอ่านและดำเนินการอนุญาต/media/sf_Dev/สำหรับ "อื่น ๆ " (บิตการอนุญาตกลุ่มที่สามซึ่งขณะนี้ไม่มีสิทธิ์หรือ---)

ดังนั้นคุณจะต้องเรียกใช้คำสั่งนี้ (เนื่องจากเป็น Ubuntu ให้สังเกต sudo):

sudo chmod 775 /media/sf_Dev/

ที่จะเพิ่มการอ่านและดำเนินการสำหรับ "อื่น ๆ " และออกจากสิทธิ์แบบเต็มสำหรับเจ้าของและกลุ่ม

ตรวจสอบให้แน่ใจด้วยว่าไฟล์ดัชนีมีอยู่จริงใน / media / sf_Dev / (ฉันจะสมมติว่าคุณลืม sudo ในคำสั่ง cp และคุณไม่ได้ทำงานเหมือนรูท)


1
Ahhh แต่เมื่อฉันทำว่ามันไม่ได้ทำให้การเปลี่ยนแปลงที่ฉันต้องการ บางสิ่งเกี่ยวกับ vboxfs ไม่อนุญาตให้ทำการเปลี่ยนแปลง (เช่น: NFTS) ... oooh ซึ่งอาจเป็นปัญหาไฟล์นั้นถูกโฮสต์ใน NTFS (เนื่องจากเป็นโฮสต์ของ windows) ดังนั้นฉันไม่คิดว่าฉันจะสามารถทำได้ ~~ ฉันลืมดูข้อผิดพลาดก่อนถาม ฉันจะตรวจสอบว่าเย็นนี้ อย่างไรก็ตามสมมติว่าเป็นข้อผิดพลาดการอนุญาต
jcolebrand

@jcolebrand Rule # 1 ของการแก้ไขปัญหา: เสียบอยู่หรือไม่ ไม่ต้องกังวลว่าฉันกำลังคิดเกี่ยวกับประโยชน์ในระยะยาวของคำตอบและฉันรู้ว่าคุณเป็น DB และ. NET คนที่แต่งตัวประหลาด : P
George Marian

@jcolebrand คำถามงี่เง่า: คุณเริ่ม apache ใหม่หรือไม่? sudo apache2ctl restart
George Marian

hahahahaha นี่คือเหตุผลที่ฉันต้องการความช่วยเหลือฉันเป็น db และ. net guy;) ... ใช่แล้วที่จริงฉันตกลงไปsudo suทันทีที่มันเริ่มเป็นหญิงสาวเพื่อที่ฉันจะได้เข้าไปในไดเรกทอรีทั้งหมดและดูว่า "หัก" ... ฉันจะทำตามที่ Josh แนะนำภายหลังด้วยไฟล์ PHP
jcolebrand

1
เป็นไปได้ว่า vboxsf ไม่รองรับการตั้งค่าสิทธิ์สำหรับโฟลเดอร์รูทของระบบไฟล์และอาจมีโหมดตัวเลือก uid และ gid mount เพื่อตั้งค่าการอนุญาตไฟล์ทั่วโลก
billc.cn

2

คุณไม่ได้พูดว่าข้อผิดพลาดเฉพาะนั้นคืออะไรเท่านั้น

และ Apache ดูเหมือนจะไม่เห็น index.html ฉันใส่ไว้ในไดเรกทอรีนั้น

ข้อผิดพลาดเฉพาะจะช่วย คุณสามารถยื่นเรื่องนี้ใน Apache error_logซึ่งโดยปกติแล้วจะอยู่/var/log/apache2/error.logภายใต้ Ubunt แต่สามารถกำหนดค่าผ่านErrorLogDirectiveในของคุณได้<VirtualHost>

โดยไม่มีข้อผิดพลาดจริงฉันถือว่า George Marian ถูกต้องและเป็นข้อผิดพลาดการอนุญาต คุณสามารถตรวจสอบเพื่อดูว่ากลุ่ม Apache กำลังทำงานอยู่ภายใต้การใช้:

ps -o pid,group -o atime,comm=CMD awx | grep apache

ลองเปลี่ยนการอนุญาต/media/sf_Dev/ตามที่เขาพูด

ฉันคิดว่าคุณควรจัดการเรื่องนี้ด้วยคำสั่งนามแฝงซึ่งจะช่วยให้คุณสามารถทำบางส่วนของจุด DocumentRoot ของคุณไปยังสถานที่ด้านนอก:

Alias /info /media/sf_Dev
<Directory /media/sf_Dev >
  Order allow,deny
  Allow from all
</Directory>

แก้ไข:หากเซิร์ฟเวอร์ Apache มีmod_php(ไม่ใช่ FastCGI PHP) และไม่ได้ใช้suexecงานคุณสามารถตรวจสอบว่า Apache ทำงานภายใต้ GID ที่เหมาะสม (ID กลุ่ม) ด้วย PHP snippit ต่อไปนี้หรือไม่:

<?php

var_dump(posix_getegid());

ตรวจสอบให้แน่ใจว่าผลตอบแทน GID vboxsfเดียวกับ (คุณสามารถค้นหา GID สำหรับ vboxsf ได้/etc/groups)


ฉันลืมดูข้อผิดพลาดก่อนถาม ฉันจะตรวจสอบว่าเย็นนี้ อย่างไรก็ตามสมมติว่าเป็นข้อผิดพลาดการอนุญาต ดูคำตอบของฉันต่อ George ด้านบน
jcolebrand

ตกลง. แล้วเราควรจะมุ่งเน้นการ Apache ให้ทำงานเป็น vboxsfGID คุณสามารถแก้ไขและโพสต์ส่วนที่เกี่ยวข้องที่คุณเปลี่ยนGroupหรือไม่
Josh

ฉันแก้ไขหนึ่งบรรทัดใน envvars และมันบอกว่ากลุ่ม แต่ฉันไม่ได้มองที่กล่องตอนนี้
jcolebrand

0

หากคุณได้กำหนดค่าโฟลเดอร์ที่ใช้ร่วมกันให้ติดตั้งอัตโนมัติ จากนั้นคุณต้องปิดการใช้งานเดียวกันก่อนแล้วทำการเมานท์โฟลเดอร์แชร์ด้วยตนเอง หากคุณต้องการ automount ทุกครั้งที่คุณเริ่ม vm คุณต้องเพิ่มรายการที่เกี่ยวข้องภายใน / etc / fstab ของคุณ (ดูเหมือนว่ามีปัญหาบางอย่างในการติดตั้งโฟลเดอร์แชร์ vbox ผ่าน fstab ดังนั้นการเพิ่มคำสั่งที่ระบุไว้ด้านล่างใน /etc/rc.local ทำให้ฉันติดตั้งเมื่อเริ่มต้น)

โหลดโฟลเดอร์ที่แชร์กับผู้ใช้ / กลุ่มที่ถูกต้อง

เท่าที่ฉันสามารถบอกได้ข้อผิดพลาดนี้เกิดจากเจ้าของและกลุ่มของโฟลเดอร์แชร์ Apache คาดว่าไฟล์ที่จะแสดงเป็นของกลุ่ม www-data โดยค่าเริ่มต้นอย่างไรก็ตามโฟลเดอร์ที่ใช้ร่วมกันใน VirtualBox เป็นของผู้ใช้ vboxsf เราจะเพิ่มผู้ใช้นี้ในกลุ่ม www-data โดยให้แก้ไขคุณสมบัติกลุ่มในแขก:

sudo usermod -a -G vboxsf www-data

ตอนนี้เราจะเมานต์โฟลเดอร์แชร์และกำหนดให้กับผู้ใช้ www-data และกลุ่ม ในการตรวจสอบผู้ใช้และรหัสกลุ่มคุณสามารถดูไฟล์ / etc / passwd บนเครื่องแขก (cat / etc / passwd | grep 'www-data') บนระบบปฏิบัติการที่ใช้ Debian โดยปกติ id ทั้งสองจะถูกตั้งค่าเป็น 33 ดังนั้นเพียงแค่ใช้คำสั่งต่อไปนี้บนเกสต์:

mount -t vboxsf -o rw,uid=33,gid=33 website /media/sf_website

โปรดทราบว่าเว็บไซต์เป็นชื่อของโฟลเดอร์ที่แชร์ (ดังที่แสดงในภาพหน้าจอด้านบน) และ / media / sf_website เป็นตำแหน่งที่จะทำการติดตั้งโฟลเดอร์

Fore รายละเอียดเพิ่มเติมอ้างอิงลิงค์นี้http://jimmybonney.com/articles/configure_virtualbox_shared_folder_apache_virtual_host/

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