Güvenli dosya izinleri ayarlama

Linux'ta dosyalar için güvenli erişim düzeyi ayarlayarak hacker saldırılarını önleyin. chmod'un tam kılavuzunu, 777'nin risklerini ve find ile toplu düzeltmeyi okuyun.

7 dk Güncellendi 12 Oct 2026

Dosyalar için Güvenli Erişim Düzeyi Neden Her Zamankinden Daha Önemli?

Web barındırma ve bulut altyapısı dünyasında, sunuculara sızmanın en yaygın yollarından biri, dosya erişim ayarlarının yanlış yapılandırılmasından yararlanmaktır. 777 erişimine sahip bir dosya (tüm kullanıcıların okuma, yazma ve çalıştırma izni vardır), hackerların kötü amaçlı betiklerini çalıştırması veya hassas bilgileri çalması için bir kapı olabilir. Dosyalar için güvenli erişim düzeyi ayarlamak yalnızca önleyici bir önlem değil, aynı zamanda temel sunucu güvenlik standartlarının bir parçasıdır.

Bu makalede, dosyalar ve dizinler için doğru izinleri nasıl ayarlayacağınızı, 777 gibi yaygın risklerden nasıl kaçınacağınızı ve find komutunu kullanarak toplu düzeltmeleri en hızlı şekilde nasıl yapacağınızı pratik olarak öğreneceksiniz. Bu rehber; sunucu yöneticileri, geliştiriciler ve Linux ile çalışan herkes için faydalı olacaktır.

Linux İzinlerinin Temelleri: Sayılar ve Anlamları

Her şeyden önce, Linux izin sistemini tam olarak anlamanız gerekir. Her dosya ve dizinin üç erişim düzeyi vardır: sahip (owner), grup (group) ve diğer kullanıcılar (others). Her düzey için üç tür izin tanımlanır: okuma (r=4), yazma (w=2) ve çalıştırma (x=1). Bu sayıların toplamı nihai değeri oluşturur.

  • 4 = Okuma (Read) — içeriği görüntüleme
  • 2 = Yazma (Write) — düzenleme ve değiştirme
  • 1 = Çalıştırma (Execute) — dosyayı çalıştırma veya dizine girme

Örneğin, 755 izni, sahibin tüm izinlere (4+2+1=7) sahip olduğu, grubun okuyup çalıştırabildiği (4+1=5) ve diğer kullanıcıların da yalnızca okuyup çalıştırabildiği (5) anlamına gelir. Bu değer çoğu web sunucusu dosyası için uygundur.

Standart ve Önerilen Değerler

Dosyalar için güvenli erişim düzeyi ayarlamak için her dosya türünün hangi izne ihtiyaç duyduğunu bilmelisiniz:

  • Yapılandırma dosyaları (wp-config.php veya .env gibi): 600 veya 640 — yalnızca sahip (640 durumunda grup) okuyabilir.
  • Betik dosyaları (PHP, Python vb.): 644 — sahip yazabilir, diğerleri yalnızca okur.
  • Dizinler: 755 — sahibin tam erişimi vardır, diğerleri girebilir ve dosyaları görebilir.
  • Yükleme dosyaları (uploads klasörü gibi): dizin için 755 ve dosyalar için 644.

Önemli not: Ayrı bir kullanıcıyla PHP-FPM kullanıyorsanız, sahiplik (ownership) ayarı yapmanız gerekebilir. Bu durumda, dosyanın sahibi PHP-FPM kullanıcısı olmalı ve hassas dosyalar için 600 izni yeterlidir.

777 İznini Kullanmanın Riskleri ve Güvenli Alternatifler

777 izni, sistemdeki her kullanıcının (yetkisiz kullanıcılar dahil) dosyayı okuyabileceği, yazabileceği ve çalıştırabileceği anlamına gelir. Paylaşımlı ortamlarda veya genel sunucularda bu durum güvenlik açısından bir felakettir. Hackerlar şunları yapabilir:

  • Kötü amaçlı dosyaları orijinal dosyaların yerine koyabilir.
  • Yükleme klasörlerine arka kapı (Backdoor) betikleri yerleştirebilir.
  • Parolalar veya API anahtarları gibi hassas bilgileri okuyabilir.

Dosyalarınız yükleme veya betik kurulum sorunları nedeniyle 777 olarak değiştiyse, bunları derhal düzeltmelisiniz. Ancak 777 kullanmak yerine daha güvenli çözümler vardır:

  1. Dosya sahipliğini değiştirme: chown komutuyla dosyanın sahibini web sunucusu kullanıcısına (örneğin www-data) değiştirin.
  2. Dizinler için 755 iznini kullanma: Bu değer, web sunucusunun dosyaları okumasına ve çalıştırmasına izin verir, ancak yalnızca sahip yazabilir.
  3. Dosyalar için 644 kullanma: Web sunucusunun yalnızca okuması gerekiyorsa bu değer yeterlidir.

Örneğin, uploads klasörünüz yanlışlıkla 777 yapıldıysa, şu şekilde düzeltebilirsiniz:

chmod 755 /var/www/html/uploads
find /var/www/html/uploads -type f -exec chmod 644 {} \;

Bu komut önce dizin iznini 755 olarak değiştirir ve ardından içindeki tüm dosyaları 644 olarak ayarlar.

Yaygın Hata: Gizli Dosyaları Unutmak

Dosyalar için güvenli erişim düzeyi ayarlarken yapılan yaygın hatalardan biri, gizli dosyaları (.htaccess veya .env gibi) göz ardı etmektir. Bu dosyalar genellikle hassas bilgiler içerir ve 600 iznine sahip olmalıdır. Bunları kontrol etmek için şu komutu kullanın:

ls -la /var/www/html/

Bu komutun çıktısı, gizli dosyalar dahil tüm dosyaları izinleriyle birlikte gösterir. Gizli dosyaları açık izinlerle (örneğin 644 veya 777) görürseniz, bunları düzeltin:

chmod 600 /var/www/html/.env

find Komutuyla İzinleri Toplu Düzeltme

Gerçek sunucularda, izinlerini toplu olarak düzeltmeniz gereken yüzlerce veya binlerce dosyayla karşılaşırsınız. find komutu bu iş için en iyi araçtır. Bu komut, dosyaları tür, boyut, değişiklik zamanı ve diğer ölçütlere göre filtrelemenize ve ardından üzerlerinde istediğiniz işlemi yapmanıza olanak tanır.

Dizin ve Dosya İzinlerini Ayrı Ayrı Düzeltme

Dosyalar için güvenli erişim düzeyi ayarlamanın en iyi yöntemlerinden biri, dizinler ve dosyalar için farklı izinler uygulamaktır. Dizinler 755 ve dosyalar 644 olmalıdır. Aşağıdaki iki komutla bunu proje yapısının tamamında yapabilirsiniz:

find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;

İlk komut tüm dizinleri bulur ve izinlerini 755 olarak değiştirir. İkinci komut da aynı işlemi dosyalar için 644 izniyle yapar. Bu yöntem çok verimlidir ve birkaç saniyeden kısa sürede proje yapınızın tamamı güvenli hale gelir.

Tehlikeli Dosyaları Bulmak için find Kullanma

İzinleri düzeltmenin yanı sıra, tehlikeli izinlere sahip dosyaları belirlemek için find kullanabilirsiniz. Aşağıdaki komut, 777 iznine sahip tüm dosyaları bulur:

find /var/www/html -type f -perm 777

Bu komutun çıktısı boşsa, tehlikeli dosya yok demektir. Aksi takdirde, aşağıdaki komutla bunları düzeltebilirsiniz:

find /var/www/html -type f -perm 777 -exec chmod 644 {} \;

Bu komut, 777 iznine sahip tüm dosyaları bulur ve izinlerini 644 olarak değiştirir. Benzer şekilde, tehlikeli dizinleri de bulup düzeltebilirsiniz:

find /var/www/html -type d -perm 777 -exec chmod 755 {} \;

Dosya Uzantısına Göre Filtreleme

Bazen yalnızca belirli dosyaların izinlerini değiştirmeniz gerekir. Örneğin, yalnızca PHP dosyalarını 644 olarak değiştirmek istiyorsanız:

find /var/www/html -type f -name "*.php" -exec chmod 644 {} \;

Veya çalıştırılabilir dosyaları (kabuk betikleri gibi) 755 olarak değiştirmek istiyorsanız:

find /var/www/html -type f -name "*.sh" -exec chmod 755 {} \;

Bu yöntem, çalıştırma izni gerektiren dosyalar üzerinde size daha hassas bir kontrol sağlar.

İleri Düzey İpuçları: Sahiplik ve Gruplar

Dosyalar için güvenli erişim düzeyi ayarlamak yalnızca izinlerle sınırlı değildir; sahiplik (ownership) de hayati bir rol oynar. Dosyanın sahibi yanlışsa, doğru izinlerle bile güvenlik sorunları oluşabilir. Örneğin, web sunucusu dosyaları root kullanıcısına aitse, web sunucusu bunları okuyamaz (644 izni olmadığı sürece).

Dosya ve dizinlerin sahipliğini web sunucusu kullanıcısına (genellikle Ubuntu'da www-data veya CentOS'ta nginx) değiştirmek için şu komutu kullanın:

chown -R www-data:www-data /var/www/html

Ancak bu işlemin .env gibi hassas dosyalar için uygun olmayabileceğini unutmayın. Bu durumlarda, sahipliği kendi ana kullanıcınıza vermek ve web sunucusu için yalnızca okuma izni sağlamak daha iyidir.

Yaygın Hata: Filtresiz chmod -R Kullanımı

Acemi yöneticilerin en büyük hatalarından biri, tüm dizin için chmod -R 777 komutunu kullanmaktır. Bu işlem yalnızca güvenliği tamamen ortadan kaldırmakla kalmaz, aynı zamanda sistem dosyalarına da zarar verebilir. Yalnızca hedeflenen dosyaların değişmesi için her zaman uygun filtrelerle find kullanın.

Örneğin, aşağıdaki tehlikeli komut yerine:

chmod -R 777 /var/www/html

Şu güvenli komutları kullanın:

find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;

Bu yöntem, dosyalar için güvenli erişim düzeyini garanti eder ve web sunucusunun işlevselliğini bozmaz.

Özet ve En İyi Uygulamalar

Dosyalar için güvenli erişim düzeyi ayarlamak, sunucunuzu korumak için en önemli önlemlerden biridir. Aşağıdaki noktalara dikkat ederek birçok yaygın saldırıyı önleyebilirsiniz:

  • Asla 777 iznini kullanmayın; her zaman 755 ve 644 gibi güvenli alternatifleri seçin.
  • .env ve wp-config.php gibi hassas dosyaları 600 izniyle koruyun.
  • İzinleri toplu düzeltmek için find komutunu kullanın ve dosyaları ile dizinleri her zaman ayrı ayrı yönetin.
  • Dosya sahipliğini doğru ayarlayın ve sistem dosyalarının sahipliğinde gereksiz değişiklikler yapmaktan kaçının.
  • Periyodik olarak, tehlikeli izinlere sahip dosyaları find komutuyla arayın ve düzeltin.

Web barındırma ve sunucu yönetimi için kapsamlı bir çözüm arıyorsanız, ServerNet'in web barındırma hizmetleri ve bulut altyapısı iyi bir seçenek olabilir. Ancak hangi hizmeti kullanırsanız kullanın, bu makalede ele alınan güvenlik ilkelerine uymak, sistem yöneticisi olarak sizin temel sorumluluğunuzdur.

Bu talimatları uygulayarak, dosyalarınızın yetkisiz erişimlere karşı korunduğundan ve sunucunuzun yaygın saldırılara karşı dirençli olduğundan emin olabilirsiniz. Güvenliğin sürekli bir süreç olduğunu, tek seferlik bir eylem olmadığını unutmayın. Bu nedenle, dosya izinlerinizi düzenli olarak kontrol edin ve güncelleyin.

Bu sayfa yardımcı oldu mu?