Apache tidak dapat mengakses folder di direktori rumah saya


29

Saya telah mengubah konfigurasi Apache untuk mengarah ke folder di direktori home saya:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /home/dbugger/html

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/dbugger/html/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Saya bahkan telah memberikan /home/dbugger/htmlizin kepada saya 777. Tetapi saya masih mendapatkan pesan kesalahan yang sama di http://localhost: "403 Forbidden"

Apa yang saya lewatkan?


Bagaimana dengan /home/dbuggerizin?
— Eric Carvalho

Maksudmu aku harus membuat 777 seluruh folder rumahku? Itu sepertinya berlebihan. Bahkan membuat 777 html bukanlah solusi yang aman. Saya hanya melakukan itu untuk mencoba mengidentifikasi akar masalah.
— Tenda Enrique Moreno

1
apache berjalan sebagai data-pengguna www. Jika pengguna itu tidak memiliki izin eksekusi di rumah Anda, apache tidak akan dapat membaca file apa pun.
— Eric Carvalho

Apakah tidak ada cara untuk menambahkan subfolder dari direktori home saya ke www-data tanpa harus memberikan akses lengkap ke folder home? Mengikuti logika itu sepertinya saya harus memberikan akses ke folder SEMUA RUMAH juga, karena saya harus memberikannya akses ke / home. Kelihatannya terlalu banyak
— Tenda Enrique Moreno

Jawaban:


25

Ini berhasil untuk saya

<Directory />
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
    Allow from all
</Directory>

Yang penting adalah berubah

Order allow, deny

untuk

Require all granted 

Anda menghemat waktu saya, saya tidak perlu mengubah izin
— khaled_webdev

Hai, saya senang itu membantu Anda
— szydan

3
Saya mengambil kebebasan untuk mencari apa yang "mengharuskan semua diberikan" dan menemukan bahwa itu adalah "setara baru" Allow from alldari apache 2.4 dan seterusnya - serverfault.com/questions/549517/…
— Programster

8
tidak, memberikan akses ke seluruh root tidak pernah merupakan ide yang baik!
— bjunix

9
Pengaturan AllowOverrideuntuk Alldi direktori root Anda ceroboh di terbaik! Lihat httpd.apache.org/docs/2.4/mod/core.html#allowoverride untuk detailnya.
— Bombe

19

Aktifkan userdirmodul:

sudo a2enmod userdir 

Aktifkan eksekusi PHP di direktori pengguna:

sudo nano /etc/apache2/mods-available/php5.conf  

(Atau jika menggunakan php7.0, misalnya)

sudo nano /etc/apache2/mods-available/php7.0.conf

Komentari bagian ini (letakkan #di awal setiap baris):

#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>

Tekan Ctrl+ Xuntuk menyimpan

Aktifkan daftar direktori:

sudo nano /etc/apache2/apache2.conf

Tambahkan ini:

<Directory /home/*/public_html/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Tekan Ctrl+ Xuntuk menyimpan


Mulai ulang apache ( sudodiperlukan di sini juga):

sudo service apache2 restart

Sekarang letakkan file php Anda di /home/yourname/public_htmldirektori dan buka
http://localhost/~yournamedari browser web Anda.


11

Apache berjalan sebagai pengguna www-data. Jika tidak memiliki izin eksekusi di rumah Anda, apache tidak akan dapat membaca file apa pun.

Ubah grup rumah Anda menjadi www-data:

chgrp www-data /home/dbugger

Dan berikan izin hanya untuk melintasi direktori home Anda:

chmod g+x /home/dbugger

Anda juga dapat membatasi izin /home/dbugger/html:

chgrp www-data /home/dbugger/html
chmod 750 /home/dbugger/html

Bisakah saya melakukan itu, tetapi bukannya /home/dbuggermenggunakan /home/dbugger/html?
— Tenda Enrique Moreno

Anda juga dapat menerapkan izin itu /home/dbugger/htmldaripada 777, tetapi Anda harus ingat bahwa jika pengguna www-data tidak dapat cdke rumah Anda, itu tidak akan dapat mengakses file atau subfolder apa pun. Jadi, jika izin rumah Anda adalah rwx------ dbugger:dbuggerapache tidak akan dapat mengakses file apa pun di dalam rumah Anda. Jika Anda tidak ingin membatasi akses sedikit Anda bisa mencoba memberikan hanya mengeksekusi izin ( chmod g+x /home/dbugger), saya tidak yakin, tapi saya pikir itu berfungsi.
— Eric Carvalho

Maaf tetapi tidak satu pun dari solusi ini yang berhasil :(
— Enrique Moreno Tent

chgrp www-data /home/dbuggerdalam kombinasi dengan metode @DavidGreene membuatnya bekerja untuk saya
— laurent

Anda juga dapat menambahkan grup pengguna Anda ke pengguna apache (www-data) sudo usermod -a -G dbugger www-data, setelah itu Anda perlu memulai kembali apache.
— TIIUNDER

1

Anda tidak perlu mengubah izin jika Anda ingin menggunakan direktori home Anda untuk meng-host lingkungan pengembangan, setidaknya Anda perlu izin menulis untuk beberapa aplikasi. Anda memerlukan modul mod_userdir apache dan Anda dapat mengakses / home / user_name / public_html / * seperti ini http: //domain.local/~user_name/dir_name/ * untuk menggunakan host virtual, untuk menggunakan modul mod_userdir Anda perlu membuat sym tautan seperti ini:

$ sudo ln -s /etc/apache2/mods-available/userdir.conf /etc/apache2/mods-enabled/
$ sudo ln -s /etc/apache2/mods-available/userdir.load /etc/apache2/mods-enabled/
$ sudo service apache2 restart

5
Anda juga dapat menggunakana2enmod userdir
— Joril
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.