Apache terhubung ke direktori rumah - Kesalahan Izin

15

Saya mempunyai beberapa masalah dengan menghubungkan saya /var/www/ke Webrootdirektori baru di dalam folder rumah saya. Saya pikir ini berasal dari kurangnya pemahaman saya tentang izin linux.

Sejauh yang saya sadari, symlink harus berbentuk direktori yang ingin Anda tautkan dan direktori yang ingin Anda tautkan, jadi dalam kasus saya, saya menjalankan:

sudo ln -s ~/Webroot/* /var/www/

ini telah semacam bekerja, jika saya menjalankan lsatas /var/www/saya bisa melihat semua file di saya Webrootdirektori.

Setiap kali saya mencoba menjalankan file yang ada di Webrootfolder saya , saya mendapatkan kesalahan izin 403, apakah ini karena file dalam direktori Webroot saya buat oleh saya, dan instance apache dijalankan sebagai data-www?

jika ini masalahnya, apakah ini berarti saya harus mengubah izin pada setiap file yang saya buat untuk menjalankannya?

Saya sebelumnya telah menjalankan instance apache lokal saya menunjuk root direktori vhost default saya ke Webrootfolder, dalam hal ini saya tidak perlu mengubah izin. Bantuan apa pun akan dihargai.

richzilla
sumber
Anda telah memeriksa untuk memastikan apache tidak dikonfigurasi untuk tidak mengikuti symlinks .... saya punya masalah ini sekali. thread terkait di forum lain mungkin berada di sini: linuxforums.org/forum/servers/...
RobotHumans

Jawaban:

15

Ini bukan praktik yang baik, saya setuju dengan Weboide. Tetapi ada cara sederhana untuk mencapai tujuan ini.

1). aktifkan modul apache userdir.

sudo  a2enmod userdir

ini akan mengaktifkan modul apache userdir. Sekarang Anda dapat memasukkan konten situs web ~/Webroot/atau apa pun di dalam direktori home Anda.

Catatan: Folder default adalah ~/public_html

2). Buat perubahan yang diperlukan untuk /etc/apache2/mods-enabled/userdir.conf.

3). Mulai ulang apache

sudo /etc/init.d/apache2 restart

Sekarang Anda dapat mengakses situs dengan menavigasi browser Anda ke http: // ip-address / ~ username . Anda juga dapat mengatur host virtual untuk situs ini.

Jika Anda ingin menjalankan file php, Anda perlu melakukan satu langkah lagi

edit /etc/apache2/mods-enabled/php5.confdan komentari baris berikut:

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

Kemudian restart apache.

Itu dia. Kamu selesai.

Ref: https: //wiki.ubuntu.com/UserDirectoryPHP

Semoga ini membantu. Jika Anda menghadapi kesulitan, jangan ragu untuk mempostingnya di sini.

aneeshep
sumber
7

Ini bukan praktik yang baik untuk mencapai apa yang Anda inginkan.

Jika Anda menggunakan PHP, Anda mungkin ingin melihat suexec , suphp atau php-fpm dan fastcgi .


Anda benar tentang masalah Anda, ini adalah masalah izin karena Webrootfile Anda dimiliki oleh pengguna yang berbeda www-data.

Ini adalah solusi yang tidak terlalu buruk untuk mengatasi masalah Anda. Perhatikan bahwa Anda mungkin perlu menggunakan sudo atau login sebagai root. Pastikan Anda sepenuhnya memahami semua perintah yang akan Anda jalankan !!

Ubah Webrootfolder dan subfolder dan file Anda untuk mengatur kepemilikan grup www-datadan mengatur izin yang tepat:

# set the group ownership to be www-data
chgrp -R www-data /path/to/home/Webroot/
# make sure www-data has read & write permissions (change it to `g=r` if you want to only give read-only access)
chmod -vR g=rw /path/to/home/Webroot/
# make sure www-data can access the folders by adding the group execute bit field to directories
find /path/to/home/Webroot/ -type d -print0 | xargs -0p chmod -v g+x

Sunting: Perhatikan bahwa Anda tentu perlu menjalankan perintah itu lagi jika Anda menambahkan file / folder menggunakan akun pengguna biasa Anda.

Weboide
sumber
2

Saya melakukan hal yang hampir sama dengan Debian Lenny, tetapi saya mengubah ke mode non-hax, saya telah mengkonfigurasi apache dengan benar. Tetapi dengan symlink:

$ ll /home
drwxr-xr-x  8 root   root   4,0K nov 14 14.59 .
drwxrwxrwx  7 root   root   4,0K nov 14 21.24 www -> /var/www

Saya pikir Anda harus memeriksa permisson dari ~ dan ~ / Webroot , saya pikir dir Anda (~) terbaca, maksud saya, Anda harus menjalankan ini:

$ ls -la /home

Untuk mengatur perizinan yang tepat, gunakan:

# chmod 755 /home
# chmod 755 /home/<YOURNAME>
# chown <YOURNAME>:www-data -R /home/<YOURNAME>/Webroot
# chmod 775 -R /home/<YOURNAME>/Webroot

Saya pikir, ini akan membantu, tetapi beri saya lebih banyak info tentang ini. Saya sarankan Anda, untuk keluar dari Webroot dari direktori Anda, mis. ke / rumah seperti saya , karena bisa jadi masalah keamanan.

"#" berarti root permisson , mis. tulis sudo sebelum perintah; "$" berarti izin pengguna tunggal

antivirtel
sumber
0

Anda harus memeriksa izin tidak hanya tentang tujuan Anda, tetapi juga orang tuanya.

zVictor
sumber
Mengapa? Apakah ini batasan Apache atau batasan filesystem?
Flimm
Maaf. Saya tidak mengecek informasinya, hanya berdasarkan pengalaman pribadi.
zVictor
0

Saya dihadapkan dengan masalah ini. Tapi saya tidak suka ide mengubah grup direktori home saya menjadi www-data. Masalah ini dapat diselesaikan dengan memodifikasi file konfigurasi untuk virtualHost. Cukup konfigurasikan tag Direktori untuk memasukkan ini

<Directory "your directory here">
   Order allow,deny
   Allow from all
   Require all granted
</Directory>

Ini Require all grantedadalah fitur baru yang saya kira; memiliki nilai default denied.

Lihat halaman ini untuk referensi: http://httpd.apache.org/docs/current/mod/core.html#directory

Peter
sumber