Pengguna Apache2 diaktifkan, tetapi masih tidak memiliki akses

9

Saya mencoba menyiapkan server apache di laptop Kubuntu 13.04 saya. Saya telah menginstal paket apache2 dan sudo a2enmod userdir; sudo service apache2 restart, tetapi masih ketika saya mengunjungi http://localhost/~user, ia mengatakan sesuatu seperti ini:

Forbidden

You don't have permission to access /~user on this server.

Apache/2.2.22 (Ubuntu) Server at localhost Port 80

Hasil dari tail /var/log/apache2/access.log

127.0.0.1 - - [02/Aug/2013:16:22:01 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:16:22:02 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /~kaiyin HTTP/1.1" 403 501 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:36:26 +0200] "GET /favicon.ico HTTP/1.1" 404 499 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:36:26 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /~kaiyin HTTP/1.1" 403 501 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"

Hasil dari tail /var/log/apache2/error.log

[Fri Aug 02 21:05:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:05:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:54 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:54 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /~kaiyin denied
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /~kaiyin denied
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
qed
sumber
Apakah Anda memiliki public_htmldirektori untuk pengguna? Apakah pengguna yang menjalankan apache memiliki izin untuk membacanya?
jordanm
@jordanm Ya, saya telah menetapkannya ke 755, juga mencoba 777.
qed

Jawaban:

8

The public_htmldirektori harus memiliki hak akses mereka seperti ini sehingga pengguna bahwa Apache berjalan sebagai akses dapat itu:

$ chmod -R 755 ~/public_html

masih belum bekerja?

Jika Anda melihat log kesalahan Apache Anda, Anda mungkin melihat baris seperti ini:

[Jumat 02 Agustus 21:06:59 2013] [kesalahan] [klien 127.0.0.1] (13) Izin ditolak: akses ke / ~ kaiyin ditolak

Ini memberi tahu Anda bahwa Apache tidak memiliki izin untuk bernavigasi ke direktori pengguna Anda (~ kaiyin) dalam contoh ini.

Bagaimana cara memperbaikinya?

Anda perlu memastikan bahwa bit baca + eksekusi diatur untuk grup yang mana Apache merupakan anggota atau bit baca + eksekusi lainnya diatur pada direktori pengguna juga sehingga Apache dapat mengakses public_htmlfolder di bawah.

Contoh

/home
|-- [drwxr-x---]  /home/sam

/home/sam
|-- [drwxr-xr-x]  /home/sam/public_html

Referensi

slm
sumber
Saya sudah melakukan itu, tetapi saya masih mendapatkan 403 terlarang.
qed
@CravingSpirit - ekor log apache ( /var/log/httpd/access.log) dan ( /var/log/httpd/error.log) untuk melihat apakah ada pesan tambahan.
slm
Saya telah menambahkan log ke posting.
qed
@CravingSpirit - perhatikan akses yang ditolak pada ~ kaiyin`? Pengguna Apache tidak memiliki akses ke direktori tingkat atas pengguna. Anda perlu membaca + mengeksekusi hak agar dapat mengaksesnya.
slm
2
Sebenarnya, Anda hampir pasti tidak membutuhkan 755; 711 atau bahkan 710 grup www-data harus dilakukan pada orang tua public_html; itu akan dilakukan pada public_html juga jika Anda tidak memerlukan daftar file, jika tidak Apache akan perlu membaca juga (jadi 755/750 daripada 711/710).
CVn
1
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root

  <Directory /home/*/public_html>
    AllowOverride All
    Options MultiViews Indexes SymLinksIfOwnerMatch
    <Limit GET POST OPTIONS>
      # Apache <= 2.2:
      #Order allow,deny
      #Allow from all

      # Apache >= 2.4:
      Require all granted
    </Limit>
    <LimitExcept GET POST OPTIONS>
      # Apache <= 2.2:
      #Order deny,allow
      #Deny from all

      # Apache >= 2.4:
      Require all denied
    </LimitExcept>
  </Directory>
</IfModule>

Pastikan Anda memiliki pengaturan yang benar /etc/apache2/mods-enabled/userdir.conf. Saya mendapat izin ditolak setelah chmodding public_html saya dan kemudian memutuskan untuk memeriksa userdir.conf. Saya perhatikan ada pengaturan untuk versi apache sebelumnya, dan juga yang lebih baru. Saya tahu saya sedang menjalankan yang terbaru sehingga mengaktifkan pengaturan yang lebih baru dan sekarang semua bekerja dengan baik

Darryl
sumber
0

Anda juga dapat menggunakan /etc/hostsfile untuk menghilangkan kebutuhan URL sementara. Jika ada referensi untuk URL lengkap dalam tema atau plugin (jika ada), situs tidak akan menampilkan konten dalam format yang tepat.

Karthik
sumber