Saya bersiap-siap untuk menyebarkan situs Drupal 7 dan saya tidak dapat menemukan dokumentasi apa pun yang harus ditetapkan untuk izin file dan direktori sadar keamanan yang disarankan.
Khususnya default/files/
(juga sub direktori?) settings.php
,, .htaccess
Dan hal lain yang harus saya ketahui.
Jawaban:
Server web Anda harus dapat membaca semua file tetapi tidak menulisnya. Jika situs Anda melibatkan mengunggah file maka berikan izin server untuk menulis ke satu folder saja.
Informasi lebih lanjut tentang cara mengaturnya, serta beberapa hal yang dapat terjadi jika Anda tidak melakukannya, tersedia di dokumen Drupal .
sumber
Itu drupal halaman seperti begitu banyak sangat panjang dan membingungkan. Tapi itu berisi posting ini oleh Jason, yang memukul paku di kepala:
sumber
Praktik saya dalam membuat situs Drupal baru di server adalah memiliki pengguna yang merupakan bagian dari grup server web (biasanya Apache), dan memiliki pengguna itu yang memiliki semua file Drupal. Di Ubuntu, ini adalah perintah untuk mengaturnya:
Setelah saya mengaturnya, saya akan masuk sebagai pengguna itu dan menginstal Drupal di / var / www / example / docroot atau sejenisnya, dan kemudian membuat direktori file dengan tangan dan menyalin ke file settings.php. Karena kami masuk sebagai contoh pengguna sebelum menyalin di Drupal, kepemilikan dan izin file kami harus secara otomatis dikonfigurasi dengan benar pada semua file dan skrip Drupal inti (termasuk file .htaccess).
Sekarang mari kita mengatur direktori file.
Selanjutnya kita akan mengatur izin agar server web selalu dapat menulis ke file apa pun yang ada di direktori ini. Kami melakukan ini dengan menggunakan 2775 dalam perintah chmod kami. Angka 2 berarti bahwa id grup akan disimpan untuk semua file baru yang dibuat dalam direktori ini. Artinya adalah bahwa www - data akan selalu menjadi grup pada file apa pun, sehingga memastikan bahwa server web dan pengguna akan selalu memiliki izin menulis untuk file baru apa pun yang ditempatkan di direktori ini. 7 yang pertama berarti bahwa pemilik (contoh) dapat R (Baca) W (Tulis) dan X (Jalankan) file apa pun di sini. 7 kedua berarti bahwa grup (www-data) juga dapat RW dan X file apa pun dalam direktori ini. Akhirnya, 5 berarti bahwa pengguna lain dapat file R dan X, tetapi tidak menulis.
Jika ada file yang ada di direktori ini, pastikan server web memiliki izin menulis pada mereka.
Sekarang Drupal siap diinstal. Setelah selesai, SANGAT penting untuk kembali ke settings.php dan memastikan bahwa semua pengguna hanya memiliki izin baca.
Itu dia! Pengaturan ini memastikan Anda menghindari situasi apa pun di mana pengguna yang memiliki direktori atau server web tidak dapat menulis / mengubah / menghapus file di direktori file.
sumber
Folder file Drupal harus dapat ditulis oleh server web. Cara paling aman untuk melakukannya adalah dengan mengubah grup dan menjadikannya grup yang dapat ditulisi, seperti ini:
Di samping folder unggah file, yang paling aman adalah chmod 644 untuk semua file, 755 untuk direktori.
Ini bisa dilakukan seperti ini (ketika dijalankan di folder situs Drupal,
.
is the for path saat ini):Ingatlah bahwa Anda perlu mengatur
chmod g+w
lagi setelah menjalankan perintah di atas, karena itu akan mengatur ulang chmod pada semua file dan folder.sumber
chgrp -R www-data sites/*/files
danchmod -R g+w sites/*/files
untuk menyingkirkan kesalahan halaman status.Saran apa pun untuk "chmod blah" atau "chown X" tidak ada artinya tanpa mengetahui: apa pengguna default: grup ada pada file dan apa pengguna dan grup yang dijalankan oleh server web Anda.
Drupal Docs yang telah ditautkan oleh orang lain cukup bagus tentang topik ini tetapi satu sumber lain adalah Modul Tinjauan Keamanan yang membantu memastikan Anda telah mengatur semuanya dengan benar.
sumber
Saya akan menjawab mengingat kasus file dibuat di server menggunakan FTP, menggunakan kredensial berbeda dari yang di bawahnya adalah server web berjalan (biasanya, Apache berjalan sebagai tidak ada / siapa pun). Ini berarti bahwa pengguna yang memiliki file yang dibuat secara manual sebelum menjalankan pemasang Drupal (yang termasuk juga file yang diunggah di server dari arsip Drupal) bukan pengguna yang digunakan untuk menjalankan server web (baik nama pengguna atau grup yang cocok) . Skenario ini berlaku juga untuk kasus di mana file-file tersebut dibuat menggunakan SSH.
default/files
direktori) harus (untuk pengguna yang ditugaskan ke proses server web, yang kemudian pengguna ditugaskan ke skrip PHP yang berjalan di server web itu):default/files/<directory-used-by-the-module>/<sub-directory-used-by-the-module>
)sumber
Izin file / direktori yang disarankan:
Kepemilikan file / direktori yang disarankan:
Berikut adalah variabel yang mengontrol izin file / dir default untuk item baru:
Berikut ini beberapa skrip untuk memperbaiki izin: fix-permissions.sh
Baca lebih lajut:
Berikut ini skrip yang saya gunakan untuk memperbaiki izin pada host jarak jauh untuk direktori publik / pribadi:
Catatan: Kode di atas akan mencoba untuk mengambil grup Apache dan mengaturnya ke
GET_HTTP_GROUP
variabel.sumber
Skrip shell ini ditemukan di bagian bawah halaman ini: https://www.drupal.org/node/244924
Saya menjalankannya sesekali untuk memastikan bahwa izin saya diatur dengan benar.
sumber
Juga jika Anda menjalankan fastcgi, php dijalankan sebagai pengguna, dan akan memiliki akses ke semua file yang dapat diakses oleh pengguna kecuali Anda sengaja mencoba menghindarinya.
sumber
Ini membantu saya dengan masalah Izin OSX saya. Saya menemukannya di https://www.drupal.org/node/244924#comment-3741738 oleh pengguna protoplasma. Saya seperti dia mengalami masalah setelah migrasi.
sumber
Ada modul bernama Tinjauan keamanan yang memeriksa apakah situs Anda aman atau tidak. Saya juga menemukan tautan yang sangat bagus untuk mengatur izin situs.
sumber