403 Mac OS X Localhost'ta Yasaklanan Hata


22

Mac OS X 10.6'da Sistem Tercihlerinde Web Paylaşımı kurdum ve bana orada verdiği bağlantıyı tıkladım. Ne yazık ki, Apache bana şu 403 hatasını verdi:

yasak

Bu sunucuda /~myusername/index.html adresine erişim izniniz yok.

Erişim günlüğü görüntüler: 10.0.1.2 - - [30/Jun/2010:16:25:15 -0700] "GET /~myusername/ HTTP/1.1" 403 210

Hata günlüğü görüntülenir: [Wed Jun 30 16:26:09 2010] [error] [client 10.0.1.2] client denied by server configuration: /Users/myusername/Sites/

Yeterince merak, http: // localhost erişen iyi çalışıyor. Sadece sorunum olan iki kullanıcı klasörüyle, sistem güncellememden daha yeni olan diğer kullanıcı klasörü iyi çalışıyor.

Makinemde daha önce Leopard’da çalışmıştım, bu yüzden her şeyi ~/Sites755’e kopyaladım , ki hiçbir işe yaramadı. Baska öneri? Sanırım makineme buna neden olan bir şey yaptığımı düşünüyorum, çünkü Apple'ın böyle bir şeyle uğraştığını hayal edemiyorum.

PEAR'ı bu talimatlarla ayarlamıştım , ancak bunun nedeni olup olamayacağı konusunda hiçbir fikrim yok.


Bu aptalca bir soru ise üzgünüm, ama tam olarak hangi URL'ye gidiyorsunuz? "/~myusername/index.html" URL’sinin garip olduğu için soruyorum - ya "~ myusername / index.html" olmalı ya da " localhost / ~ myusername / index.html " olmalı ya da bir şey olmalı benzer. Basitçe / dan başlamak ve sonra ~ myusername eklemek komik kokuyor. Buna yanıt vermenin (veya bunun yerine) yanı sıra, Console.app (/Applications/Utilities/Console.app) 'a gidebilir ve apache2 access_log ve error_log öğelerini bulabilirsiniz. Bunu kaldırın, belki ekranı silin ve hata günlüğünün size ne söylediğini görmek için URL’nizi yeniden deneyin.
Michael H.

@khedron: URL localhost / ~ myusername / index.html , ancak hata /~myusername/index.html bölümünü gösteriyor
waiwai933

Tamam sadece kontrol ediyorum. Apache günlüğü konsolda (console.app) ne diyor?
Michael H.

@khedron: Ben soruyu erişim ve hata günlüğü kaydedildi. Başka biri var mı?
waiwai933

1
Ben de seninle aynı sorunu yaşıyorum ve ben sadece yapıyorum: chmod 777 / Uygulamalar / XAMPP / htdocs / myusername, benim için işe
yarıyor

Yanıtlar:


22

Apple bu sorun için bir destek belgesine sahiptir . Sorunu çözmek , aşağıdaki içerikleri içeren bir dosya oluşturmayı /etc/apache2/users/yourusername.conf( kullanıcı adınız hesabın kısa adıdır , örneğin danielbeck- genellikle ev klasörünüzün adıdır) içerir /Users:

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

Daha sonra sudo chown root:wheel /etc/apache2/users/yourusername.confApache'yi çalıştırın ve yeniden başlatın.


ve çok apache'yi yeniden başlatın, sadece sudo apachectl restartterminalinizde çalıştırın .
nil

15

Apache'nin dosyayı görmesi için, Apache'nin çalıştığı kullanıcının (muhtemelen wwwveya _www) bu kullanıcıların Siteleri dizinlerine erişimi olması gerekir. İçeriğine okuma / yürütme erişimine sahip olmak ~/Sitesyeterli değildir, çünkü /yolun aşağısına geçmesine izin verilmesi gerekir ~/Sites. Yani emin olun /, /Users, /Users/myusernameve /Users/myusername/Sitestüm önerilen en az bir a+xizni (dizinlerde eXecute bit Oku erişime izin olmasa bile, bu kullanıcı sınıfı dizin çapraz geçiş sağlar).

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

Bu dizinlerden herhangi biri son xseti ("diğerleri" için olanı) göstermezse, o dizine ayarlamak için bir şey kullanın chmod a+x ....

Bu dizinlerden herhangi biri için ACL, kullanıcının wwwözel olarak erişimi reddedildiğini gösteriyorsa chmod, ACL'leri düzeltmek için uygun argümanları kullanın .


Yürütme biti, tüm bu dizinler için ayarlanmıştır, ancak belirli bir kullanıcının erişiminin engellenip engellenmediğini nasıl kontrol edeceğimi bilmiyorum.
waiwai933

Bunun için "ls" 'de "e" var. Her bir dosya için ACL'leri (varsa) listeler.
Spiff

2
/ Users / myusername üzerindeki izinleri chmod 755 olarak değiştirmek benim için sorunu çözdü.
Mark

Bu komut, _www kullanıcısının kök dizininize ve / Users dizine vb. Erişmesine izin vermiyor mu? Bu doğru olamaz, değil mi? Bir sayfayı bir klasörde paylaşmak için bu güvenlik açıklarının tümü? Bu davranış bir yere mi belgeleniyor?
Tom Lianza,

Kendi yorumuma cevap vererek bu cevabı ( serverfault.com/a/293063/14970 ) bu davranışla ilgili güvenilir dokümantasyona bağlayan bir cevap buldum : wiki.apache.org/httpd/13PermissionDenied
Tom Lianza

5

Başvuru için, sadece bununla ilgilenmiştim ve buradaki yanıtların hiçbiri benim özel davamda işe yaramadı. Sanal ana bilgisayarları yapılandırıyordum, ancak daha da önemlisi, htaccess dosyalarımın gerçekten çalışması için gerekli.

/Etc/apache2/users/USERNAME.conf dosyamda "AllowOverride None" ifadesini "AllowOverride All" olarak değiştirdim ve tüm sitelerim yasaklanmaya başladı.

Onu geri değiştirdim ve sonra httpd-vhosts.conf dosyamdaki sadece bir site için değiştirdim ve sadece o site yasaklandı.

Kayıtlara baktıktan ve sorunu gördükten sonra URL'nin yeniden yazılması ve FollowSymLinks eksikliği ile USERNAME.conf dosyasına geri döndüm. "AllowOverride None" ı "AllowOverride All" olarak değiştirdim ve sonraki satıra "Options + FollowSymLinks" ekledim.

İşler çalışmaya başladı. Windows'ta xampp kullanmaktan gelmiştim ve bu ayarların birçoğu zaten benim gibi aptallar için sunucu çapında ayarlanmış.


1
çok teşekkürler, neler olup bittiğini
anlamak

1
Evet, Options +FollowSymLinksbir cazibe gibi çalıştı.
agarie

2

Aynı problemi yaşadım: (eski) hesabım erişilebilir değildi, ancak Lion'a yükselttikten sonra oluşturulan başka bir kullanıcının hesabı gayet iyi çalıştı.

/Etc/apache2/users/USERNAME.conf dosyanızın şöyle göründüğünden emin olduktan sonra:

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

sudo chown kökü yapın: wheel /etc/apache2/users/USERNAME.conf

Bu izin ayarının işletim sistemi yükseltme işlemi sırasında ayarlanmadığı anlaşılıyor ve Apache kullanıcısı config dosyasını okuyamıyor ve bir hata veriyor.

En azından bu benim için çözdü.


1
Ve belki sudo apachectl restartondan sonra koş .
Arjan

Bu benim için çalışıyor 10.7.5. Dizin yolu yerel web köküme işaret etmiyordu, bir kere her şeyi çalıştırarak apache'yi güncelleyip yeniden başlattım. Garip olan, yolun bir yıldan uzun süredir yanlış olduğu ve sürekli çalıştığıdır. Bugün hatayı mavi yaptım.
Supajb

2

10/2011 tarihinde Lion güncellemesi de eklemek zorunda kaldım

UserDir etkin olduğundan /etc/apache2/extra/httpd-userdir.conf benim şöyle:

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

İlk soru yorumlarından sohbete devam etme - /etc/apache2/httpd.confDosyanızı kontrol edin . Makinemde bu var:

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

Senin yorumlandığından şüpheleniyorum. 10.5'ten 10.6'ya taşınırken ve varsayılan değerler değiştiğinde, bunu elle değiştirdiğimi belli belirsiz hatırlıyorum.

Bu muhtemelen açıktır, ancak sudodosyayı düzenlemek için kullanmanız gerekir, çünkü root tarafından sahiplenilir.


1
Hayır, benimki tamamen sana benziyor.
waiwai933

1

Benim davam, Dropbox Klasöründeki XAMPP + Mac OS X 10.7 + Dizinidir ( Yığın Taşması'ndaki başka bir soruma çapraz gönderme )

Apache tarafından bildirilen Yasak 403 Erişim nedenle ben değişim Kullanıcı yukarıdaki açıklamasının ardından /XAMPP/xamppfiles/etc/httpd.confgelen User nobodyetmek User my_user_name. Apache'yi yeniden başlatın ve iyi çalışıyor.


0

Muhtemelen Dizinleri açmamışsınızdır . Gerekmiyorsa, bir dizin dosyası ( index.htmlveya index.php) oluşturmanız veya dosyayı açıkça belirtmeniz gerekecektir http://localhost/~me/mypage.html.


Üzgünüz, yalnızca iki kez kontrol etmek için localhost / ~ myusername / index.html adresini ziyaret etmem ve Siteler klasörümde index.html adlı bir dosyaya sahip olmam gerekir , değil mi? Eğer öyleyse, o zaman 403 hala oluyor.
waiwai933

~myusernameHiç inanmamı ziyaret etmemelisin . http://localhost/işaret etmeli /Users/youruser/Sites/.
Josh K,
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.