Sekizlik (Octal) Sistem Neden Kullanılır? Unix/Linux Dosya İzinleri ve Ötesi
Bu makale Taban Dönüşümü aracı için hazırlanmış kapsamlı rehber ve karar destek içeriğidir.
İçindekiler
- Unix ve Linux Sistemlerinde Güvenliğin Temeli
- Dosya İzinlerinin Üçlü Yapısı: Okuma, Yazma, Çalıştırma
- Neden 8 Tabanı (Octal Sistem) Kullanılır?
- Octal'dan İkilik (Binary) ve Onluk (Decimal) Sistemlere Geçiş Mantığı
- En Yaygın Chmod Kullanımları ve İzin Hesaplama Senaryoları
1. Unix ve Linux Sistemlerinde Güvenliğin Temeli
Dünya üzerindeki web sunucularının, akıllı telefonların (Android) ve bulut altyapılarının çok büyük bir kısmı Unix/Linux tabanlı işletim sistemleri üzerinde çalışır. Bu sistemlerin çok kullanıcılı (multi-user) mimarisi, yüksek güvenlik gerektirir. Sistemdeki her bir dosya ve klasörün "kim tarafından okunabileceği, değiştirilebileceği veya çalıştırılabileceği" son derece sıkı kurallara bağlanmıştır.
Yeni bir Linux kullanıcısı veya web geliştiricisi terminal ekranında chmod 755 dosya.txt veya chmod 644 index.html gibi komutlar gördüğünde genellikle ezbere hareket eder. Buradaki "755" veya "644" sayıları aslında onluk (decimal) değil, sekizlik (octal - 8 tabanında) sayılardır. Linux dosya izinleri mekanizması, sekizlik sayı sisteminin günümüz bilişim dünyasında aktif olarak kullanıldığı en yaygın ve en bilinen örnektir.
2. Dosya İzinlerinin Üçlü Yapısı: Okuma, Yazma, Çalıştırma
Linux işletim sisteminde izinler üç temel eylem üzerine kuruludur:
- Read (r - Okuma): Dosya içeriğini görüntüleme.
- Write (w - Yazma): Dosya içeriğini değiştirme, silme.
- Execute (x - Çalıştırma): Dosyayı bir program veya betik (script) olarak çalıştırma.
Sistem bu üç eylemi, üç farklı kullanıcı grubu için ayrı ayrı tanımlar:
- User (u - Sahibi): Dosyayı oluşturan ana kullanıcı.
- Group (g - Grup): Dosyanın ait olduğu kullanıcı grubundakiler.
- Others (o - Diğerleri): Sisteme bağlı geri kalan herkes (genel kamu).
Bir dosyanın izinlerine ls -l komutuyla baktığınızda şuna benzer bir harf dizilimi görürsünüz:-rwxr-xr--
Bu dizilimi parçaladığımızda:
- İlk karakter (
-) bunun bir dosya olduğunu belirtir (Klasör olsadolurdu). - Sonraki 3 karakter (
rwx): Dosya sahibi (User) okuyabilir, yazabilir ve çalıştırabilir. - Sonraki 3 karakter (
r-x): Grup (Group) okuyabilir, çalıştırabilir ama yazamaz. - Sonraki 3 karakter (
r--): Diğerleri (Others) sadece okuyabilir.
3. Neden 8 Tabanı (Octal Sistem) Kullanılır?
Yukarıdaki izinlerin arka plandaki çalışma mantığı aslında ikilik (binary) sisteme dayanır. İşletim sistemi için her bir izin (r, w, x) bir bittir. İzin varsa "1", izin yoksa (yani - ise) "0" değerini alır.
Sahip izinlerini (rwx) binary'ye çevirirsek: 1, 1, 1 -> 111
Grup izinlerini (r-x) binary'ye çevirirsek: 1, 0, 1 -> 101
Diğerleri izinlerini (r--) binary'ye çevirirsek: 1, 0, 0 -> 100
Şimdi elde ettiğimiz bu 9 bitlik dizilime bakalım: 111101100. Bu dizilimi ezberlemek, insan için çok zordur. İşte bu yüzden sistem yöneticileri Sekizlik (Octal) sayı sistemini kullanırlar.
Octal sistem 8 tabanındadır (0-7 arası rakamlar). Octal sistemin en büyük avantajı, tam olarak 3 adet binary bit'in (000'dan 111'e kadar olan 8 durumun), tek bir Octal rakamla kusursuz bir şekilde eşleşmesidir!
4. Octal'dan İkilik (Binary) ve Onluk (Decimal) Sistemlere Geçiş Mantığı
Binary'den Octal'a (2 tabanından 8 tabanına) dönüşüm matematiği, 3 bitlik gruplar halinde şu şekildedir:
Bit değerleri sırasıyla $ 2^2=4 $, $ 2^1=2 $, $ 2^0=1 $'dir.
- Okuma (r): 100 (Binary) = 4 (Octal)
- Yazma (w): 010 (Binary) = 2 (Octal)
- Çalıştırma (x): 001 (Binary) = 1 (Octal)
Eğer bir kullanıcıya hem okuma, hem yazma, hem çalıştırma izni verecekseniz, ilgili bitler 1 olur:111 (Binary) = 4 + 2 + 1 = 7 (Octal)
Eğer bir kullanıcıya sadece okuma ve çalıştırma izni verecekseniz:101 (Binary) = 4 + 0 + 1 = 5 (Octal)
Bir önceki rwxr-xr-- örneğimizin komut karşılığı şöyle hesaplanır:
- User (rwx) -> 4+2+1 = 7
- Group (r-x) -> 4+0+1 = 5
- Others (r--) -> 4+0+0 = 4
Sonuç: Bu izinleri atamak için çalıştırılması gereken komut chmod 754 dosya_adi şeklindedir.
5. En Yaygın Chmod Kullanımları ve İzin Hesaplama Senaryoları
Linux sistemlerinde ve web sunucularında (örn: Apache, Nginx) genellikle bazı standart izin şablonları kullanılır. Bunların octal mantığını anlamak, güvenlik açıklarını önlemek için şarttır.
chmod 777 Neden Tehlikelidir?
7 (4+2+1) tam izin demektir. 777, sistemdeki herkesin dosyayı okuyabileceği, değiştirebileceği ve çalıştırabileceği anlamına gelir. Bu, bir web sunucusunda dışarıdan gelen bir saldırganın zararlı bir script yükleyip (yazma) bunu sunucuda çalıştırmasına (execute) olanak tanıyan devasa bir güvenlik zafiyetidir.
chmod 644 - Standart Dosya İzni
Web sunucularındaki HTML, CSS veya resim dosyaları için genellikle bu kullanılır.
- 6 (4+2) = Sahibi okuyabilir ve yazabilir (dosyayı güncelleyebilir).
- 4 = Grup sadece okuyabilir.
- 4 = Diğerleri (site ziyaretçileri) sadece okuyabilir (dosyayı görebilir, değiştiremez).
chmod 755 - Standart Klasör ve Script İzni
Web sitenizdeki klasörlerin (dizinlerin) içine girilebilmesi için "çalıştırma (x)" izni gereklidir.
- 7 = Sahibi okur, yazar, dizine girer.
- 5 (4+1) = Grup ve diğerleri içeriği okur ve dizine girer, ancak içine dosya oluşturamaz.
Güvenli bir sistem yönetimi için ezberci bir yaklaşımdan ziyade, sayı tabanları ve bit işlemlerinin temel prensiplerine hakim olmak her sistem yöneticisini (SysAdmin) bir adım öne taşır.
Sistem İzinlerini Hızlıca Çevirin
Terminal komutlarında kullandığınız 8'lik (Octal) izin kodlarının arka plandaki 2'lik (Binary) ve 10'luk (Decimal) karşılıklarını net olarak görmek veya hesaplamalar yapmak için Taban Dönüşümü aracımızı kullanabilirsiniz.