Apache "Klien ditolak oleh konfigurasi server", meskipun mengizinkan akses ke direktori (konfigurasi vhost)

38

di Apache pada Ubuntu saya sudah membuat vhost, tetapi di browser saya terus mendapatkan kesalahan "403 Akses terlarang"; log mengatakan " Klien ditolak oleh konfigurasi server: / home / remix / ".

Mencari solusi online saya menemukan banyak posting tentang akses direktori (Izinkan dari semua, dll), tetapi sejauh yang saya tahu saya sudah melakukannya. Di httpd-vhosts.conf ada kode berikut:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin [email protected]
    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>

Saya juga menambahkan

127.0.0.1    testproject

ke file / etc / hosts.

Juga, folder / home / remix / berisi file index.html dan vhosts diaktifkan di httpd.conf.

Apakah ada sesuatu yang tidak saya lihat?

Sunting: Ini adalah entri Apache error_log:

[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/
Remix
sumber
Apa yang ada di log kesalahan Apache?
Shane Madden
Ah, saya pikir saya lupa sesuatu ... Saya telah menambahkannya ke posting asli.
Remix
Versi Apache apa yang Anda gunakan?
Shane Madden
Apache / 2.4.2 (Unix)
RemiX

Jawaban:

65

Ubah konfigurasi otorisasi Anda:

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

... ke versi Apache 2.4 yang sama.

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

Tinjau dokumen ikhtisar pemutakhiran untuk informasi tentang perubahan lain yang perlu Anda buat - dan perhatikan bahwa sebagian besar contoh konfigurasi dan bantuan yang Anda temukan di Google (dan juga situs ini) merujuk ke 2.2.

Shane Madden
sumber
2
Jika saya punya waktu, saya akan mencatat bug tentang ini karena httpd -t mengatakan tidak ada masalah menggunakan sintaks yang lebih lama, dan begitu juga httpd -S. Dalam pikiran saya, inti dari pemeriksa konfigurasi adalah harus menunjukkan masalah! ... Jika Anda memiliki direktori yang Anda referensikan tanpa ini, itu tidak akan berfungsi - sesederhana itu. ... Jempol pada jawabannya.
Richard T
4

Periksa izin pada direktori. Saya berani bertaruh bahwa itu diatur untuk menolak akses ke siapa pun kecuali Anda sendiri, misalnya:

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

Jika Anda melihat dengan drwx------tepat, maka ini masalahnya. Perbaiki dengan menjalankan:

chmod a+x /home/remix
Michael Hampton
sumber
Saya melihat: drwxrwxr-x 2 remix remix 4096 16 Agustus 09:36 / home / remix. Saya tetap mencoba perintah itu, tanpa hasil.
Remix
Ahh, tidak bisa memenangkan semuanya.
Michael Hampton
3

Pastikan bahwa pengguna yang menjalankan httpdlayanan memiliki akses ke direktori ini.

cpt.Buggy
sumber
Saya tidak yakin siapa pengguna untuk httpd atau cara memeriksa, tetapi semua orang dapat membaca (pengguna / grup / lainnya).
Remix
Periksa httpd.conf untuk Userparam.
cpt.Buggy
1
Ok itu tertulis 'User nothing', dan 'Group nogroup'. Saya mencoba mengubahnya menjadi 'Pengguna remix' (yang merupakan pemilik folder), tetapi bahkan itu tidak akan membantu.
Remix
1

"klien ditolak oleh konfigurasi server" berarti server Linux itu sendiri melarang akses ke file, bukan Apache.

Jika menyediakan akses melalui perubahan izin / kepemilikan / keanggotaan grup tidak menyelesaikan masalah, penyebab rute mungkin SELinux melarang akses ke folder apa pun yang tidak memiliki konteks SE Linux yang sesuai seperti yang dijelaskan dalam 'Merelokasi Apache DocumentRoot di bawah Selinux' .

  • Jika sementara menonaktifkan SELinux dengan melakukan setenforce 0membuat file dapat diakses
  • Sedangkan mengaktifkan kembali SELinux dengan melakukan setenforce 0membuat lagi file tidak dapat diakses

Maka pasti akses itu dilarang oleh SELinux apa pun izin file-nya.

Vincent
sumber
0

Lain sederhana (tetapi gotcha rumit) yang dapat menyebabkan masalah ini bagi orang-orang adalah ketika direktori pengguna tidak di / home / * Tapi di tempat lain misalnya / nethome / *

Userdir.conf yang disediakan berisi sesuatu seperti ini: (tetapi dengan Userdir: dinonaktifkan)

$ 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>

Spesifikasi Direktori mengasumsikan ~ user == / home / user. Cukup ubah atau tambahkan spesifikasi Direktori untuk tempat direktori home pengguna sebenarnya.

Cukup jelas tapi butuh beberapa saat untuk mencari tahu !! :-P DUH!

misalnya ~ pengguna == / nethome / pengguna

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

Lihat juga otorisasi yang lebih terbuka pada Direktori itu secara umum.

gaoithe
sumber