Biasanya, pelayan yang kami jalankan aplikasi web termasuk pengedaran Linux seperti CentOS, Ubuntu, Debian, dll. Pada masa ini, kawalan kebenaran Nginx, PHP, MySQL dan aplikasi lain yang diperlukan untuk membentuk seni bina perkhidmatan menjadi sangat penting Setiap perkhidmatan mempunyai keperluan kebenaran yang berbeza untuk direktori kod yang akan menyebabkan perkhidmatan tersebut tidak boleh membaca, menulis atau menjalankan , yang merendahkan keperluan kebenaran dan menimbulkan risiko pencerobohan dan pengubahsuaian.
Rangka kerja PHP biasanya digabungkan dengan Nginx untuk membentuk LNMP atau digabungkan dengan Apache untuk membentuk seni bina LAMP Di sini, Nginx digunakan sebagai contoh untuk menerangkan apa yang diperlukan untuk menjalankan perkhidmatan Nginx.
Kami tahu bahawa Nginx sendiri tidak boleh menghuraikan sintaks PHP, jadi Nginx akan menghuraikan secara langsung dan mengembalikan hasil untuk fail statik (seperti HTML, dll.), tetapi untuk fail PHP, Nginx akan memindahkannya ke penterjemah PHP php-fpm untuk pemprosesan. Selepas pemprosesan, respons dikembalikan kepada pelayar klien.
Oleh itu, kami perlu menyatukan kebenaran yang diperlukan untuk perkhidmatan Nginx dan PHP dalam direktori kod kami.
① Jika pengguna root digunakan secara seragam, akaun tetamu umum tidak akan dapat mengakses aplikasi Jika nginx dikonfigurasikan untuk dijalankan sebagai root, akan ada risiko keselamatan yang besar Setelah diserang, root identiti akan diperolehi untuk melaksanakan segala-galanya dalam sistem beroperasi.
Jika kebenaran direktori kod ditetapkan secara seragam kepada rwxrwxrwx, akan ada bahaya tersembunyi yang pengguna boleh mengubah suai direktori kod secara terus melalui penyemak imbas.
Jadi cara terbaik ialah mengklasifikasikannya ke dalam kumpulan pengguna baharu dan memberikan kebenaran yang diperlukan untuk menjalankan Nginx dan PHP kepada kumpulan pengguna untuk mencapai pengurusan direktori kebenaran aplikasi web. Dalam banyak kes, pasukan akan menggunakan kumpulan pengguna www untuk mengurus kebenaran direktori kod dan mengurus www pengguna secara seragam.
Kita dapat melihat bahawa kebenaran berjalan yang dibahagikan dalam fail konfigurasi Nginx nginix.conf
dikonfigurasikan di bawah pengguna www, jadi proses anak Nginx juga dilaksanakan oleh pengguna www, yang boleh dilihat melalui ps aux | grep nginx
:
Anda boleh melihat bahawa proses utama nginx ialah root, dan sub-proses lain adalah semua pengguna www
nginx. konfigurasi conf:
Begitu juga, PHP juga dijalankan oleh akar proses utama, dalam kumpulan proses anak Konfigurasi di dalam (pool) dilaksanakan oleh pengguna www. Konfigurasi khusus berada di bawah etcphp-fpm.conf
dalam direktori akar php:
user = www group = www
🎜> untuk melihat identiti pengguna yang digunakan oleh proses: ps aux | grep php
anda boleh melihat bahawa perkhidmatan MySQL berjalan dalam mysql Bagi pengguna, perkhidmatan ini hanya memerlukan kami membawa nama pengguna dan kata laluan mysql apabila kod php bersambung ke mysql Ia tidak perlu disatukan sebagai www, kerana lapisan data perlu diasingkan daripada lapisan logik perniagaan untuk memastikan keselamatan data asas. Keizinan mysql adalah terutamanya untuk menambah pengguna baharu dan membahagikan kebenaran dalam perkhidmatan mysql, yang digunakan untuk mengawal perniagaan PHP yang berbeza untuk berhubung dengan identiti dengan julat kebenaran yang berbeza untuk memastikan keselamatan data. ps aux | grep mysql
user www www;
user = www group = www
drwxr-xr-x 就是755
Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi kebenaran pengguna untuk nginx, php-fpm dan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!