Apache2 DocumentRoot'u “vboxsf” VirtualBox Paylaşılan Klasörüne nasıl ayarlayabilirim? (izin sorunu?)


17

Ubuntu 11.04 masaüstü 32 bit'i bir ana bilgisayar için paylaşılan bir klasörle bir VirtualBox VM'ye kurdum. Paylaşılan klasör

/media/sf_Dev/

DocumentRootBu klasöre işaret etmek için Apache2 değiştirmek istiyorum , bu yüzden / var / www yerine / media / sf_Dev / yerine bu dosyadaki iki yolu /etc/apache2/sites-available/defaultdeğiştirmek için düzenlenmiş ve index.html göstermez.

Ben baktığımızda /varile ls -lgördüğüm

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

ve ls -l /media/gördüğümde

drwxrwx---  1 root vboxsf ... sf_Dev

ve Apache index.html dizinini görmüyor gibi görünüyor ( cp /var/www/index.html /media/sf_Dev/iirc)

Ayrıca grubu vboxsf yapmak için envvars düzenlemeye çalıştım ama sanırım bu kısmı yanlış yaptım.

export APACHE_RUN_GROUP=www-data

için

export APACHE_RUN_GROUP=vboxsf

Neyi yanlış yapıyorum, Apache2'nin bu dizinden dosya sunmasını sağlamak için ne yapmam gerekir? (teknik olarak apache için dosya sunmak istiyorum /media/sf_Dev/apache/wwwama her seferinde bir adım anlıyorum, bu yüzden kısa devre şeylerine yardımcı olursa, öyle olsun)

Yanıtlar:


22

Vboxsf grubunu apache için ek bir grup olarak eklemek muhtemelen en kolayı olacaktır.

Ubuntu:

sudo usermod -a -G vboxsf www-data

Fedora:

sudo usermod -a -G vboxsf apache

Otomatik bağlanan paylaşılan klasörlere erişmek istediğimde bunu yapar. Dosyalara erişmek için vboxsf grubuna kendi kullanıcı adınızı da eklemek isteyebilirsiniz.


Ancak apache uygulaması apache kullanıcı adı altında mı çalışıyor? Ben değişti düşündüm>.>
jcolebrand

Doğru, fedora ve ubuntu için apache kullanıcısını karıştırdım. editör :)
Fuu

1
Bana manuel montaj ile uğraşırken bir avuç zaman kurtardı .. teşekkürler!
xorinzor

Bu çözüm benim için Ubuntu 15'te düzeltildi. Çok teşekkürler!
Ian Lewis

3

Bu bir izin sorunu gibi görünüyor. /media/sf_Dev/"Diğer" (şu anda izin olmayan üçüncü izin bit grubu veya için ---) için okuma ve yürütme iznine ihtiyacınız olacaktır .

Bu nedenle, bu komutu çalıştırmanız gerekir (Ubuntu olduğu için sudo'yu not edin):

sudo chmod 775 /media/sf_Dev/

Bu, "diğer" için okuma ve yürütme ekleyecek ve sahip ve grup için tam izinler bırakacaktır.

Ayrıca dizin dosyasının / media / sf_Dev / dizininde bulunduğundan emin olun. (Cp komutunda sudo'yu unuttuğunuzu ve root olarak çalışmadığınızı varsayacağım.)


1
Ahhh, ancak ben ne zaman o bana yetiyor değişiklik yapmaz. Vboxfs ile ilgili bir şey bu değişikliklerin yapılmasına izin vermez (yani: NFTS gibi) ... oooh, sorun olabilir, dosyalar orijinal olarak NTFS'de barındırılmaktadır (bu bir windows host olduğundan) bunu yapabilir. ~~ Sormadan önce hata günlüğüne bakmayı unutmuştum. Bu akşam kontrol edeceğim. Ancak bunun bir izin hatası olduğunu varsayın.
jcolebrand

@jcolebrand Sorun giderme 1. kuralı: takılı mı? Nevermind cevabın uzun vadeli faydasını düşünüyorum ve sizi DB ve .NET adamı olarak tanıyorum. : P
George Marian

@jcolebrand Aptalca soru: Apache'yi yeniden başlattınız mı? sudo apache2ctl restart
George Marian

hahahahaha, bu yüzden yardıma ihtiyacım var, ben bir db ve .net adamım;) ... evet, aslında sudo subir wench olmaya başladıktan sonra tüm dizinlere gidip neyin "kırık" olduğunu görebiliyordum ... Josh'un daha sonra PHP dosyasıyla önerdiğini yapacağım.
jcolebrand

1
Vboxsf dosya sisteminin kök klasörü için ayar izinlerini desteklemiyor olabilir ve dosya izinlerini global olarak ayarlamak için mod, uid ve gid mount seçenekleri sunabilir.
billc.cn

2

Belirli hatanın ne olduğunu söylemediniz, sadece

ve Apache bu dizine koyduğum index.html dosyasını görmüyor

Belirli bir hata yardımcı olacaktır. Bunu error_loggenellikle /var/log/apache2/error.logUbunt altında olan, ancak bir ErrorLogYönerge ile yapılandırılabilen Apache'lerde dosyalayabilirsiniz .<VirtualHost>

Gerçek hata olmadan, George Marian'ın doğru olduğunu ve bir izin hatası olduğunu varsayıyorum. Apache'nin hangi grupta çalıştığını görmek için şunları kontrol edebilirsiniz:

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

/media/sf_Dev/Söylediği gibi izinleri takip etmeyi deneyin .

Ben bunu bir Alias ​​yönergesi ile ele almanızın daha iyi olabileceğini düşünüyorum, çünkü DocumentRoot'unuzun yalnızca belirli bölümlerini dışarıdaki konumlara işaret etmenize izin verecektir:

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

DÜZENLEME: Apache sunucusunda mod_php(FastCGI PHP değil) varsa ve kullanılmıyorsa suexec, Apache'nin aşağıdaki PHP snippitiyle uygun GID (grup kimliği) altında çalışıp çalışmadığını belirleyebilirsiniz:

<?php

var_dump(posix_getegid());

İle aynı GID değerini döndürdüğünden emin olun vboxsf. (Vboxsf için GID'yi bulabilirsiniz /etc/groups)


Sormadan önce hata günlüğüne bakmayı unutmuştum. Bu akşam kontrol edeceğim. Ancak bunun bir izin hatası olduğunu varsayın. Yukarıdaki George'a cevabımı gör
jcolebrand

TAMAM. O zaman Apache'nin GID olarak çalışmasına odaklanmalıyız vboxsf. Değiştirdiğiniz ilgili parçaları düzenleyebilir ve gönderebilir misiniz Group?
Josh

Envvarlarda bir satır düzenledim ve grup dedi, ama şu anda kutuya bakmıyorum.
jcolebrand

0

Paylaşılan klasörü otomatik olarak bağlanacak şekilde yapılandırdıysanız. Ardından önce aynı şeyi devre dışı bırakmanız ve paylaşılan klasörü manuel olarak bağlamanız gerekir. Vm'yi her başlattığınızda automount'a ihtiyacınız varsa, / etc / fstab içine ilgili girişi eklemeniz gerekir. (Görünüşe göre vs paylaşımlı klasörün fstab üzerinden bağlanmasıyla ilgili bir sorun var. Bu yüzden /etc/rc.local içine aşağıda belirtilen komutu eklemek başlangıçta takmak için çalıştı).

Paylaşımlı Klasörü Doğru Kullanıcı / Grupla Yükle

Anlayabildiğim kadarıyla, bu hata paylaşılan klasörün sahibi ve grubundan kaynaklanıyor. Apache oluşturulan dosyaların www-data grubuna ait olmasını bekler. Ancak, varsayılan olarak, VirtualBox içindeki paylaşılan klasör vboxsf kullanıcısına aittir. Bu kullanıcıyı www-data grubuna ekleyeceğiz. Bunu yapmak için konuktaki grup özelliklerini düzenleyin:

sudo usermod -a -G vboxsf www-data

Şimdi paylaşılan klasörü bağlayacağız ve www-data kullanıcısına ve grubuna atayacağız. Kullanıcı ve grup kimliğini kontrol etmek için konuk makinedeki / etc / passwd dosyasına bakabilirsiniz (cat / etc / passwd | grep 'www-data'). Debian tabanlı işletim sisteminde, her iki id de genellikle 33 değerine ayarlanır. Bu nedenle, konuğa sadece aşağıdaki komutu verin:

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

Web sitesinin paylaşılan klasörün adı olduğunu (yukarıdaki ekran görüntüsünde gösterildiği gibi) ve / media / sf_website klasörün nereye bağlanacağını unutmayın.

Daha fazla ayrıntı için bu bağlantıya bakın http://jimmybonney.com/articles/configure_virtualbox_shared_folder_apache_virtual_host/

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.