PHP dosya ve dizin sahipliğini değiştirebilir ve izin için izin

3 Cevap php

Ben bir sunucuda bazı dizini yöneten basit bir web uygulaması inşa etmek istiyorum. Ben insanlara chown ve chmod kullanma seçeneği vermek istiyorum.

PHP bu izni vermek için en güvenli yolu nedir? Hızlı şey sadece root olarak Apache ve PHP ile çalıştığını, ancak akıllı bir fikir gibi görünmüyor.

Ben, düşündüm bir başka şey setuid'dir köke sahiptir ayrı bir komut dosyası yaratıyor ..

Teşekkürler!

3 Cevap

Evet, bu kesinlikle başlamak için tehlikeli bir fikir gibi geliyor ve ben oturarak ve elde edilecek çalışıyor ne bütün strateji ile düşünme tercih ederim.

Tehlike uzak kullanıcı değiştirme veya tabii, upload olabilir yürütülebilir bir script ayrıcalık yükselmesi olduğunu. Bir web uygulaması tam chown / chmod sadece sayfada root şifrenizi yapıştırarak eşdeğerdir.

Gerçekleşmesi için ihtiyacı olan tam olarak nedir?

Chown (umarız) nedense gerçekleşmesi ancak kök için değil ihtiyacı varsa işlevselliği sarılmalıdır. Ben kullanıcı istekleri almak ve onları sıraya, daha sonra ayrı bir süreç var (kabuk, php, perl, herhangi bir şey olabilir) bu kuyruğunu kontrol cron tarafından root olarak çalışan, istek izin parametreler uygun olmadığını görmek için kontrol edin ve değişiklikleri yapacak .

Tek yönlü (bir Linux kutu varsayarak) makinenizde sudo kurmak olacaktır. Sudo sudoers.conf dosyasında belirtilen kısıtlamalara tabi yükselmiş komutları çalıştırmak için izin verir. Web servis (www-veri gibi) altında çalıştığı kullanıcı için belirli bir dizindeki gerekli komutlara kullanımını sınırlamak ve ardından PHP komut tis gibi bir şey gelen komut kabuğu aramak için sıkı kuralları kullanın:

shell_exec("sudo chmod 777 dirname");

Patlak imkansız yanında olmasını sağlamak için, sizin sudo yapılandırma sıkı olduğundan emin olun etmeyin.

Belki php komutları bakmak gerekir: chmod, chown, chgrp ve fileperms

chmod

chmod("/somedir/somefile", 0600);