GNU/Linux >> Belajar Linux >  >> Linux

Pengguna apa yang harus menjalankan apache dan PHP? Izin apa yang harus dimiliki file /var/www?

  1. bukan root
  2. bukan root
  3. SuEXEC
  4. Tergantung. 644 untuk file dan 755 untuk folder adalah default yang aman.

Jangan ubah kepemilikan apa pun menjadi www-data kecuali jika Anda ingin php dapat mengedit konten file/folder tersebut

Terlepas dari hal lain yang Anda lakukan:folder perlu membaca dan menjalankan izin bagi pengguna untuk menemukan file; file memerlukan izin baca bagi pengguna untuk membacanya. Jika Anda mendapatkan kesalahan izin saat mengubah sesuatu - Anda telah berhasil menghapus izin yang diperlukan secara fundamental ini.

Jika Anda tidak menulis file apa pun melalui aplikasi php Anda, Anda dapat meninggalkan file milik Anda:Anda. Dalam keadaan ini, izin dunia (xx4/5) adalah salah satu yang berlaku.

Jika Anda membiarkan file sebagai milik Anda:Anda dengan izin file 644 (file) artinya hanya Anda dapat mengedit file situs web - www-data bukan Anda - sehingga tidak dapat mengedit file.

Jika Anda ingin membatasi akses ke apache + Anda dan memblokir semua akses lainnya chown -R you:www-data * . Dengan izin file 640 dan izin folder 750 Anda dapat mengedit, www-data dapat membaca - karena kemudian apache membaca izin grup (x4/5x).

Batasi seminimal mungkin jalur yang Anda izinkan untuk ditulis oleh apache/php - jika ada direktori tmp yang perlu ditulis oleh aplikasi - izinkan untuk menulis ke folder itu saja - dan untuk setiap lokasi yang dapat ditulis jika memungkinkan, pastikan itu di luar root dokumen atau lakukan langkah-langkah untuk memastikan jalur yang dapat ditulis ini tidak dapat diakses web.

Perhatikan bahwa "Anda" seharusnya tidak menjadi akar. Mengizinkan akses ssh langsung sebagai root adalah indikator penyimpangan keamanan lainnya (seperti tidak melarang login kata sandi), tapi itu adalah banyak pertanyaan tersendiri.


Jadi jika saya memahami semuanya dengan benar, jika apache berjalan sebagai www-data dan saya ingin apache dapat membaca direktori, bit x perlu disetel untuk grup dunia (lain) (o+x), dan itu juga perlu menimpa semua direktori induk di sepanjang rantai (www, var). Dan jika saya ingin apache dapat membaca dari file, maka o+r bit perlu disetel.

Ini tidak benar, Anda tidak perlu menyetel rwx untuk yang lain'. Anda harus mengubah pemilik dan/atau grup folder/file tertentu yang ingin Anda lindungi. Misalnya:

chown -R cwd:www-data /var/www/cwd.com
chmod 750 /var/www/cwd.com

Sekarang hanya anggota grup www-data dapat membaca /var/www/cwd.com . Dan hanya Anda (cwd) yang dapat menulisnya. Jika Anda ingin mengizinkan aplikasi Anda (melalui Apache) untuk menulis/memodifikasi file di direktori itu juga, Anda mengubahnya menjadi 770.

Saya pikir ini mencakup semua masalah Anda, saya tidak melihat alasan untuk mengubah pengguna apache yang sedang berjalan.


Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Saya Menambahkan Pengguna Ke Grup, Tetapi Izin Grup Pada File Masih Tidak Berpengaruh?

  3. Perbedaan Antara /var/log/messages, /var/log/syslog, Dan /var/log/kern.log?

  1. UNIX / Linux :Apa izin yang benar dari direktori /tmp dan /var/tmp?

  2. Apa itu file /dev/zero dan /dev/null di Linux?

  3. Kapan saya harus menggunakan /dev/shm/ dan kapan saya harus menggunakan /tmp/?

  1. Cara Menemukan File Konfigurasi MySQL, PHP dan Apache

  2. Apa cara terbaik untuk menangani izin untuk www-data pengguna Apache 2 di/var/www?

  3. Izin apa yang harus dimiliki file/folder situs web saya di server web Linux?