PHP mkdir ve apache mülkiyet

4 Cevap php

Yerine apache ait olmanın onu yaratan programının sahibine ait klasör klasör oluşturmak için apache altında php çalışan ayarlamak için bir yolu var mı?

O içine yüklemek için yeni klasörler oluşturur ancak bu onlar içeri çalışan site tarafından apache.apache değil aittir kelime basın kullanılması da ostickets kullanarak olur. Şimdi biz sunucusuna SSH ve klasörü chmod var, ama bunu yapar herhangi bir programın dışında sahipliğini geçersiz kılmak için bir yerde bir ayar olacağını görünüyor.

4 Cevap

Safe_mode sunucu üzerinde açmak olduğunu. Fonksiyonu mkdir() sahibi ile ("apache", "hiçbiri", ..) klasör oluşturur geçerli komut sahibinin farklı. Ve komut başka bir sahibi (o anki komut sahibi gibi değil) ile bu klasöre (taşıma, kopyalama) dosyaları upload olamazdı.

safe_mode ve bu iş olurdu devre dışı bırakın.

Ayrıntılar için http://php.net/manual/en/features.safe-mode.php bakın.

P.S. Ile safe_mode Eğer php chmod() işlevini kullanamazsınız etkinleştirin.

Başka bir yol, yeni bir grup apache kullanıcı ve "müşteri kullanıcıların" koymaktır. Ek dizin yapışkan bit SGID kullanmanız gerekir böylece her yeni dosya bu yeni gruba grup atama var. Bu şekilde web sunucusu ve "müşteri kullanıcılar" sorunsuz dosyaları ile çalışabilirsiniz

[17:57] progman@proglap /tmp/test $ ls -al /tmp/test
total 9
drwxrwsr-x  2 root users   48 Apr  1 17:55 .
drwxrwxrwt 36 root root  9264 Apr  1 17:53 ..

Eğer dizin sopa biraz SGID var ve sahibi ben (progman am) "kullanıcılar" grubudur görmek gibi. Başka bir kullanıcı bir dosya ekler olursa grubu otomatik olarak bu gruba ayarlanmış olsun

[17:55] proglap ~ # touch /tmp/test/x

Bu kökünden yürütülür. Şimdi biz olsun:

[17:57] progman@proglap /tmp/test $ ls -la /tmp/test
total 9
drwxrwsr-x  2 root users   72 Apr  1 17:59 .
drwxrwxrwt 36 root root  9264 Apr  1 17:53 ..
-rw-r--r--  1 root users    0 Apr  1 17:59 x

Eğer eklenen dosya kökünden olduğunu, ancak grup users ayarlanır görmek ve bu şekilde I kaldırabilirsiniz gibi

[18:00] progman@proglap /tmp/test $ rm x
rm: remove write-protected regular empty file `x'? y
[18:01] progman@proglap /tmp/test $ ls -la /tmp/test
total 9
drwxrwsr-x  2 root users   48 Apr  1 18:01 .
drwxrwxrwt 36 root root  9264 Apr  1 17:53 ..

rw-r--r-- sadece group read access olduğu gibi edit dosya istiyorsanız eğer hala chmod değiştirmeniz gerektiğini unutmayın. Ama değişen chmod, hatta belki de birlikte çalışan umask, kök erişimi ile uğraşan ve chown kullanarak daha iyidir.

Doğrudan değil, hayır. Root değilsen, başka bir kullanıcıya bir dosyanın sahipliğini "vermek" olamaz. Belirli bir kullanıcı / grup olarak çalıştırmak için belirli vhostu zorlamak için "AssignUserID" apache yönergesini kullanarak araştırmak olabilir. Bu Apache / PHP uygun mülkiyeti ile herhangi bir dosya oluşturmak istiyorum ile

PHP chown() fonksiyonu kontrol edin