FTP kimse sahibi (99 99) php fonksiyonları neden!

2 Cevap php

Ben sunucudaki dosyaları ve dizinleri yaratan bir komut (Joomla) var. Sorun sahibine 99 99 (kimse) altında oluşturur ve sunucu yönetici yardımı olmadan FTP onları silmek veya değiştiremez sonra olmasıdır.

Ben php move_uploaded_file işlevi olduğunu düşünüyorum.

WHM veya sunucu yöneticisi tarafından bu sorunun herhangi bir çözüm var mı? Ben ftp varsayılan sahibini değiştirebilir miyim?

2 Cevap

PHP altında çalışır kullanıcı - nobody - sistem yöneticisi tarafından ayarlanır. Eğer bu konuda yapabileceği bir şey yok.

Eğer FTP kullanıcının kimliğini biliyorum chown() dosyanın sahibini değiştirmek için deneyebilirsiniz. Genellikle olsa da, PHP içinde bunu yapmak için izin verilmez.

Sunucuda grup durumuna bağlı olarak, kullandığınız takdirde dosya karşıya sonra chmod dosyanın erişim haklarını değiştirmek için bu olabilir, FTP hesabı dosyasına erişebilirsiniz:

Önce bu deneyin:

chmod($uploaded_file, 0660); // owner+group read+write

Bu işe yaramazsa, bu deneyin:

chmod($uploaded_file, 0666); // global read+write

Bunlardan biri FTP hesabı ile dosya kullanışlı hale getirmesi gerekir.

0666 sunucu üzerindeki diğer kullanıcıların dosyaları içine yazabilirsiniz çünkü önerilmez, ancak bazı yapılandırmalarda, gidiyor almak için tek yolu budur.

Ne olur HTTP sunucusu "kimse" adlı bir kullanıcı tarafından koştu olduğunu, ve FTP kullanıcı başka biridir. Yükleme oluştuğunda, HTTP sunucusu adı altında bir dosya oluşturur, ve FTP kullanıcı bu dosyaları yazmak (veya silmek) için herhangi bir izin vardır.

Bunu düzeltmek (ama gerçekten güvenli değil) için en kolay yolu, aynı grupta hem kullanıcı eklemek ve aynı grubun kullanıcıları bu dosyalar üzerinde okuma / yazma için izin dosya izinlerini değiştirmek için.

Yönetici dikkat çekmek gerekir, ancak yüklenen dosyaların izinlerini değiştirmek için () chmod aramak gerekecek.

Daha iyi açıklanması:

The linux/unix file permissions are composed by permissions of user (u), group (g) and others (o). I'll only cover 3 types of file permisions here, which are read (r), write (w) and execute (x). So, you end up having something like this:

-rw-rw---x   1 jweyrich  staff  12288 Oct 24 00:22 avatar.png
  • İlk dosyası (jweyrich) sahibi KULLANICI'nın izni (okuma / yazma) rw-olduğunu.
  • İkinci dosyayı (Personel) sahibi GROUP izni (okuma / yazma) rw-olduğunu.
  • - Sonunda x DİĞER kullanıcıların izinleri (yürütme) vardır ..

"Kimse" kullanıcı olarak çalıştırmak için PHP betikleri yüzden her sizin PHP oluşturmak "kimse" kullanıcı (ve onun grup) ait olacak dosyası, (tarafından ve, en, "kimse" grubu diyelim). Bir kullanıcı, bir veya daha fazla grup bir parçası olabilir.

To solve the permission problem, your FTP user and the "nobody" must be in a common group, let's say the admin put your user in the "nobody". Once they're in the same group, your PHP script has to give "rw" (read/write) permissions to the "nobody" group members. To do so:

chmod("path_to_your_file", 0770);

0770 "u + Rwx, g+ Rwx, o-Rwx", ben burada açıklamak hangi eşdeğerdir:

  • u + Rwx = kullanıcı ("kimse" dir sahibi) için, okuma / yazma vermek / yürütme izinleri
  • u + Rwx = grup için (ayrıca "kimse" olan), okuma vermek / yazma / çalıştırma izinlerini
  • o-RXW = başkaları için, okuma / yazma / kaldırma yürütme izinleri

Bundan sonra, şimdi "kimse" grubunun bir parçası olan FTP kullanıcı, yüklenen dosyalara / okuma / yazma erişimi olacak ve böylece aynı zamanda dosyaları silebilirsiniz. Bu gibi görünecektir:

-rwxrwx---   1 nobody  nobody  12288 Oct 24 00:22 avatar.png

Bu unix dosya izinlerine ideal bir giriş değil, ama bu yardımcı olur umarım.