Dosya yüklemek için doğru izinleri ayarlama


12

"Yüklemeler" adlı bir dizine bir dosya yükleyen bir php komut dosyası var. Yüklemeyi işe alabilmemin tek yolu şu durumda:

chmod 777 uploads

Bunun doğru olmadığını biliyorum ama işe yaraması için ne yapmam gerektiğini bilmiyorum.

Sunucu bilgisi: Amazon EC2'de T1-Micro Amazon Linux AMI 2013.03

Sorular:

  • Kullanıcıların neye erişmesi gerektiğini nasıl öğrenebilirim ... ör. Apache veya web sunucusu için kullanıcı adı nedir?

  • Hangi düzeyde erişim vermem gerekiyor ve bunu yapmak için hangi komutu kullanmalıyım.

Teşekkürler!

Düzenleme: Yığın taşması üzerinde araştırma yapacağım birçok cevap buldum. Örneğin

/programming/3642241/php-file-upload-permissions

/programming/10842880/setting-permissions-in-php-on-server

/programming/8948537/permission-denied-when-attempting-to-upload-file-with-php

Teşekkürler

Yanıtlar:


20

Koşmayı deneyin:

ps -ef | grep apache

ve Apache sunucusuna karşılık gelen en soldaki sütuna bakın. Bu Apache çalıştıran kullanıcı ve kalıtım yoluyla PHP.

Yükleme dizininin sahipliğini bu kullanıcıyla değiştirin ve izinleri biraz kısıtlayın, örneğin web sunucusu kullanıcısı aynı www-dataaddaki gruba aitse (örnek bir yol kullanarak /var/www/uploads):

sudo chown www-data:www-data /var/www/uploads
sudo chmod 755 /var/www/uploads

(veya bu örnekte istediğiniz izinleri). Kullandığım sudoörnek komutlar - Ben EC2 sistemleri süper kullanıcı ayrıcalıkları almak için bu konuda kurmak tam olarak nasıl bilmiyorum.

Zaten dosya / dizin yüklediyseniz, bunlardaki sahipliği ve izinleri de değiştirmek isteyebilirsiniz. Bunu yapmak 777için, daha makul izinlere giderek şunları çalıştırabilirsiniz:

sudo chown -R www-data:www-data /var/www/uploads
sudo chmod -R 755 /var/www/uploads
sudo find /var/www/uploads -type f -exec chmod -x {} \;

Her bir parçasını anlamadıysanız, komutları "körü körüne" çalıştırmayın. Açık manolmayan bir şey olup olmadığını kontrol edin (oldukça açık olmalıdır).


Teşekkürler. Bu çok yardımcı oldu. apache kullanıcıdır. sudo chown ve sudo chmod komutlarının ikisi de çalışır.
fun_programming

Açık ve anlaşılır bir çözüm, Çok teşekkürler. Artık riskli 777 iznine ihtiyacım yok
lhrec_106
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.