Apache: chmod 755, Mac OS 10.5'te Apache httpd'de symlink veya takma ad ayarlamak için yeterli değil mi?


15

Benim Mac OS 10.5 makinede, ben bir alt klasör kurmak istiyoruz ~/Documentsgibi ~/Documents/foo/htmlolmak // localhost / foo: http .

Yapmayı düşündüğüm ilk şey Takma Adı şu şekilde kullanmak:

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

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

    Order allow,deny
    Allow from all
</Directory>

Bu beni 403 yasakladı. Error_log içinde aldım:

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

Söz konusu alt klasör chmod 755 erişimine sahiptir. Http: //localhost/foo/test.php gibi beğenileri belirtmeyi denedim , ancak bu da işe yaramadı. Sonra, symlink yolunu denedim.

Gittim /Library/WebServer/Documentsve bir symlink yaptı ~/Documents/foo/html. Belge kökünde

Options Indexes FollowSymLinks MultiViews

Bu beni hala 403 yasakladı:

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

Bunu ayarlamak için başka neye ihtiyacım var?

Çözüm :

$ chmod 755 ~/Documents

Genel olarak, paylaşılacak klasörün ve tüm üst klasörünün wwwhizmet kullanıcısı tarafından görüntülenebilir olması gerekir .


Bu çözümü yayınladığınız için çok teşekkürler - bu, cevabı arayan yaşları harcadıktan sonra gerçekten bana yardımcı oldu
Tomba

@Tomba Sorun değil.
Eugene Yokota

Yanıtlar:


24

Bahse girerim erişmek istediğiniz dizinin üzerindeki bazı dizinlerin Apache'nin onu geçmesine izin vermek için izinleri olmadığını. Apache'nin çalıştığı ( sudo -i -u apacheveya her ne olursa olsun) kullanıcı olun , sonra ilgilenilen dizine geçmeye çalışın ls. Yapamıyorsanız (beklendiği gibi), o zaman bir kişi içeri girene kadar üstündeki dizinlere tek tek girmeyi deneyin. Bunun alt dizini o+xayarlanması gereken dizindir . Köpürtün, durulayın, gerektiği kadar tekrarlayın.


1
Evet, 'Siteler' çalışıyorsa, büyük olasılıkla Belgeler'de doğru bir sorununuz vardır, 'Siteler' çalışmıyorsa muhtemelen kullanıcı dizininizde doğru bir sorununuz vardır (bu dosya vault ile birlikte eklenebilir)
yarıçapı

1
~ / Belgeler 700 idi.
Eugene Yokota

sudo -i -u _wwwOS X'te çalıştırırsam (Apache kullanıcısı OS X'deki varsayılan apache yapılandırmasında _www olduğu için), o zaman yaparım whoami, hala kullanıcı adımı alıyorum, _www değil
Jason S

Sudo ile başka bir kullanıcıya tam olarak geçmek sudo - www-dataiçin tek başına '-' kullanıyorum: (Ubuntu için).
Alexis Wilke

2

kullanım +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/tr/mod/core.html#options'a göre , "Seçenekler yönergesindeki tüm seçeneklerin önünde bir + veya - simgesi varsa, seçenekler birleştirilir." ~ / Belgelerin 700 olmasına nasıl yardımcı olacak?
Eugene Yokota

AFAIK FollowSymLinks seçeneği etkinleştirmez, yalnızca dizin hiyerarşisinin daha düşük bir düzeyinde etkinleştirilmesini sağlar.
Dave Cheney

1
Bu benim için doğru cevaptı. / Etc / apache2 / users içindeki conf dosyasını değiştirdim ve FollowSymLinks'e izin verdim (+ olmadan). Yeniden başlatmayı unutmayın.
superluminary

1

Dosya kasasının etkin olmadığından emin olun. Ben de aynı problemi yaşadım. Bulabildiğim her şeyi denedim. Hiçbir şey işe yaramadı. Ancak bunu anlamaya çalıştıktan bir saat sonra, dosya kasasının etkin olduğunu hatırladım.

Devre dışı bırakılması sorunu çözdü.


1

Symlink sahipliğini kontrol edin. Mac OS X'te olduğunuzdan, symlink sahipleri değiştirilebilir. In /Library/WebServer/Documentsdols -l

İçin bağlantınız ~/Documents/foo/htmlçağrılırsa foove aşağıdaki gibi izinlere sahipse

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

Daha sonra OS X'te varsayılan olarak Apache _www kullanıcısı ve _www grubu olarak çalışır, bu nedenle yukarıda belirtilen durumda, ~/Documents/foo/html

Run man 8 chownonline tarafındaki sistem terminali veya bir görünüm üzerindeki adam chown

-hSeçeneği kullanmanın işaret ettiği dosya (kaynak) yerine sembolik bağlantının sahipliğini değiştireceğini göreceksiniz. Sonra böyle bir şey yapabilirsiniz

sudo chown -h :_www foo 

Bu, simlink değerini

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

ve Apache _www grubu bağlantıdan geçebilir.


0

Kullanıcılarınızın (birisinin) haklarını görmek için / Users dizininizi (ls -l / Users) kontrol edin.
Ayrıca 'Sites' dizini localhost / ~ birisi üzerinde doğru olarak mevcut mu?


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.