Soru Web sitemin dosyaları / klasörleri Linux web sunucusunda hangi izinlere sahip olmalıdır?


Bu bir Kanonik Soru Linux web sunucusundaki Dosya İzinleri hakkında.

Birkaç web sitesine ev sahipliği yapan Apache2'yi çalıştıran bir Linux web sunucum var. Her web sitesinin / var / www / adresinde kendi klasörü vardır.

/var/www/contoso.com/
/var/www/contoso.net/
/var/www/fabrikam.com/

Temel dizin / var / www / root'a aittir: root. Apache www-data: www-data olarak çalışıyor. Fabrikam web sitesi, iki geliştirici olan Alice ve Bob tarafından sağlanmaktadır. Hem Contoso web siteleri bir geliştirici tarafından korunur, Eve. Tüm web siteleri kullanıcıların görüntü yüklemesine izin verir. Bir web sitesinin güvenliği ihlal edilirse, etki mümkün olduğunca sınırlandırılmalıdır.

Apache'nin içeriği sunabilmesi için izinleri belirlemenin en iyi yolunu bilmek istiyorum, web sitesi saldırılardan korunuyor ve geliştiriciler hala değişiklik yapabilir. Web sitelerinden biri şu şekilde yapılandırılmıştır:

/var/www/fabrikam.com
    /cache
    /modules
    /styles
    /uploads
    /index.php

Bu dizin ve dosyalarda izinler nasıl ayarlanmalıdır? Bir sitede hiçbir zaman 777 izin kullanmamalısınız, ancak neden olabilecek sorunları anlamıyorum. Yoğun dönemlerde, web sitesi bazı sayfaları otomatik olarak önbelleğe alır ve sonuçları önbellek klasöründe saklar. Web sitesi ziyaretçileri tarafından gönderilen tüm içerikler, uploads klasörüne kaydedilir.


284
2018-02-06 01:50


Menşei


Bu bir standart Web sitesi izinleriyle ilgili tüm soruları yanıtlayın. - Nic
"Bir web sitesinde asla 777 izin kullanmamanız gereken bir yer okudum, ama anlamıyorum ..." - o zaman okuyucu buradaki cevapların esasını anlayabiliyor veya en azından bunları karşılaştırabiliyor mu? Herhangi bir çözüm, belirli gereksinimlere dayanmalıdır - buradaki şartlar yeterince spesifik değildir (tehdit modeli nedir) - symcbean
Apache'yi sorduğunuzu, ancak Microsoft'un genellikle örnek olarak kullandığı alan adlarını kullandığınızı seviyorum. - gWaldo
Ayrıca bkz. Apache2'nin www / data / var / www kullanıcı izinlerini ele almanın en iyi yolu nedir? - Gareth
Linux'ta web sitesi dosyalarına ve klasörlerine koyulması gereken izinle ilgili ayrıntılı bilgi için buraya başvurabilirsiniz. serverfault.com/questions/124800/...


Cevaplar:


Hangi izinleri kullanacağınıza karar verirken, tam olarak kullanıcılarınızın kim olduğunu ve neye ihtiyaç duyduklarını bilmeniz gerekir. Bir web sunucusu iki tür kullanıcıyla etkileşime girer.

Kimliği doğrulanmış Kullanıcıların sunucuda bir kullanıcı hesabı vardır ve belirli ayrıcalıklarla sağlanabilir. Bu genellikle sistem yöneticilerini, geliştiricileri ve hizmet hesaplarını içerir. Genellikle SSH veya SFTP kullanarak sistemde değişiklikler yaparlar.

Anonim Kullanıcılar sitenize gelen ziyaretçilerdir. Dosyalara doğrudan erişim iznine sahip olmalarına rağmen, bir web sayfası isteyebilirler ve web sunucusu kendi adlarına hareket eder. Web sunucusu işleminin hangi izinlere sahip olduğuna dikkat ederek anonim kullanıcıların erişimini sınırlayabilirsiniz. Birçok Linux dağıtımında Apache, www-data kullanıcı ama farklı olabilir. kullanım ps aux | grep httpd veya ps aux | grep apache Apache'nin sisteminizde ne kullandığını görmek için.


Linux izinleri ile ilgili notlar

Linux ve diğer POSIX uyumlu sistemler, geleneksel unix izinlerini kullanır. Vikipedi hakkında mükemmel bir makale var. Dosya sistemi izinleri Bu yüzden burada her şeyi tekrarlamayacağım. Ama bilmeniz gereken birkaç şey var.

Yürütme bit
Yorumlanan betikler (örn. Ruby, PHP), yürütme izni olmadan gayet iyi çalışır. Yalnızca ikili dosyalar ve kabuk betikleri yürütme bitine ihtiyaç duyar. Bir dizini geçmek (girmek) için bu dizinde yürütme iznine sahip olmanız gerekir. Web sunucusunun bir dizini listelemek veya içindeki herhangi bir dosyaya hizmet vermek için bu izne ihtiyacı vardır.

Varsayılan yeni dosya izinleri
Bir dosya oluşturulduğunda, normalde onu oluşturan kişinin grup kimliğini miras alır. Ancak bazen yeni dosyaların oluşturuldukları klasörün grup kimliğini devralmasını istersiniz, böylece ana klasördeki SGID biti etkinleştirilir.

Varsayılan izin değerleri umask'unuza bağlıdır. Umask, yeni oluşturulan dosyalardan izinleri çıkarır, böylece 022'nin ortak değeri 755 ile oluşturulan dosyalarda sonuçlanır. Bir grupla işbirliği yaparken, umaskınızı 002'ye değiştirmek faydalı olur, böylece oluşturduğunuz dosyalar grup üyeleri tarafından değiştirilebilir. Ve yüklenen dosyaların izinlerini özelleştirmek isterseniz, ya apache için umask'i değiştirmeli ya da dosya yüklendikten sonra chmod'u çalıştırmalısınız.


777 ile sorun

Sen ne zaman chmod 777 Web sitenizde hiç güvenlikiniz yok. Sistemdeki herhangi bir kullanıcı web sitenizdeki herhangi bir dosyayı değiştirebilir veya silebilir. Ancak daha da önemlisi, web sunucusunun web sitenize ziyaretçiler adına davrandığını ve artık web sunucusunun yürütmekte olduğu dosyaları değiştirebileceğini unutmayın. Web sitenizde herhangi bir programlama güvenlik açığı varsa, web sitenizi karartmak, kimlik avı saldırıları eklemek veya sunucunuzdan bilgi sahibi olmadan bilgi çalmak için kullanılabilir.

Ayrıca, sunucunuz bir tanınmış liman (root olmayan kullanıcıların dünya tarafından erişilebilir dinleme servislerini üretmelerini engellemelidir), bu, sunucunuzun root tarafından başlatılması gerektiği anlamına gelir (her ne kadar aklı başında sunucunun limana bağlandıktan sonra daha az ayrıcalıklı bir hesaba düşmesine rağmen) . Diğer bir deyişle, ana yürütülebilir dosyanın sürüm denetiminin bir parçası olduğu (ör. CGI uygulaması) bir web sunucusu çalıştırıyorsanız, kullanıcı adını değiştirebileceği için izinlerini (veya bu içeriğin içerdiği dizinin izinlerini) bırakarak. 777'de çalıştırılabilir herhangi çalıştırmak için kullanıcı herhangi root olarak çalıştırılabilir.


Gereksinimleri tanımlayın

  • Geliştiriciler, web sitelerini güncelleyebilmeleri için dosyalara okuma / yazma erişimine ihtiyaç duyarlar
  • Geliştiricilerin, dizinlere okuma / yazma / yürütme işlemlerine ihtiyaçları vardır.
  • Apache, dosyalara ve yorumlanmış komut dosyalarına okuma erişimi gerektirir
  • Apache'nin erişilebilen dizinlere okuma / yürütme erişimi gerekiyor
  • Apache'nin yüklenen içerikler için dizinlere okuma / yazma / yürütme erişimi gerekir

Tek bir kullanıcı tarafından korunuyor

Siteyi korumak için yalnızca bir kullanıcı sorumluysa, bunları web sitesi dizininde kullanıcı sahibi olarak ayarlayın ve kullanıcıya tam rwx izinlerini verin. Apache'nin dosyalara erişebilmesi için hala erişime ihtiyacı vardır, bu nedenle www-verileri grup sahibi olarak ayarlayın ve grup r-x izinlerini verin.

Durumunda, kullanıcı adı kimin olabileceği Eve eve, tutan tek kullanıcı contoso.com :

chown -R eve contoso.com/
chgrp -R www-data contoso.com/
chmod -R 750 contoso.com/
chmod g+s contoso.com/
ls -l
drwxr-s--- 2 eve      www-data   4096 Feb  5 22:52 contoso.com

Apache tarafından yazılabilir olması gereken klasörleriniz varsa, grup sahibinin izin değerlerini değiştirebilirsiniz, böylece www-data yazma erişimine sahip olur.

chmod g+w uploads
ls -l
drwxrws--- 2 eve      www-data   4096 Feb  5 22:52 uploads

Bu yapılandırmanın yararı, sistemdeki diğer kullanıcılar için daha da zorlaşıyor (ancak imkansız değil *), yalnızca kullanıcı ve grup sahipleri web sitenizin dizinine göz atabildiğinden. Yapılandırma dosyalarınızda gizli verileriniz varsa bu yararlıdır. Umaskına dikkat et! Burada yeni bir dosya oluşturursanız, izin değerleri muhtemelen 755 olarak varsayılan olacaktır. umask 027Böylece yeni dosyalar 640'arw- r-- ---).


Bir grup kullanıcı tarafından korunuyor

Siteyi korumak için birden fazla kullanıcı sorumluysa, izinleri atamak için kullanılacak bir grup oluşturmanız gerekir. Her web sitesi için ayrı bir grup oluşturmak ve bu web sitesinden sonra gruba isim vermek iyi bir uygulamadır.

groupadd dev-fabrikam
usermod -a -G dev-fabrikam alice
usermod -a -G dev-fabrikam bob

Önceki örnekte, Apache'ye ayrıcalıklar vermek için grup sahibini kullandık, ancak şimdi geliştiriciler grubu için kullanılıyor. Kullanıcı sahibi artık bizim için yararlı olmadığı için, root olarak ayarlamak, hiçbir ayrıcalığın sızdırılmamasını sağlamanın basit bir yoludur. Apache'nin hala erişime ihtiyacı var, bu yüzden dünyanın geri kalanına okuma erişimi sağlıyoruz.

chown -R root fabrikam.com
chgrp -R dev-fabrikam fabrikam.com
chmod -R 775 fabrikam.com
chmod g+s fabrikam.com
ls -l
drwxrwxr-x 2 root     dev-fabrikam   4096 Feb  5 22:52 fabrikam.com

Apache tarafından yazılabilir olması gereken klasörleriniz varsa, Apache'yi kullanıcı sahibi veya grup sahibi olarak yapabilirsiniz. Her iki durumda da ihtiyacı olan tüm erişime sahip olacak. Şahsen, ben kullanıcı geliştiricisini tercih etmeliyim, böylece geliştiriciler yükleme klasörlerinin içeriğine göz atabilir ve değiştirebilirler.

chown -R www-data uploads
ls -l
drwxrwxr-x 2 www-data     dev-fabrikam   4096 Feb  5 22:52 uploads

Bu ortak bir yaklaşım olmasına rağmen, bir dezavantajı var. Sistemdeki diğer her kullanıcı Apache'nin yaptığı gibi web sitenizle aynı ayrıcalıklara sahip olduğundan, diğer kullanıcıların sitenize göz atması ve yapılandırma dosyalarınız gibi gizli veriler içerebilecek dosyaları okuması kolaydır.

Pastanı alabilir ve yiyebilirsin de

Bu ileride geliştirilebilir. Sahibinin gruptan daha az ayrıcalık elde etmesi tamamen yasaldır, bu nedenle kullanıcı sahibini root'a atayarak israf etmek yerine, Apache'yi web sitenizdeki dizinlerde ve dosyalarda kullanıcı sahibi yapabiliriz. Bu, tek bakıcı senaryosunun tersine çevrilmesidir, ancak eşit derecede iyi çalışır.

chown -R www-data fabrikam.com
chgrp -R dev-fabrikam fabrikam.com
chmod -R 570 fabrikam.com
chmod g+s fabrikam.com
ls -l
dr-xrwx--- 2 www-data  dev-fabrikam   4096 Feb  5 22:52 fabrikam.com

Apache tarafından yazılabilir olması gereken klasörleriniz varsa, kullanıcı verilerinin izin değerlerini değiştirebilirsiniz, böylece www-data yazma erişimine sahip olur.

chmod u+w uploads
ls -l
drwxrwx--- 2 www-data  dev-fabrikam   4096 Feb  5 22:52 fabrikam.com

Bu çözümle ilgili dikkat edilmesi gereken bir nokta, yeni dosyaların kullanıcı sahibinin, www-data'ya ayarlanmak yerine, içerik oluşturucuyla eşleşmesidir. Böylece, oluşturduğunuz tüm yeni dosyalar Apache tarafından, siz onları kanayana kadar okunamaz.


* Apache ayrıcalığı ayrılığı

Daha önce de belirttiğim gibi, diğer kullanıcıların hangi tür ayrıcalıklara sahip olursanız olun web sitenizde gezinmeleri mümkün. Varsayılan olarak, tüm Apache işlemleri aynı www-data kullanıcısı olarak çalışır, bu nedenle herhangi bir Apache işlemi aynı sunucu üzerinde yapılandırılmış diğer tüm web sitelerinden dosyaları okuyabilir ve hatta bazen değişiklik yapabilir. Apache'yi bir komut dosyasını çalıştırabilen herhangi bir kullanıcı, Apache'nin sahip olduğu erişim hakkına sahip olabilir.

Bu problemle mücadele etmek için çeşitli yaklaşımlar vardır. ayrıcalık ayrılığı Apache'de. Bununla birlikte, her yaklaşım çeşitli performans ve güvenlik dezavantajları ile birlikte gelir. Benim düşünceme göre, daha yüksek güvenlik gereksinimleri olan herhangi bir site, paylaşılan bir sunucuda VirtualHosts kullanmak yerine özel bir sunucuda çalıştırılmalıdır.


Ek hususlar

Daha önce bahsetmedim, ancak geliştiricilerin web sitesini doğrudan düzenlemesi genellikle kötü bir uygulamadır. Daha büyük siteler için, web sunucusunu bir sürüm kontrol sisteminin içeriğinden güncelleyen bir çeşit yayın sistemine sahip olmaktan daha iyidir. Tek bakıcı yaklaşımı muhtemelen ideal, ancak bir kişinin yerine otomatik yazılımınız var.

Web siteniz yayınlanmasına gerek olmayan yüklemelere izin veriyorsa, bu yüklemeler web kökünün dışında bir yerde saklanmalıdır. Aksi halde, kullanıcıların gizli olması amaçlanan dosyaları indirdiğini görebilirsiniz. Örneğin, öğrencilerin ödev göndermelerine izin verirseniz, Apache tarafından sunulmayan bir dizine kaydedilmelidir. Bu ayrıca sır içeren yapılandırma dosyaları için iyi bir yaklaşımdır.

Daha karmaşık gereksinimleri olan bir web sitesi için, Erişim Kontrol Listeleri. Bunlar ayrıcalıkların daha karmaşık kontrolünü sağlar.

Web siteniz karmaşık gereksinimlere sahipse, tüm izinleri içeren bir komut dosyası yazmak isteyebilirsiniz. İyice test edin, sonra güvende tutun. Eğer web sitenizi bir sebepten dolayı yeniden inşa etmek zorunda kalıyorsanız, altın ağırlığına değebilir.


318
2018-02-06 01:50



"chmod -R 775 fabrikam.com". Çoğu web sitesinin içinde çok az dosya çalıştırılabilir olmalı; Örneğin, web sunucusu bunları okuyabildiği sürece php betiği 0640 olabilir. chmod -R a + X fabrikam.com, yalnızca dizinlerde herkes için yürütülebilir haklar verebilir.
güzel bir açıklama! - RNA
Apache'nin kullanıcı olarak çalıştığına dikkat edin apache Red Hat türetilmiş sistemlerde. - Michael Hampton♦
Bu mükemmel, ama anlamadığım bir şey vardı: Apache'yi bir dosya dizininin / sahibinin dosya üzerinde zaten sahipliğiyse, kullanıcının / sahibinin yapma stratejisinin amacını veya avantajını anlamıyorum. - idiotprogrammer
Bu mükemmel bir yazı. İşte benim katkım: www-data sahibi ve dev-fabrikam olarak grup olarak kullanmanın dezavantajı Pastanı alabilir ve yiyebilirsin de sunulan senaryoyu da (tersine) uygular Tek bir kullanıcı tarafından korunuyor. Bu senaryoda, Apache bir klasör veya dosya oluşturduğunda, kullanıcının bu dosyaya erişimi olmayacak ve dosyaların orijinal kullanıcıya geri gönderilmesi gerekir. Yanıtımı güncellemedim çünkü ifademin% 100 emin değilim. Cevabı düzeltmeden önce başkalarının bunu onaylamasını tercih ederim.


Neden bu kadar çok insan Apache (ve / veya PHP) yapabileceklerini kontrol etmek için Linux haklarının “öteki” (o) bölümünü kullanıyor (veya tavsiye ediyor). Bu doğru parçayı "0" dan başka bir şeye ayarlayarak, tüm dünyanın dosya / dizin üzerinde bir şeyler yapmasına izin verirsiniz.

Benim yaklaşımım şu:

  • İki ayrı kullanıcı oluşturuyorum. SSH / SFTP erişimi için (gerekirse), tüm dosyaların sahibi olacak ve bir PHP FastCGI kullanıcısı (kullanıcı web sitesi olarak çalışacaktır). Bu kullanıcıları sırasıyla arayalım şilin ve bob-www.
  • şilin tam haklara sahip olacakrwx klasörlerde rw dosyalarda), böylece tüm web sitesini okuyabilir ve düzenleyebilir.
  • PHP FastCGI süreci ihtiyacı R-X klasörlerdeki haklar ve r-- gibi çok özel klasörler hariç dosyalardaki haklar cache/ veya uploads/"Yazma" izninin de gerekli olduğu yerlerde. PHP FastCGI bu yeteneği vermek için, olarak çalışacaktır bob-www, ve bob-www otomatik olarak oluşturulan eklenecektir şilin grubudur.
  • Artık tüm dizinlerin ve dosyaların sahibi ve grubu olduğundan emin oluyoruz. bob bob.
  • Bir şey eksik: hatta FastCGI kullanıyoruz, ancak Apache hala okumaya, statik içeriklere ya da okuyacağımız .htaccess dosyalarına okumaya ihtiyacı var. AllowOverride başka bir şeye ayarlanmış None. Kullanmaktan kaçınmak için O hakların bir parçası, ben www veri kullanıcıya şilin grubudur.

Şimdi:

  • Geliştiricinin neler yapabileceğini kontrol etmek için u hakların bir kısmı (ancak aşağıdaki not).
  • Apache ve PHP'nin neler yapabileceğini kontrol etmek için g hakların bir parçası.
  • O Bölüm her zaman 0 olarak ayarlanmıştır, bu yüzden sunucuda başka kimse web sitesini okuyamaz veya düzenleyemez.
  • Ne zaman sorun yok şilin kullanıcı otomatik olarak ana gruba ait olacağından yeni dosyalar oluşturur (şilin).

Bu bir özet, ama bu durumda, şilin SSH'ye izin verilir. Herhangi bir kullanıcının web sitesini değiştirmesine izin verilmemesi gerekiyorsa (örn. Müşteri sadece bir CMS yönetici paneli aracılığıyla web sitesini değiştirir ve Linux bilgisine sahip değildir), yine de iki kullanıcı oluşturun, ancak /bin/falseiçin kabuk olarak şilin yanı sıra girişini de devre dışı bırakın.

    adduser --home /var/www/bobwebsite --shell /bin/bash bob
    adduser --no-create-home --shell /bin/false --disabled-login --ingroup bob bob-www
    adduser www-data bob
    cd /var/www/bobwebsite
    chown -R bob:bob .
    find -type d -exec chmod 750 {} \;
    find -type f -exec chmod 640 {} \;

Not : insanlar bunu sınırlandırmayı unutuyorlar u (sahip) hakları çoğu zaman işe yaramaz ve güvensizdir, çünkü bir dosyanın sahibi chmod Komuta, hakları bile 000.

Yaklaşımımın bazı güvenlik sorunları olup olmadığını söyleyin, çünkü% 100 emin değilim, ama benim kullandığım şey bu.

Bu yapılandırmanın bir problemi olduğunu düşünüyorum: PHP / Apache yeni bir dosya oluşturduğunda (örn. Yükleme) bob-www: bob, ve şilin sadece okuyabilecekler. Belki de dizinde ayarlanmış olan problemi çözebilir.


13
2017-07-19 21:42



Linux yok sayar setuid. Yeni dosyalar her zaman yaratıcı tarafından sahip olunur. - Paul
Ben bir şey anlamıyorum. Bu, yalnızca geliştiricilerin daha fazla geliştiricinin web sitesinde basit bir şekilde çalıştığı durumla ilişkili görünmüyor. bob. Bununla nasıl başa çıkıyorsun? Örneğin. ssh aracılığıyla, her iki kullanıcı da bob olarak giriş yapar. bob (1) şifreyi hatırlayamadığını ve bir başkasına değiştirdiğini fakat yine de güvenli olduğunu düşünür. Bob (2) bir dahaki sefere giriş yapmayı dener ve yapamaz. - n611x007
@naxa Marjinal olarak iyi bir sistem, hiçbir zaman web sitesini doğrudan değiştiren geliştiricilerin hiçbirine sahip olmamalıdır. İdeal olarak, web sitesi, 'bob' kullanıcı hesabının her (kararlı) sürümü otomatik olarak çekip dağıttığı şekilde sürüm kontrolü altındadır. Bu nedenle, geliştiriciler site dışında geliştirme yapar ve değişiklikler dağıtım sunucusuna yönlendirildikten sonra dağıtılır. 'bob', uzaktan oturum açmayı içermeyen, çok sınırlı ağ izinlerine sahip olması gereken bir sistem kullanıcısıdır; iptables aslında bu gibi şeyler için UID'ye filtre uygulamanıza izin verir. - Parthian Shot
"Neden bu kadar çok insanın" öteki "(o) kısmı" nı neden kullandığını (ya da tavsiye ettiğini) merak ediyorum - o zaman belki de bunu cevabı değil, bir soru olarak göndermeliydin. Web sunucusunu (sistemin en çok maruz kalan kısmı olarak) en düşük ayrıcalık düzeyiyle kasten çalıştırmak nadir değildir; destek, geliştirme, yönetici hesapları da farklı erişime ihtiyaç duyar. - symcbean


Yukarıdaki mükemmel cevapta google rütbesi verildiğinde, dikkat edilmesi gereken bir şey olduğunu düşünüyorum ve cevaptan sonra not bırakamıyorum.

Örneğiyle devam edersek, www-data sahibi olarak ve dev-fabrikam olarak dizin (veya dosyada) 570 izinli olarak kullanmayı planlıyorsanız, not etmek önemlidir. Linux yok sayar  setuidBöylece tüm yeni dosyalar onları oluşturan kullanıcı tarafından sahiplenilecektir. Bu, yeni dizinler ve dosyalar oluşturduktan sonra, benzer bir şeye sahip olmanız gerekeceği anlamına gelir:

chown -R www-data /newdirectory/
chmod -R 570 /newdirectory/

Rackspace OpenStack için Ubuntu 12.04'te, sorunu yeniden başlatan sunucuyu yeniden başlatana kadar 570 çalışmasına izin alamadığım tuhaf bir sorun yaşadım. Görünüşte bu kadar basit bir konuda tüyler giderek artıyordu ....


9
2018-01-13 22:03



Lütfen bunun googled olmasına izin verin: Raspbian'da (aka ahududu pi üzerinde, eğer / var / www'in lighttpd (veya başka bir web tarayıcısı) altında sahipliğini değiştirmek istiyorsanız, yeniden başlatmanız GEREKİR. - gbronner
@gbronner Çözünürlüğü bulmak zor bir konu ise, bunu bir soru olarak göndermeyi ve soruya cevap vermeyi düşünebilirsiniz. Ancak, farklı bir SE Soru-Cevap sitesinde daha uygun olabilir. Benim tahminim Unix ve Linux Bunu yapmak için iyi bir yer olabilir. - Paul
Ayrıca raspberrypi.stackexchange.com var; SE siteleri, bilgiyi biraz parçalara ayırıyor gibi görünüyor. - gbronner
@gbronner lol. Bunu bilmiyordum! U & L'deki Raspbian etiketi 120 soru gibi bir şey içeriyor. - Paul


Bu yapılandırmaya gidiyorum:

  1. Yükleme dışındaki tüm dizinler bir sahipe root ve grup rootizinleri 0755.
  2. Tüm dosyalar sahibine ayarlandı root ve grup rootizinleri 0644.
  3. Dizine sahip dizini yükler rootgrup www-dataizinleri 1770. Yapışkan bit, grup sahibinin içindeki dizini ve dosyaları kaldırmasına veya yeniden adlandırmasına izin vermez.
  4. İçerideki içeriğin klasörüyle yeni bir dizin www-data sahip kullanıcı ve grup ve 0700 her biri için izin www-data dosya yükleyen kullanıcı.
  5. Apache yapılandırması:

Reddetmek AllowOverride ve Index Yükleme dizininde, Apache okunmuyor .htaccess dosyalar ve Apache kullanıcısı, yükleme klasörünün içeriğini dizine ekleyemez:

<Directory /siteDir>
   Options -Indexes
</Directory>

<Directory /siteDir/uploadDir>
   AllowOverride none
</Directory>

6. php.ini yapılandırma:

open_basedir = /siteDir:/tmp:/usr/share/phpmyadmin
post_max_size = 5M
file_uploads = On
upload_max_filesize = 3M
max_file_uploads = 20

Bu yapılandırma ile www-data kullanıcı dışındaki dizinleri alamayacak siteDir/  /tmp ve /usr/share/phpmyadmin. Ayrıca, aynı dosyaya yüklenecek maksimum dosya boyutunu, maksimum posta boyutunu ve maksimum dosyaları kontrol edebilirsiniz.


3
2017-10-23 09:54





"Leo" adlı bir FTP kullanıcınız olduğunda, example.com web dizinine dosya yüklemeniz gerekiyorsa ve ayrıca "apache" kullanıcınızın önbellek dizinindeki uploa-files / sessions / cache dosyalarını oluşturabilmesini de gerektirir.

Bu komut, leo'i example.com'a apache olarak sahip ve grup olarak atar, apache kullanıcısı apache grubunun bir parçasıdır ve bu nedenle apache grubunun izinlerini devralır.

chown -R leo: apache example.com

Doğru izni sağlayan ve güvenlik endişelerini de yerine getiren başka bir komut.

chmod -R 2774 example.com

Burada ilk 2 numara dizin içindir ve oluşturulan her yeni dosya aynı grupta ve sahip izinlerinde kalacaktır. 77 sahip ve grup için tam erişim hakkına sahiptir. 4 diğerleri için sadece yalak okuyabilir demek içindir.

aşağıdaki izin numaralarını anlamak için yararlıdır

Number  Octal Permission Representation
0   No permission
1   Execute permission
2   Write permission
3   Execute and write permission: 1 (execute) + 2 (write) = 3
4   Read permission
5   Read and execute permission: 4 (read) + 1 (execute) = 5
6   Read and write permission: 4 (read) + 2 (write) = 6
7   All permissions: 4 (read) + 2 (write) + 1 (execute) = 7

3
2017-08-09 07:15