İçeriğe geç
Yeni yazı çıkınca e-posta · 4.812 abone 190 rehber · 78 ipucu · 58 komut RSS GitHub LinkedIn İletişim
Ara Ctrl K Bültene katıl
Tüm arşiv · 190 rehber →
Tüm araçlar · 75 üreteç →
Linux Sunucu

Linux dosya izinleri: rwx, sayılar ve sık yapılan hatalar

Sahip-grup-diğer üçlüsü, sayısal karşılıklar, dizinlerde x'in ne anlama geldiği, umask ve 777'nin neden çözüm olmadığı.

Mustafa Çelik 25 Ağustos 2026 · 5 dk okuma

Linux izin modeli küçük ve öğrenilebilir bir sistemdir, ama iki noktada sezgiye aykırı davranır: dizinlerde izinlerin anlamı değişir, ve bir dosyayı silme yetkisi dosyanın kendisinde değil bulunduğu dizindedir. Sorunların çoğu bu ikisinden çıkar.

Üç sınıf, üç izin

Her dosyanın bir sahibi ve bir grubu vardır. İzinler üç sınıf için ayrı ayrı tanımlanır: sahip, grup üyeleri ve diğer herkes.

Her sınıf için üç izin bulunur: okuma (r), yazma (w) ve çalıştırma (x).

Listelemede görülen -rwxr-xr-- dizisi böyle okunur: ilk karakter türü söyler (dosya, dizin ya da bağlantı), sonraki üçerli gruplar sırasıyla sahip, grup ve diğerlerine aittir.

Kritik nokta: sınıflar dışlayıcıdır. Dosyanın sahibiyseniz yalnızca sahip izinleri size uygulanır — grup daha geniş yetki verse bile. Bu, “gruba yazma verdim ama yazamıyorum” durumunun açıklamasıdır.

Sayılar nereden geliyor

Her izin bir değer taşır: okuma 4, yazma 2, çalıştırma 1. Bir sınıfın izni, verilen izinlerin toplamıdır.

Böylece 7 okuma+yazma+çalıştırma, 6 okuma+yazma, 5 okuma+çalıştırma, 4 yalnızca okuma demektir.

Üç sınıf yan yana yazılır: 755 sahibe tam yetki, gruba ve diğerlerine okuma ve çalıştırma verir. 644 ise sahibe okuma-yazma, diğerlerine yalnızca okuma verir.

Pratikte iki değer işin çoğunu görür: dosyalar için 644, dizinler için 755. Betikler için 755.

Dizinlerde anlam değişir

Bu, en çok kafa karıştıran kısımdır.

Bir dizinde okuma (r), içindekilerin adlarını listeleyebilmek demektir. Çalıştırma (x) ise dizine girebilmek ve içindeki bir öğeye erişebilmek demektir.

Sonuç sezgiye aykırıdır: x olmadan r verilirse dosya adlarını görürsünüz ama hiçbirini açamazsınız. Tersine, r olmadan x verilirse listeleyemezsiniz ama adını tam olarak bildiğiniz dosyaya erişebilirsiniz.

Bu yüzden dizinlerde x neredeyse her zaman gerekir — ve bir dosyaya erişmek için yoldaki her dizinde x bulunmalıdır. “İzinler doğru ama erişemiyorum” vakalarının en yaygın nedeni, üst dizinlerden birinde eksik x iznidir.

Silme yetkisi dosyada değil

İkinci sezgi kırılması: bir dosyayı silmek için o dosyada yazma izniniz olması gerekmez. Gereken şey, dosyanın bulunduğu dizinde yazma iznidir.

Bunun nedeni, silmenin aslında dizinden bir kayıt çıkarmak olmasıdır. Dosyanın kendi izinleri bu işleme karışmaz.

Ortak dizinlerde bu ciddi bir sorundur: herkesin yazabildiği bir dizinde herkes başkasının dosyasını silebilir. Çözüm yapışkan bittir: dizine eklendiğinde, bir dosyayı yalnızca sahibi ya da dizinin sahibi silebilir. /tmp dizininde varsayılan olarak açıktır.

umask: yeni dosyalar neden 644 oluyor

Yeni oluşturulan dosyalar izinlerini bir taban değerden alır ve umask o tabandan neyin çıkarılacağını belirler.

Dosyalar için taban 666, dizinler için 777’dir. Yaygın umask değeri 022 olduğu için sonuç dosyada 644, dizinde 755 olur.

Bu, çalıştırma izninin neden yeni dosyalara verilmediğini de açıklar — güvenli bir öntanımlıdır.

Servis hesaplarında umask’ın farklı ayarlanması, o servisin ürettiği dosyaların beklenmedik izinlerle oluşmasına yol açar; sistemd birimlerinde bu açıkça tanımlanabilir. Ayrıntı systemd nedir yazısında.

Özel bitler

Üç ek bit vardır ve ikisi dikkat gerektirir.

setuid, bir programın sahibinin yetkisiyle çalışmasını sağlar. Gerekli olduğu birkaç sistem aracı dışında tehlikelidir; yetki yükseltmenin klasik yoludur.

setgid dizinlerde çok işe yarar: içeride oluşturulan dosyalar, oluşturanın değil dizinin grubunu devralır. Ortak proje dizinlerinde grup tutarlılığını sağlamanın en temiz yoludur.

Yapışkan bit yukarıda anlatılan silme korumasıdır.

777 çözüm değildir

Bir izin sorununda chmod 777 çalışır — ve tam olarak bu yüzden tehlikelidir. Sorunu gizler, nedenini bulmanızı engeller ve dosyayı sistemdeki herkese açar.

Doğru yaklaşım, hangi sınıfın hangi izne ihtiyacı olduğunu bulmaktır. Erişemeyen hesap dosyanın grubunda mı? Yoldaki dizinlerde x var mı? Sahiplik doğru mu?

Windows tarafında paylaşım ve NTFS izinlerinin kesişmesi benzer bir karmaşıklık üretir; etkin izin hesaplayıcı aracı ve dosya sunucusu izinleri rehberi o tarafı ele alıyor.

Gruplar ölçeklenir, tek tek izinler ölçeklenmez

İzni kullanıcıya doğrudan vermek kısa vadede hızlıdır ama bir yıl sonra kimin neye eriştiği bilinmez hâle gelir.

Doğru düzen, erişimi gruba vermek ve kullanıcıyı gruba almaktır. Böylece bir kişi ayrıldığında ya da rol değiştirdiğinde tek bir yerde işlem yapılır.

Aynı ilkenin genel çerçevesi en az yetki ilkesi yazısında.

Kısaca

Model üç sınıf ve üç izinden ibarettir; sayılar yalnızca kısaltmadır. İki kural akılda tutulursa çoğu sorun çözülür: dizinde x girmek demektir ve silme yetkisi dizinde durur.

Ve 777 bir çözüm değil, sorunun ertelenmesidir.

Mustafa Çelik

Altyapı ve Operasyon Müdürü, İstanbul. 25 yıldır BT altyapısı, sistem yönetimi ve ağ altyapısıyla uğraşıyor; öğrendiklerini bu blogda üretim ortamında denenmiş rehberlere çeviriyor.

Hakkımda

Bu rehber işinize yaradıysa, sonrakini kaçırmayın.

Yeni yazı yayınlandığında tek e-posta. Takvim yok, dilediğiniz an çıkabilirsiniz.

Bülten sağlayıcısı henüz bağlanmadı. Bağlanana kadar e-posta ile yazabilirsiniz ya da RSS akışını takip edebilirsiniz.