Güncellenen Özet
/ Var / www dizini, root:root
hiç kimsenin kullanamayacağı ve tamamen yararsız olduğu anlamına gelir. Hepimiz gerçekten çalışan bir web sunucusu istediğimizden (ve hiç kimse "root" olarak giriş yapmamalıdır), o zaman bunu düzeltmemiz gerekiyor.
Sadece iki işletmenin erişime ihtiyacı var.
PHP / Perl / Ruby / Python'un çoğunun oluşturduğu klasör ve dosyalara erişmesi gerekir (örn.
/uploads/
). Bu betik dilleri nginx veya apache altında çalışıyor olmalıdır (ya da PHP için FastCGI gibi başka bir şey bile).Geliştiriciler
Nasıl erişebilirler? Bunu daha önce bir yerlerde birisinin yaptığını biliyorum . Bununla birlikte, milyarlarca web sitesi dışında, bu konuda daha fazla bilgi olacağını düşünürdünüz.
777'nin sahibi / grubu / diğer için tam okuma / yazma / yürütme izni olduğunu biliyorum. Bu nedenle , rastgele kullanıcılara tam izinler sağladığından bunun doğru olması gerekmiyor .
Bunun için hangi izinlerin kullanılması gerekiyor /var/www
:
- Git veya svn gibi kaynak kontrolü
- "Web siteleri" gibi bir gruptaki kullanıcılar ( hatta "www-veri" ye eklenir )
- Apache veya lighthttpd gibi sunucular
- Ve PHP / Perl / Ruby
herkes orada dosyaları (ve dizinleri) okuyabilir, yaratabilir ve çalıştırabilir mi?
Eğer haklıysam, Ruby ve PHP scriptleri doğrudan "çalıştırılmaz" - ancak bir tercümana iletilir. Öyleyse /var/www
... içindeki dosyalarda izinli çalıştırılmasına gerek yoktur. Nedenle, olurdu doğru izni gibi görünüyor chmod -R 1660
bulunması şeklinde
- bu dört varlık tarafından paylaşılabilir tüm dosyalar
- yanlışlıkla çalıştırılamayan tüm dosyalar
- dizindeki diğer herkesi tamamen engelle
- Gelecekteki tüm dosyalar için izin modunu "yapışkan" olarak ayarlayın
Bu doğru mu?
Güncelleme 1: Dosyaların ve dizinlerin farklı izinlere ihtiyaç duyabileceğini fark ettim - yukarıdaki dosyalardan bahsediyordum, bu yüzden dizin izinlerinin ne olması gerektiğinden emin değilim.
Güncelleme 2:/var/www
Yukarıdaki dört varlıktan biri her zaman klasörleri ve alt klasörleri her zaman çok derinlemesine eklerken (ve bazen de kaldırırken) klasör yapısını büyük ölçüde değiştirir. Ayrıca, diğer 3 işletmenin okuma / yazma erişimi için ihtiyaç duyabileceği dosyaları oluşturur ve kaldırır. Bu nedenle, izinler hem dosyalar hem de dizinler için yukarıda belirtilen dört şeyi yapmalıdır. Hiçbirinin izin almaması gerektiğinden (yukarıdaki ruby / php ile ilgili soruya bakın) rw-rw-r--
Bu dört varlığın güvenilir personel (bkz. # 2) ve diğer tüm kullanıcılar tarafından çalıştırılmasından dolayı izinlerin gerekli ve tamamen güvenli olacağını varsayacağım . sistem sadece okuma erişimine sahip.
Güncelleme 3: Kişisel gelişim makineleri ve özel şirket sunucuları içindir. Paylaşılan bir ana bilgisayar gibi rastgele "web müşterileri" yok.
Güncelleme 4: Slicehost tarafından hazırlanan bu makale , www klasörünüz için izinlerin ayarlanması için neyin gerekli olduğunu açıklamakta en iyi gibi görünmektedir. Ancak, PHP VEYA svn / git ile hangi kullanıcı veya grup apache / nginx'in çalıştığından ve bunları nasıl değiştireceğinden emin değilim.
5. Güncelleme: Sanırım (sanırım) sonunda tüm bunların çalışmasını sağlayacak bir yol buldum (aşağıdaki cevap). Ancak, bunun doğru ve GÜVENLİ yol olup olmadığını bilmiyorum. Bu nedenle bir lütuf başlattım. Www dizinini korumak ve yönetmek için en iyi metoda sahip olan kişi kazanır.