Wed, 18 Nov 2015 22:54:15 +0200, yaşar tunçez <[email protected]> :

> Ancak web sayfasının birisinde php kodu uploads adındaki bir alt
> dizini (ki bu dizine web sayfasının kullanıcısı yazabiliyor) bir
> takım dosyalar oluşturması gerekiyor ki sorun burada başlıyor. php bu
> dizinlere yazamıyor. php'yi tetikleyen kullanıcı aslında apache. Bu
> uploads dizininin haklarını 777 yapsam sorun ortadan kalkacak ama bu
> durum güvenlik açısından problem teşkil edeceğinden bu doğru çözüm
> değil. Bu sorunu en doğru şekilde nasıl çözebilirim?

777 yerine, o dizini apache kullanıcısının sahipliğine geçirip, yazma
hakkı verebilirsiniz. Oraya PHP yazılımındaki bir güvenlik açığı
nedeniyle PHP kodu yüklenip çalıştırılmaması için de @php_engine off@
parametresini o dizin için httpd.conf ya da .htaccess dosyasından
ayarlayabilirsiniz. Eğer ayarlamadıysanız, open_basedir değerini de
ayarlayıp, uygulamaların sadece kendi dizinlerine yazmalarını
sağlamalısınız.

Burada yaşayacağınız problem şu olacak: sftp'den bağlanan kullanıcılar
uploads dizinindeki dosyaları elleyemeyecektir (yazma yetkileri
olmadığı için). Ancak böyle bir gereksinim yoksa, sizin için uygun bir
çözüm olabilir.

Bu sizin için bir sorun yaratıyorsa, birkaç çözümü var:

1) FTP servisinin kullanıcılarını kabuk kullanıcısı olarak açmazsınız,
virtual FTP kullanıcısı destekleyen bir FTP servisi kullanırsınız. FTP
servisine, dizine apache kullanıcısı ile yaz diye ayarlarsınız. Dosya
sisteminde tüm kullanıcıları apache sahipliğinde olur. Kimin FTP
servisinde nereye erişebileceğinin yönetimini FTP sunucusu yapar. Tüm
web dizini apache sahipliğinde olacağı için FTP'den de, web
sunucusu üzerinden de bir yazma sorunu yaşamazsınız. FTP servisini
güvenli hale getirmek için FTPS (SSL) kullanımı mümkün.

2) PHP'yi Apache modülü olarak değil, ayrı bir servis olarak
çalıştırabilirsiniz. Bunun için php-fpm, hhvm ve benzeri çözümler
var. PHP ayrı bir servis olarak çalışıyor, web sunucusu da ona reverse
proxy görevi görüyor. Her kullanıcı için ayrı birer PHP uygulama
sunucusu çalıştırırsınız, onun yetkileri ile çalışır. FTP servisine de
o kullanıcıyla bağlancağından web/ftp servisi arasında bir uyumsuzluk
oluşmaz.

3) FTP servisinden vazgeçersiniz, Jenkins, Gitlab gibi araçlarla
deployment süreci oturtursunuz. Ancak web sitesini hazırlayanların da
bu araçlara aşina olmasını gerektirir.

                   Doruk

--
Özgür Yazılım A.Ş. ~ #
http://www.ozguryazilim.com.tr
_______________________________________________
Linux E-Posta Listesi
[email protected]
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
https://liste.linux.org.tr/mailman/listinfo/linux

Cevap