Apache “İstemci sunucu yapılandırması tarafından reddedildi”, dizine erişime izin verilmesine rağmen (vhost yapılandırması)


38

Ubuntu'daki Apache'de bir vhost oluşturdum, ancak tarayıcıda "403 Erişim yasaklandı" hatası alıyorum; Günlük " Müşteri sunucu yapılandırması tarafından reddedildi: / home / remix / " yazıyor .

Çevrimiçi çözümü aramak Dizin erişimi hakkında birçok yazı buldum (Hepsinden izin ver, vb.), Ancak bildiğim kadarıyla zaten yaptım. In httpd-vhosts.conf Aşağıdaki kod vardır:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/opt/lampp/htdocs/"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/home/remix/"
    ServerName testproject
    ServerAlias testproject
    <Directory "/home/remix/">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Ben de ekledim

127.0.0.1    testproject

/ etc / hosts dosyasına.

Ayrıca, / home / remix / klasörü bir index.html dosyası içerir ve vhosts httpd.conf dosyasında etkindir.

Görmediğim bir şey var mı?

Düzenleme: Bu Apache error_log girişidir:

[Sat Aug 18 09:15:32.666938 2012] [authz_core:error] [pid 6587] 
[client 127.0.0.1:38873] AH01630: client denied by server configuration: /home/remix/

Apache'nin hata günlüğünde neler var?
Shane Madden

Ah, bir şeyi unuttuğumu sandım ... orijinal yazıya ekledim.
RemiX

Apache'nin hangi sürümünü kullanıyorsunuz?
Shane Madden

Apache / 2.4.2 (Unix)
RemiX

Yanıtlar:


65

Yetkilendirme yapılandırmanızı değiştirin:

<Directory /home/remix/>
    #...
    Order allow,deny
    Allow from all
</Directory>

... aynı Apache 2.4 sürümüne.

<Directory /home/remix/>
    #...
    Require all granted
</Directory>

İnceleme yükseltme genel bakış belgesini ve yapılandırma örnekleri ve yardımı en Google'da orada öğrenmek olduğunu unutmayın (aynı zamanda bu sitede gibi) 2.2 bahsediyor - Ne yapmanız gerekebilir diğer değişiklikler hakkında bilgi almak için.


2
Zamanım olsaydı, bununla ilgili bir hata yazdım çünkü httpd -t, eski sözdizimini kullanırken hiçbir sorun olmadığını ve httpd -S de olmadığını söylüyor. Aklımda, bir yapılandırma denetleyicisi tüm amacı onun sorunları işaret etmesi gerektiği! ... Eğer buna atıfta bulunduğunuz bir dizin varsa, bu işe yaramaz - bu kadar basit. ... Cevabında başparmak yukarıya.
Richard T

4

Dizindeki izinleri kontrol et. Bahse girerim, kendinizden başka kimseye erişimi reddetmeye ayarlanmıştır, örneğin:

$ ls -ld /home/remix
drwx------ 92 remix remix 4096 Aug 17 22:59 /home/remix

drwx------Tam olarak görürseniz , durum budur. Çalıştırarak düzeltin:

chmod a+x /home/remix

Gördüğüm: drwxrwxr-x 2 remix remix 4096 Ağu 16 09:36 / home / remix. Emri olmadan yine de komutu denedim.
RemiX

Ahh, hepsini kazanamam.
Michael Hampton

3

httpdHizmeti çalıştıran kullanıcının bu dizinlere erişebildiğinden emin olun .


Httpd kullanıcısının kullanıcısının ya da nasıl kontrol edileceğinden emin değilim, ancak herkes okuyabilir (kullanıcı / grup / diğer).
RemiX

UserParam için httpd.conf dosyasını kontrol edin .
cpt.Buggy

1
Tamam, 'Kullanıcı kimsesi' ve 'Grup grubu' diyor. 'User remix' (klasörün sahibi) olarak değiştirmeyi denedim, ancak bu bile yardımcı olmuyor.
RemiX

1

"istemci sunucu yapılandırması tarafından reddedildi", Linux sunucusunun Apache'ye değil, dosyaya erişimi yasakladığı anlamına gelir.

Değişen izinler / sahiplik / grup üyeliği yoluyla erişim sağlanması sorunu çözmezse, rota nedeni, 'Selinux altında bir Apache DocumentRoot'un yerini değiştirmek ' bölümünde açıklandığı gibi uygun SE Linux bağlamı olmayan herhangi bir klasöre erişimi yasaklamak olabilir .

  • SELinux'u geçici olarak devre dışı bırakmak setenforce 0, dosyayı erişilebilir kılar.
  • SELinux'u tekrar etkinleştirmek setenforce 0, dosyayı tekrar erişilemez duruma getirir.

O zaman kesin olarak dosya izinleri ne olursa olsun SELinux tarafından erişim yasaktır.


0

İnsanlar için bu soruna yol açabilecek başka basit (ama hileli bir oyun), kullanıcı dizinleri / home / * değil, fakat başka bir yerde örneğin / nethome / * olduğunda

Verilen userdir.conf şöyle bir şey içerir: (fakat Userdir: disabled ile)

$ cat /etc/httpd/conf.d/userdir.conf 
<IfModule mod_userdir.c>
    UserDir enabled
    UserDir public_html
</IfModule>

<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

Dizin şartnamesinin ~ user == / home / user olduğunu varsayar. Sadece kullanıcı giriş dizinlerinin gerçekte nerede oldukları için Dizin spesifikasyonunu değiştirin veya ekleyin.

Oldukça belirgin ama anlamak için biraz zaman aldı! :- P DUH!

örneğin ~ kullanıcı == / nethome / kullanıcı

<Directory "/nethome/*/public_html">
    AllowOverride All
    Options MultiViews Indexes Includes FollowSymLinks
    Require all granted
</Directory>

Ayrıca, genel olarak bu Rehberle ilgili daha fazla açık yetkilendirmeye bakın.

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.