Chmod Nedir?
Chmod komutu ya da Chmod Permissions olarak bilinen Chmod İzinleri, dosyalar veya dizinlerdeki izinleri değiştirmek için kullanılır. Böyle bir izin sistemi olmasaydı, herkes sisteminizde ki her şeye ulaşabilir ve istediği her türlü değişikliği yapabilirdi. Bu çok ciddi bir güvenlik sorunu ortaya koyardı.
Linux ve Unix benzeri işletim sistemlerinde, her bir dosya için özel erişim izinleri verilebilir. Bu izinlere Chmod Permissions denir.
Bildiğiniz gibi bir web sitesinin barındığı sunucu büyük çoğunlukla UNIX benzeri işletim sistemleri ile çalışır ve tavsiye edilir. Bu nedenle chmod izinleri site güvenirliğini en üst düzeye çıkarabilmek için çok ama çok önemlidir.
Unix işletim sistemlerinde yüklü olan algoritma, OS Windows’taki dosya ve dizinlerle çalışmak için olağan prosedürden farklıdır, burada bu açıdan koruma o kadar güçlü değildir ki, genellikle virüsün virüs enfeksiyonu şeklinde felaket sonuçlarına yol açar. Her şeyi kendi haline bırakırsanız kötü amaçlı kodlara yakalanma olasılığınız yüksek olacağı için, chmod’u hemen yapılandırmak en doğru seçenektir.
Unix(Linux) tabanlı bir işletim sistemini yönetirken, yalnızca chmod’u doğru ve yetkin bir şekilde ayarlarsanız, web sitenizin güvenliğini önemli ölçüde artırabilirsiniz.
Chmod Permissions’u (Dosya ve Klasör İzinleri’ni) Anlama
Chmod nedir, ne işe yarar genel olarak öğrendiğimize göre biraz daha detaya girerek, neyin nasıl çalıştığını anlamamız gerekiyor. Yapılacak olan ayarların ne işe yaradığını anlamak, doğru ve yetkin bir kurulum yapmanızı sağlayacaktır.
Uygulamalı olarak öğrenmeyi tercih edenler olursa FTP hesabınıza giriş yaparak her hangi bir dosyaya sağ tıklayıp “Dosya İzinleri” seçeneğini seçmeleri ve karşılarına çıkan pencereyi incelemelerini tavsiye ederim. Açılan pencerede belirli gruplar ve o gruplara ait izin seçenekleri göreceksiniz. Şimdi bakalım bu dosya izinleri yani chmod komutları nelerdir ve ne işe yararlar?
Dosya izinleri ayarlanırken üç farklı erişim hakkı grubuna atama yapılır. Bunlar, “u”, “g” ve “o” harfleri ile gösterilir şöyledir;
- U – Sahip İzinleri (User)
Dosya sahibinin erişim iznini belirtir.
- G – Grup İzinleri (Group)
Dosya sahibi olan grubun üyelerinin iznini belirtir.
- O – Genel İzinler (Others)
Diğer herkesin erişim izinlerini belirtir.
Karakterlerle Erişim Hakkını Anlama
Bu bahsettiğimiz U, G ve O izin kategorilerine “r”, ”w”, “x” şeklinde üç ayrı atama yapılır. Bunlar şu anlama gelmektedir;
- R – Okuma İzni (Read Permission)
Verinin okunma hakkını verir. Dizindeki nesnelerin adlarının bir listesini alabilirsiniz, ancak özniteliklerini alamazsınız, yani dosya boyutlarını, erişim haklarını, sahip adını vb. görüntülemek imkansızdır.
- W – Yazma İzni (Write Permission)
İçerik yazma, yeniden yazma (içeriği değiştirme) izni verir. Dizindeki nesnelerin oluşturulması, yeniden adlandırılması ve silinmesi izni sağlar.
- X – Çalıştırma İzni (Execute Permission)
Yürütme izni verir. Örneğin bir program dosyası başlatma.
İZİN TÜRÜ | DOSYA İÇİN | KLASÖR İÇİN |
r | Okuma (içeriği görüntüleme) | Dizindeki dosyaların adlarını inceleme |
w | Kaydet (üzerine yaz) | Bir dizine dosya ekleme, yeniden adlandırma ve silme |
x | Dosya yürütme | Katalog dosyalarına erişim ve özelliklerini okuma |
Sayılarla Erişim Hakkını Anlama
Chmod komutu genellikle 3 basamaklı 0 ile 7 arasında değişen izinler içerir. Bu rakamlar verilen r, w ve x izinlerini temsil eder. Bu, sayılarının her biri ayrı ayrı kullanıcı, grup ve bu sırayla diğerleri için izinleri içerdiği anlamına gelir. Sayılarla izinler 4, 2, 1 ve 0 rakamlarından ve onların toplamlarından oluşur. Bu rakamları daha iyi anlamak için inceleyelim:
R = Okuma İzni (Read Permission) – 4
W = Yazma İzni (Write Permission) – 2
X = Çalıştırma İzni (Execute Permission) – 1
– (harf girişinde bir tire işareti ile gösterilir) = Hak Yok – 0
Daha önce dediğimiz gibi tüm bu sayıların toplamı dosyalara veya bir klasöre göre Chmod’u gösterir. Aynı zamanda tahmin edebileceğiniz gibi karakterler ile sayılar aynı erişim izinlerini temsil eder. Örneğin;
- 7 (rwx) = 4 + 2 +1 (tüm haklar)
- 5 (rx) = 4 + 0 + 1 (okuma ve yürütme)
- 6 (rw-) = 4 + 2 + 0 (okuma ve yazma)
- 4 (r–) = 4 + 0 + 0 (salt okunur)
- vb.
Sayısal değerler ve karakterli değerlerin karşılıkları şu şekildedir:
İzinler | Sayısal Değer | Karakter Değeri |
Hiçbir şey yapılamaz | 0 | — |
Yalnızca yürütme | 1 | –x |
Yalnızca kayıt | 2 | -w- |
Sadece okuma | 4 | r– |
Oku ve yürüt | 5 | r-x |
Oku ve yaz | 6 | rw- |
Okuma, yazma, yürütme | 7 | rwx |
Sayısal Chmod Kombinasyonları
Buraya kadar Chmod Nedir, Dosya İzinlerini Anlama, Karakterli Değerleri ve Sayısal Değerleri Anlama konularını işledik. Eğer her şey anlaşılır hale geldiyse, kullanacağımız ve sıkça karşımıza çıkacak sayısal chmod kombinasyonlarını inceleyelim.
Aşağıda sahip, grup ve genel alanları için sayı biçiminde chmod “toplam” haklarını gösteren tablolar bulunmaktadır.
777 SAYISAL DEĞERİ
SAHİP İZİNLERİ | GRUP İZİNLERİ | GENEL İZİNLER |
okuma | okuma | Okuma |
yazma | yazma | yazma |
yürütme | yürütme | yürütme |
776 SAYISAL DEĞERİ
SAHİP İZİNLERİ | GRUP İZİNLERİ | GENEL İZİNLER |
okuma | okuma | okuma |
yazma | yazma | yazma |
yürütme | yürütme |
775 SAYISAL DEĞERİ
SAHİP İZİNLERİ | GRUP İZİNLERİ | GENEL İZİNLER |
okuma | okuma | okuma |
yazma | yazma | yürütme |
yürütme | yürütme |
774 SAYISAL DEĞERİ
SAHİP İZİNLERİ | GRUP İZİNLERİ | GENEL İZİNLER |
okuma | okuma | okuma |
yazma | yazma | okuma |
yürütme | yürütme | okuma |
766 SAYISAL DEĞERİ
SAHİP İZİNLERİ | GRUP İZİNLERİ | GENEL İZİNLER |
okuma | okuma | okuma |
yazma | yaz | yazma |
yürütme |
755 SAYISAL DEĞERİ
SAHİP İZİNLERİ | GRUP İZİNLERİ | GENEL İZİNLER |
okuma | okuma | okuma |
yazma | yaz | yürütme |
yürütme | yürütme |
750 SAYISAL DEĞERİ
SAHİP İZİNLERİ | GRUP İZİNLERİ | GENEL İZİNLER |
okuma | okuma | |
yazma | ||
yürütme | yürütme |
655 SAYISAL DEĞERİ
SAHİP İZİNLERİ | GRUP İZİNLERİ | GENEL İZİNLER |
oku | oku | oku |
yaz | yürütme | yürütme |
644 SAYISAL DEĞERİ
SAHİP İZİNLERİ | GRUP İZİNLERİ | GENEL İZİNLER |
oku | oku | oku |
yaz |
444 SAYISAL DEĞERİ
SAHİP İZİNLERİ | GRUP İZİNLERİ | GENEL İZİNLER |
oku | oku | oku |
Yukarıda listelenen sayısal izin değerleri bir web yöneticisinin çalışmalarında en sık şekilde kullandığı “ana” kombinasyonlardır.
Chmod Nasıl Yapılandırılmalıdır?
FTP yoluyla giriş yapılmadıkça sitenize erişen tüm ziyaretçiler üçüncü gruba yani “Genel İzinler” grubuna aittir. Bu, bir web sitesinin güvenliğini sağlamak için ilk önce üçüncü gruba bakılması gerektiği anlamına gelebilir.
Muhtemelen bir web sitesini sunucuya kopyaladığınızda, varsayılan olarak klasörler için 755, dosyalarınız için 644 chmod atanacaktır.
Klasörler | 755 | Sahip (kullanıcı) her şeyi yapabilir, grup ve diğer herkes yalnızca dizinleri okuyabilir ve bunlara girebilir, ancak dosya yazmaları, adları değiştirmeleri ve dizinlerde silmeleri yasaktır. (rwxr-xr-x) |
Dosyalar | “644” | Sahibi (kullanıcı) dosyaları okuyabilir ve değiştirebilir, bunları yürütmek yasaktır, herkesin bunları değiştirmesi ve yürütmesi yasaktır, gerisi sadece okuyabilir. “( rw-r–r–)” |
Yalnızca html sayfalarından oluşan bir kaynağınız varsa, her şeyi bu şekilde bırakabilirsiniz. Ancak modern siteler motorlar üzerine inşa edilmiştir ve “dünya” grubundan ziyaretçiler adına kaydetmeniz gereken nesneler olabilir – o (geri kalanı). Bunlar, sayfaları önbelleğe almak için kullanılan dizinler veya site ile çalışma sırasında resimlerin ve diğer görüntülerin yükleneceği dizinler olabilir.
Siteye FTP yoluyla erişirseniz, bu dosyalara veya dizinlere kayıt yapabileceğinizi söyleyebiliriz, ancak web arayüzü ile normal bir kullanıcı olarak çalışarak sorun yaşayabilirsiniz. Bu nedenle, belirli hakların kurulumuna seçici olarak yaklaşılmalıdır.
Bu durumda, haklar çok yüksekse sorunlar ortaya çıkabilir ve tam tersine, belirli bir dosyaya (klasöre) erişim hakları hafife alınırsa, güvenlik riski artar. Bu nedenlere dayanarak, CMS çalıştıran modern bir site için chmod ‘un pratik kullanımı için bazı öneriler belirleyebilirsiniz:
755 | dosyaların yazılması gereken, ancak düzenli olarak silmediği tüm dizinler için |
777 | dosyaların yazılması ve silinmesi gereken klasörler için (örneğin, önbellek için) |
644 | basit salt okunur dosyalar için (.html, .php vb.) |
666 | yazılması gerekebilecek dosyalar için (örneğin, .dat veritabanlarıyla) |