CHMOD bir apache sunucu üzerinde PHP kullanarak bir linux dizini

2 Cevap php

Hiç kimse, bir Web tarayıcısı üzerinden bir dizini CHMOD PHP (kanıtlanmış ve başarılı) kullandı?

My roadblocks are: (a) PHP script runs as "nobody" from the browser (b) directory above the one I want to CHMOD is owned by the ftp user and "nobody" does not have write permissions to it

Ben çalıştığımda Yani chmod 0666 /usr/www/dirOwnedbyFTPuser/dirIamTryingToCHMOD/ Ben izin engellendi olsun

Hiç yazılı ve başarıyla yapmak için bir komut dosyası çalıştırmak varsa, benimle kod snipit paylaşabilirsiniz? Teşekkürler ... aydır bu da olmuştur.

2 Cevap

Evet, bir web tarayıcısı üzerinden php chmod olabilir. (Evet hepimiz kötü bir fikir olabilir biliyorum) ..

Ama - php komut dosyası kullanma izni sadece chmod dosya var ki! Web sunucusu kimse olarak PHP biterse, o zaman "kimse" ait herhangi bir dosya chmod edebilirsiniz ...

Evet php üzerinden bunu yapmak mümkün. Eğer apache kullanıcı (kimse) tarafından sahip olunan ve apache kullanıcı yazma izinlerine sahip değil komut chmod arıyoruz şekilde zamanki linux izinler kuralları uygulanır fakat daha sonra bir yöntem sudo kullanmak için apache izin vermek

Bu potansiyel büyük bir güvenlik açığıdır - uyardı!

Sen sudoers dosyasını düzenleyerek sudo kullanmak için apache izin verebilir. Bu bir hata yani benim (Ubuntu) sistemi üzerinde yazarken tamamen vidalı bırakabilirsiniz gibi doğrudan bu dosyayı düzenlemek kalmamasıdır önerilir

sudo visudo

Sonra da "kimse" kullanıcı için bir satır eklemek gerekir. I izinlerini değiştirmek için bir kabuk komut dosyası yazma tavsiye ve ardından uzak başka bir komut bir klasöre bu yerleştirerek bu yüzden belirli bir komut dosyası veya klasör için sudo izinlerini kısıtlayabilirsiniz. Bu şekilde apache (oldukça korkutucu bir düşünce) sisteminizde tam root ayrıcalıklarına sahip değil. Ayrıca değiştirilebilir hangi dosyaları kısıtlamak için kabuk bazı kod koyabilirsiniz.

Ayrıca php şifreyi girerek yol yok gibi bir şifre olmadan sudo apache izin vermeniz gerekir. Yani eklersiniz çizgi gibi bir şey olduğunu

nobody ALL=(ALL)NOPASSWD:/path/to/my/script

Sonra php sadece sudo komut öneki

passthru ("sudo /path/to/my/script ...");

(Eğer (passthru yerine kullanabileceğiniz birkaç diğer işlevleri vardır), aklıma geldi bu sadece ilk)

Daha önce söylediğim gibi, bu potansiyel olarak çok tehlikeli olduğu ve yukarıda çalışacak iken, ben sadece bir kamu üretim sunucusuna, önce benim kendi özel sistemi üzerinde asla kullandık. Ben insanların bol yüzden bu yöntemle olabileceğini potansiyel başka hangi tuzaklar ve güvenlik delikleri duymak ilgi olacağını bu güvenliği konusunda yorum olacaktır eminim. Ben benzer bir şey Suexec kullanılarak yapılabilir biliyorum ama herkes bu yöntemi üzerinde Suexec herhangi artıları veya eksileri varsa ben bunları duymak için ilgi olacağını bu yüzden çok aşina değilim.

Son not: Ben 'apache' veya 'www' gibi bir şey için kimseden apache kullanıcıyı değiştirmek istiyorum - belki sadece biraz aptalca ama ben kimsenin adında bir kullanıcıya root izinlerini verme fikrini sevmiyorum!

Bu yardımcı olur umarım!