Saya sudah melihat-lihat di sini tetapi tidak menemukan detail tentang izin file terbaik. Saya juga melihat beberapa pertanyaan bentuk WordPress di sini juga, tetapi siapa pun yang menyarankan 777 jelas membutuhkan sedikit pelajaran tentang keamanan.
Singkatnya pertanyaan saya adalah ini. Izin apa yang harus saya miliki untuk yang berikut:
- folder root menyimpan semua konten WordPress
- wp-admin
- konten-wp
- wp-termasuk
dan kemudian semua file di masing-masing folder itu?
Jawaban:
Ketika Anda mengatur WP Anda (server web) mungkin perlu akses tulis ke file. Jadi hak akses mungkin harus longgar.
Setelah pengaturan, Anda harus memperketat hak akses , menurut Hardening WordPress, semua file kecuali konten wp hanya dapat ditulis oleh akun pengguna Anda saja. wp-content juga harus dapat ditulis oleh www-data .
Mungkin Anda ingin mengubah konten di wp-content nanti. Dalam hal ini Anda bisa
su
,Apa pun yang Anda lakukan, pastikan file memiliki izin untuk data-www .
sumber
www-data
??? Itu terdengar sangat tidak aman sama sekali.Memberikan akses penuh ke semua file wp kepada
www-data
pengguna (yang dalam hal ini pengguna server web) bisa berbahaya. Jadi, JANGAN lakukan ini:Namun itu dapat berguna pada saat Anda menginstal atau meningkatkan WordPress dan plug-in-nya. Tetapi ketika Anda selesai, itu bukan ide yang baik untuk menyimpan file wp yang dimiliki oleh server web.
Ini pada dasarnya memungkinkan server web untuk meletakkan atau menimpa file apa pun di situs web Anda. Ini berarti bahwa ada kemungkinan untuk mengambil alih situs Anda jika seseorang berhasil menggunakan server web (atau lubang keamanan dalam beberapa skrip .php) untuk meletakkan beberapa file di situs web Anda.
Untuk melindungi situs Anda dari serangan semacam itu, Anda harus melakukan hal berikut:
Sumber dan informasi tambahan: http://codex.wordpress.org/Hardening_WordPress
sumber
Bagi mereka yang memiliki folder root wordpress di bawah folder home mereka:
** Ubuntu / apache
KREDIT Pemberian izin menulis ke grup data-www
Anda ingin memanggil
usermod
pengguna Anda. Jadi itu akan menjadi:** Asumsikan
www-data
ada kelompokPeriksa pengguna Anda dalam
www-data
grup:groups yourUserName
Anda harus mendapatkan sesuatu seperti:
** youUserGroupName biasanya mirip dengan nama pengguna Anda
Ubah kepemilikan grup folder konten wp secara rekursif untuk menjaga kepemilikan pengguna Anda
chown yourUserName:www-data -R youWebSiteFolder/wp-content/*
Ubah direktori menjadi youWebSiteFolder / wp-content /
cd youWebSiteFolder/wp-content
Secara berkala mengubah izin grup folder dan sub-folder untuk memungkinkan izin menulis:
find . -type d -exec chmod -R 775 {} \;
Mode ** `/ home / yourUserName / youWebSiteFolder / wp-content / 'berubah dari 0755 (rwxr-xr-x) menjadi 0775 (rwxrwxr-x)
Secara berkala mengubah izin grup file dan sub-file untuk memungkinkan izin menulis:
find . -type f -exec chmod -R 664 {} \;
Hasilnya akan terlihat seperti:
Setara dengan:
chmod -R ug + rw foldername
Izin akan seperti 664 untuk file atau 775 untuk direktori.
Jika ada orang yang menemukan kesalahan
'could not create directory'
ketika memperbarui plugin, lakukan:server@user:~/domainame.com$ sudo chown username:www-data -R wp-content
ketika Anda berada di root domain Anda.
Dengan asumsi:
wp-config.php
memilikikredensial FTP di LocalHost
define('FS_METHOD','direct');
sumber
Cara terbaik untuk membaca dokumentasi wordpress di https://wordpress.org/support/article/changing-file-permissions/
sumber
Saya menetapkan izin untuk:
Dalam kasus saya, saya membuat pengguna tertentu untuk WordPress yang berbeda dari pengguna default apache yang mencegah akses dari web ke file-file yang dimiliki oleh pengguna itu.
Kemudian itu memberikan izin kepada pengguna apache untuk menangani folder unggahan dan akhirnya mengatur cukup izin file dan folder.
Diedit
Jika Anda menggunakan W3C Total Cache, Anda harus melakukan yang berikut juga:
Maka itu akan berhasil!
Diedit
Setelah beberapa saat mengembangkan situs WordPress, saya akan merekomendasikan izin file yang berbeda per lingkungan:
Dalam produksi, saya tidak akan memberikan akses kepada pengguna untuk memodifikasi sistem file, saya hanya akan mengizinkan mereka untuk mengunggah sumber daya dan memberikan akses ke beberapa plugin folder tertentu untuk melakukan backup, dll. Tetapi mengelola proyek di bawah Git dan menggunakan kunci penyebaran di server, itu bukan plugin pembaruan yang baik pada pementasan atau produksi. Saya meninggalkan di sini pengaturan file produksi:
www-data: www-data = apache atau nginx pengguna dan grup
Pementasan akan berbagi izin produksi yang sama seperti yang seharusnya merupakan tiruan dari itu.
Akhirnya, lingkungan pengembangan akan memiliki akses untuk memperbarui plugin, terjemahan, semuanya ...
www-data: www-data = pengguna apache atau nginx dan kelompokkan pengguna Anda: root-group = pengguna Anda saat ini dan grup root
Izin ini akan memberi Anda akses untuk mengembangkan di bawah
themes
danyour-plugin
folder tanpa meminta izin. Sisa konten akan dimiliki oleh pengguna Apache atau Nginx untuk memungkinkan WP mengelola sistem file.Sebelum membuat git repo, jalankan dahulu perintah ini:
sumber
Izin yang benar untuk file adalah 644 Izin yang benar untuk folder adalah 755
Untuk mengubah izin, gunakan terminal dan perintah berikut.
755 untuk folder dan 644 untuk file.
sumber
Saya pikir aturan di bawah ini direkomendasikan untuk situs wordpress default:
Untuk folder di dalam konten-wp, atur 0755 izin:
chmod -R 0755 plugins
chmod -R 0755 unggahan
chmod -R 0755 ditingkatkan
Biarkan pengguna apache menjadi pemilik untuk direktori konten-wp di atas:
unggahan apache chown
pemutakhiran apache chown
plugin apache chown
sumber
Ini sebenarnya tergantung pada plugin yang Anda rencanakan untuk digunakan karena beberapa plugin mengubah dokumen root dari wordpress. tetapi secara umum saya merekomendasikan sesuatu seperti ini untuk direktori wordpress.
Ini akan menetapkan "root" (atau apa pun pengguna yang Anda gunakan) sebagai pengguna di setiap file / folder tunggal, R berarti rekursif, jadi itu tidak berhenti di folder "html". jika Anda tidak menggunakan R, maka itu hanya berlaku untuk direktori "html".
Ini akan mengatur pemilik / grup "wp-content" menjadi "www-data" dan dengan demikian memungkinkan server web untuk menginstal plugin melalui panel admin.
Ini akan mengatur izin setiap file dalam folder "html" (Termasuk file dalam subdirektori) menjadi 644, sehingga orang luar tidak dapat mengeksekusi file apa pun, memodifikasi file apa pun, grup tidak dapat mengeksekusi file apa pun, memodifikasi file apa saja dan hanya pengguna diizinkan untuk memodifikasi / membaca file, tetapi bahkan pengguna tidak dapat menjalankan file apa pun. Ini penting karena mencegah segala jenis eksekusi di folder "html", juga karena pemilik folder html dan semua folder lain kecuali folder konten-wp adalah "root" (atau pengguna Anda), data-www dapat ' t memodifikasi file apa pun di luar folder konten-wp, jadi walaupun ada kerentanan di server web, dan jika seseorang mengakses situs secara tidak sah, mereka tidak dapat menghapus situs utama kecuali plugin.
Ini akan membatasi izin untuk mengakses "wp-config.php" untuk pengguna / grup dengan rw-r ----- izin ini.
Dan jika plugin atau pembaruan mengeluh tidak dapat memperbarui, maka akses ke SSH dan gunakan perintah ini, dan berikan izin sementara untuk "www-data" (server web) untuk memperbarui / menginstal melalui panel admin, dan kemudian kembali kembali ke "root" atau pengguna Anda setelah selesai.
Dan di Nginx (prosedur yang sama untuk apache) untuk melindungi folder wp-admin dari akses yang tidak sah, dan menyelidiki. apache2-utils diperlukan untuk mengenkripsi kata sandi bahkan jika Anda telah menginstal nginx, hilangkan c jika Anda berencana untuk menambah lebih banyak pengguna ke file yang sama.
Sekarang kunjungi lokasi ini
Gunakan kode ini untuk melindungi folder "wp-admin" dengan kata sandi, sekarang akan menanyakan kata sandi / nama pengguna jika Anda mencoba mengakses "wp-admin". perhatikan, di sini Anda menggunakan file ".htpasswd" yang berisi kata sandi terenkripsi.
Sekarang restart nginx.
sumber
Perintah:
Di mana ftp-user adalah pengguna yang Anda gunakan untuk mengunggah file
sumber
$(whoami)
bukanftp-user
. Secara default, pengguna Anda saat ini ( bukan root ) adalah pengguna FTP Anda jika Anda menggunakan server Anda sendiri (lokal, vps, dll)Untuk benar-benar memastikan bahwa situs web Anda aman dan Anda menggunakan izin yang benar untuk folder Anda, gunakan plugin keamanan seperti ini:
https://en-ca.wordpress.org/plugins/all-in-one-wp-security-and-firewall/
https://en-ca.wordpress.org/plugins/wordfence/
Plugin ini akan memindai instalasi Wordpress Anda dan memberi tahu Anda tentang masalah potensial. Ini juga akan memperingatkan Anda tentang izin folder tidak aman. Selain itu, plugin ini akan merekomendasikan kepada Anda izin apa yang harus diberikan ke folder.
sumber
sumber
Saya tidak dapat memberi tahu Anda apakah ini benar atau tidak, tetapi saya menggunakan gambar Bitnami melalui Google Compute App Engine. Saya mengalami masalah dengan plugin dan migrasi, dan setelah mengacaukan semuanya dengan izin chmod'ing, saya menemukan tiga baris ini yang menyelesaikan semua masalah saya. Tidak yakin apakah itu cara yang tepat tetapi berhasil untuk saya.
sumber
Untuk OS X gunakan perintah ini:
sumber
Tentukan dalam file wp_config.
chown - mengubah kepemilikan file / dir. Yaitu. pemilik file / dir berubah ke yang ditentukan, tetapi tidak mengubah izin.
sumber
Berdasarkan semua bacaan dan penderitaan di situs saya sendiri dan setelah diretas, saya menemukan daftar di atas yang mencakup izin untuk plugin keamanan untuk Wordpress yang disebut Wordfence. (Tidak berafiliasi dengan itu)
Dalam contoh kami, root dokumen wordpress adalah /var/www/html/example.com/public_html
Buka izin sehingga www-data dapat menulis ke root dokumen sebagai berikut:
Sekarang dari dasbor di situs Anda, sebagai admin Anda dapat melakukan pembaruan.
Situs Aman setelah Pembaruan selesai dengan mengikuti langkah-langkah ini:
Perintah di atas mengubah izin semua yang ada di wordpress untuk pengguna FTP wordpress.
Perintah di atas memastikan bahwa plugin keamanan Wordfence memiliki akses ke log-nya. Direktori unggahan juga dapat ditulisi oleh www-data.
Perintah di atas juga memastikan bahwa plugin keamanan memerlukan akses baca tulis untuk fungsinya yang tepat.
Izin Direktori dan File
Atur izin untuk wp-config.php ke 640 sehingga hanya pengguna-wp yang dapat membaca file ini dan tidak ada orang lain. Izin 440 tidak berfungsi untuk saya dengan kepemilikan file di atas.
Pembaruan otomatis Wordpress menggunakan SSH bekerja dengan baik dengan PHP5 tetapi putus dengan PHP7.0 karena masalah dengan php7.0-ssh2 bundeld dengan Ubuntu 16.04 dan saya tidak dapat menemukan cara menginstal versi yang tepat dan membuatnya bekerja. Untungnya plugin yang sangat andal bernama ssh-sftp-updater-support (gratis) memungkinkan pembaruan otomatis menggunakan SFTP tanpa perlu libssh2. Jadi izin di atas tidak pernah harus dilonggarkan kecuali dalam kasus yang jarang diperlukan.
sumber