PHP-FPM'nin chroot ve chdir dizini


10

Ben etkin choting ile php-fpm kuruyorum. Şimdi iki seçeneğin olduğunu görüyorum ve kesin farkın ne olduğunu bilmek istiyorum.

Kurulum şunları içerir:

chroot = /var/www/domains/domain.tld/
; Chdir to this directory at the start. This value must be an absolute path.
; Default Value: current directory or / when chroot
chdir = /docroot/

Neden burada iki farklı konum var ve hangi yol php erişmesine izin verilir. Php web sitesine erişebilir /var/www/domains/domain.tld/veya sadece docrootdizini olan dosyalara erişebilir .

===

Belki benim için somut bir tavsiye var. Ben böyle bir kurulum istiyorum:

webroot konumu: /var/www/

domain.com/
 |---conf/
 |    |--nginx.conf
 |    |--php-fpm.conf
 |
 |---ssl/
 |---logs/
 |---session/
 |---domains/
       |---www/
       |---app/
       |---dev/

Şimdi burada php-fpm ayarları şöyle olacaktır:

chroot = /var/www/domain.com/
chdir  = /domains/www

Şimdi buradaki ana soru, wwwalt alanda bulunan uygulama devveya içindeki dosyalara erişebilecek mi app? Hatta oturum kaydetme yolu olan oturumda bulunan dosyalar veya ssl ve logs gibi diğer klasörler de olabilir.

Yanıtlar:


12
  • Chroot 'kök' dizinini ayarlar - kök dizinin üzerinde gezemezsiniz.
  • Chdir basitçe başlangıç ​​dizinini değiştirir - diğer dizinlere (bunun üzerinde olanlar da dahil) gitmek hala mümkündür.
    • Bir chroot yolu belirtmezseniz, 'gerçek' kök uygulanır - ve mutlak bir chdir belirtirsiniz.
    • Bir chroot yolu belirtirseniz, chroot'lu yola göre (kök dizini yeniden tanımlayan) bir yol belirtirsiniz.

Önerdiğiniz ayarlar oldukça iyi görünüyor.

  • Başlangıç ​​yolu, chroot yolu + chdir yolu olacaktır
  • Uygulama, kök yolu altındaki tüm dosyalara erişebilecektir (başka kısıtlamalar yoksa (örn. Php_openbasedir, izinler, vb.).

Yan not olarak - php uygulamanız, gösterdiğiniz belge yapısına bağlı olarak nginx.conf ve php-fpm.conf dosyalarınıza da erişebilir - bu da değiştirmek isteyebileceğiniz bir şey gibi görünür (en azından dosyaları okumak için- yalnızca o kullanıcıya).


Bu dosyaların güvenli olduğundan emin olacağım. Bu arada, bu kromlama yöntemi ile sadece php_openbasedir'i ayarlamak arasında bir fark var mı?
Saif Bechan

1
Evet - chroot işletim sistemi düzeyinde geçerlidir ve atlaması çok daha zordur. open_basedir PHP'ye özgüdür ve her işlevde kontrol edilmesi gerekir, bu nedenle istismarlar daha yaygındır (örneğin, kabuk_exec ile harici komut dosyaları çalıştırarak). PHP'nin sitesinde bu konuda ilginç bir güvenlik notu var. Bu, chroot kullanıyorsanız open_basedir'in işe yaramaz olduğu anlamına gelmez - betiğinizin dışında bir şey olduğunda, chroot yolunuzdan farklı bir open_basedir tanımlamak kullanışlı olabilir. Chroot ayrıca daha iyi performans sunabilir.
cyberx86
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.