NGinx ve PHP hangi kullanıcı olarak çalışmalıdır?


15

İzinler Linux ile bir süredir benim için kafam karıştı. Yani dakikada NGinx ve PHP-FPM örneklerinin her ikisi de kullanıcı ve grupla çalışıyor:

www-veri

Bu standart mı? Dosya yüklemeyle karşılaştığımda sorun yaşıyorum.

Örneğin , bir dosya hem kullanıcı hem de grup www-data ile yüklenir. Şimdi, web uygulamamda izinleri (0440) nasıl ayarladığımdan dolayı, bu dosyaları indirmek için normal hesabımla ssh üzerinden giriş yapamıyorum. Bu değiştirilemez.

Grubu tutmak için nginx ve php örneğimi değiştirmeyi düşünüyordum, ancak kullanıcı adı altında çalışacak şekilde değiştirdim.

Buradaki izinleri işlemenin doğru yolu nedir? Teşekkür ederim.

Yanıtlar:


12

Şöyle çalışır: FTP / SSH ile oturum açıp dosya yüklediğinizde, izinlerinizle oluşturulur. Muhtemelen webroot'unuz dünya çapında yazılabilir (0777), yani güvensizdir - sistemdeki her kullanıcı orada bir şeyler yazabilir. PHP farklı kullanıcı ayrıcalıklarıyla çalışır (nginx config değil PHP-FPM konfigürasyonunda belirtilir) ve dizin dünya yazılabilir olduğu için PHP kullanıcısı (www-data) da buraya yazabilir. Ancak bu dosyanın sahibi hesabınız değil, www-veridir. Bunlar, dosya sistemi izin düzeyinde 2 ayrı hesaptır.

Webroot dizinine sahip olacak ve FTP / SSH yüklemesi için kullanılacak ve php'yi çalıştıracak en az olası ayrıcalıklara sahip özel bir kullanıcı oluşturmanızı öneririm. PHP-FPM yapılandırmasını değiştirmelisiniz, çalışan bölümünde kullanıcı girişi ve NGINX yapılandırması vardır, böylece web sitesi dosyalarınızı dünya tarafından okunamaz ve daha güvenli hale getirebilirsiniz.

PHP'yi ayrıcalıklı (sudo yetenekleri, yazma ayrıcalıkları dışında docroot) kullanıcı ile çalıştırmayın, bu da sunucu güvenliğinin tehlikeye girmesine neden olabilir.


1
Güzel cevap, yeni bir kullanıcı, yeni klasörler oluşturdum, her şeyi kopyaladım, doğru izinleri uyguladım ve kullanıcıyı kandırdım. Güzel çalışıyor. Teşekkür ederim.
Pixel Developer

www-dataÖzel kullanıcıyı oluşturmak yerine FTP kullanıcımı gruba ekleyebilir miyim ? @ ThePixelDeveloper sorununu çözüyor mu? Teşekkürler.
Vladyslav Turak

2

www-dataKullanıcının grup oldukça standarttır. Diğer sistemlerde www veya web olabilir, ancak fikir aynıdır: Web hizmetlerini özel bir hesapla çalıştırın. Böylece, web sunucunuzun güvenliği ihlal edildiğinde, saldırgan yalnızca bu hesabın verdiği dosyalara erişebilir.

Bir kullanıcının web hizmetlerini yönetmesi gerekiyorsa, kullanıcıyı ilgili gruba (www-data) eklemeniz veya ilgili kullanıcıya (hala www-data) su (veya sudo) yapmasına izin vermeniz gerekir.


10
Www-data'nın nedeni, sıfır ayrıcalığa sahip bir hesap olmasıdır - tüm dosya sistemindeki herhangi bir dosyaya yazamaz, dünya tarafından okunabilir dosyalardan başka bir şeye okumaz. Daha önce, bunu başarmak için yerleşik kullanıcı "hiç kimse" kullanamazsınız. Ancak, "www-data" oluşturarak bu kullanıcının bu dosyaları dünya çapında yazılabilir kılmak zorunda kalmadan bazı dosyalara yazmasına izin verebilirsiniz (ki bu kötüdür). "Www-data" nın "hiç kimse" kadar ayrıcalıklı olmadığı temel ilke geçerlidir.
thomasrutter

@ anladığım kadarıyla, Nginx ve PHP-FPM'yi www-data grubundaki www-data kullanıcısı altında çalıştırmalıyım. Bu kullanıcının bir klasöre read& writeklasörlere ulaşabilmesini istiyorsanız , ona uygun izinleri vermeliyim. Çoğu durumda, bu web kök klasörü /var/www/htmlve 755izin olacaktır. Haklı mıyım? Teşekkürler!
Vladyslav Turak

1

Güvenlik nedeniyle www-veri sahibi olduğu nginx / php yürütme komut dosyalarına sahip olmaktan kaçınmaya çalışıyorum.


9
bunun üzerinde durur musun?
Karussell
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.