Ketika saya menjalankan ps -efH
perintah untuk mencantumkan semua proses, saya dapat melihat Apache berjalan root
dan tampaknya memiliki sub-proses yang berjalan www-data
. Berikut petikannya:
root 30117 1 0 09:10 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 30119 30117 0 09:10 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 30120 30117 0 09:10 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 30121 30117 0 09:10 ? 00:00:00 /usr/sbin/apache2 -k start
Bisakah saya membuat Apache dan semua sub-proses dijalankan sebagai pengguna yang berbeda apache2d:apache2d
? Kalau begitu bagaimana? Saya membaca di suatu tempat bahwa pengaturan untuk ini dapat ditemukan di /etc/apache2/httpd.conf
tetapi file itu tampaknya kosong? Bisakah ini dilakukan dengan mengubah pemilik dan grup /etc/init.d/apache2
skrip lalu mengatur flag setuid di atasnya?
sumber
@ Bahaham menjelaskannya dengan cukup baik, tapi saya akan menambahkan sedikit lebih detail.
Dalam operasi normal, proses apache yang dimiliki root tidak akan melakukan operasi aktual selain mendengarkan pada port 80 dan meneruskan koneksi yang masuk ke anak-
www-data
anaknya (yang tidak memiliki hak istimewa, sebagai pengguna).Lokasi file konfigurasi master tergantung pada opsi waktu kompilasi dan bervariasi per distribusi, tetapi
/etc/apache2/apache2.conf
merupakan perkiraan awal yang baik.Juga, jika Anda membuat sistem webhosting multi-pengguna, Anda mungkin ingin melihat ke SuExec dan fcgid sehingga setiap proses apache pengguna webhosting individu berjalan seperti kata pengguna - sehingga jika satu pengguna lalai dengan keamanan mereka, yang lain pengguna tidak akan terpengaruh.
sumber
Setidaknya di Ubuntu, pengaturan untuk ini ada di
/etc/apache2/envvars
. Tweak itu, lalu restart apache dan Anda pergi dan berjalan.sumber
Juga, periksa Apache2 ITK MPM .
Itu bercabang dengan utas Apache dengan
uid
/gid
, ini mari Anda tetap gunakanmod_php
. Tidak ada lagichmod
/chown
dll.sumber
mpm_itk
yang merupakan peningkatan signifikan dibandingkan suexec / fcgidMac OSX:
Apa yang berhasil bagi saya adalah masuk ke file konfigurasi apache:
Dalam file ini saya telah mencari Pengguna atau Grup
dan menabrak:
Saya telah mengubahnya menjadi apa yang pernah dibutuhkan pengguna / grup (dalam kasus saya menjadi pengguna / grup yang merupakan pemilik file aplikasi web saya yang dapat Anda lihat. Dan ini dapat Anda periksa dengan menggunakan 'ls-l' yang sederhana perintah)
sumber