Linux Dosya İzinleri
Biliyoruz ki dosya izinleri sistem yönetiminde olduğu gibi güvenlik tarafında da inanılmaz önemli. Windows taradındaki izinler de oldukça önemli olmakla beraber, linux dünyasının kendine has olan dosya izinlerini ve bunların yönetimini bilmek güvenlik ve sistem yönetimindeki bakış açımızı geliştirecektir.
Hadi gelin bu izinler nasıl çalışıyor ve bunları nasıl yönetebiliriz, kısaca bir bakalım.
İzin grupları
- owner : Sadece directory ve dosyanın owner (sahip) lerinin etkileyecek olan izinlerdir. İsminden de anlaşılacağı üzere, dosyayı yaratan kullanıcıdır. Diğer kullanıcıları kapsamaz.
- group : Sadece directory ya da dosyanın atandığı grupları kapsar. Tabi ki diğer kullanıcıları kapsamaz.
- all users (others) : Diğer tüm kullanıcıları ifade eder. Kısaca ne bu dosyanın yaratıcısıdır ne de bir gruba aittirler. Yani diğer herkes demektir.
İzin Tipleri ( Permissions types)
- read (r) : Kullanıcıların sadece dosyayı okuyabilmelerine verilen isimdir. Tabi ki dosyada veya directoryde bir değişiklik yapamazlar.
- write (w) : Kullanıcılar dosya veya directoryde değişiklik yapabilirler.
- executable (x) : Kullanıcılar dosyayı çalıştırabilir ya da yürütebilirler veya directory için cd komutunu çalıştırabilir. Windows’da böyle bir izin olmadığını da parantez içinde söyleyelim. Windows’da .exe uzantısı olan dosyalar executable dosyalardır. Ancak linux için executable izni tanımlanmamışsa o kullanıcı bir programı execute edemez.
Çok temel olan bu bilgilerin üstünden geçtikten sonra birazcık daha detaya inebiliriz.
- ls -l : bu komutla directorydeki dosyaların ya da yolların izin tipleri ve gruplarını görebiliriz.
Bu komutu çalıştırdık diyelim ve bir dosyanın izinleri ile ilgili aşağıdaki gibi bir çıktı aldık diyelim:
-rwxrwxrwx 1 owner:group
- ilk baştaki ‘-’ dosya mı yoksa directory mi bunu belirtir. d ise directorydir.
- İlk 3 karakter owner permissions,
- ikinci 3 karakter group permissions
- üçüncü 3 karakter ( Üçüncüsü küçük 3 :) ( Dizi repliği, bilmiyorsanız takılmadan devam edin, bilyorsanız gülümseyip devam edin)) All permissionsu ifade eder.
- Sonra gelen sayı (1) dosyanın bağlı olduğu dosya ve dosya yerlerini işaret eder.
- owner : dosyanın sahibi
- group: izin grubu
Aşağıdaki örneğe bakalım bir de:
-rwxr-xr-x 1 root root
- - : Dosyamız bir file (d olsaydı bir directory olduğunu çıkarabilirdik)
- rwx : Kullanıcıın read-write-execute izni var
- r-x: Gruptakilerin read-execute izni var.
- r-x : Diğer tüm kullanıcıları read-execute yetkisi var. (directory için cd yetkisi var)
Şimdi de bu izinleri nasıl değiştirebiliriz, buna bakalım.
Yetki ve İzin Değiştirme
chmod <yetki> <dosya.adi>
ya da
chmod <grupAdi>+<izinAdi> <dosyaAdi>
ile izinleri değiştirebiliriz.
mesela;
— rw-rw-r — 1 user user
iznini aşağıdaki kodu kullanarak değiştirelim.
chmod u+x dosya
son hali şöyle olacak:
-rwx-rw-r — 1 user user
Gruptan Yetki Kaldırma
Burada bazı kısaltmalar yapacağız. Bunları aşağıda sıraladım:
u = user/owner
g = group
o = other
a = all
Bir örneğe daha bakalım:
-rwxrwxr — 1 user user
aşağıdaki kodu çalıştıralım:
chmod g-x dosya
Bu durumda grubun -x yani executable yetkisi alınacağı için yeni izin tanımımız aşağıdaki gibi olacak:
-rwxrw-r — 1 user user
chmod u-w dosya
Burada kullanıcının write yetkisini almış oluyoruz.
-r-xrw-r — 1 user user
gibi yetki tanımına kavuşmuş oluyor.
Diğer Kullanıcılara Yetki Ekleme ve Kaldırma
chmod a+w
kullanacağız.
Bununla beraber a’yı kullanmadan +w yazarsak diğer kullanıcılar dışındaki kullanıcılara bu izni tanımlamış oluruz.
Ayrıca açık açık da yazılabilir aşağıdaki gibi:
chmod u=rwx,g=rw,o=r dosya.adi
Genel Kullanım
En genel ve bilinen şekli ise harfler yerine rakamların da kullanılabilmesi. Bu harflerin rakamlara kodlanması aşağıdaki gibi;
mesela 777 = rwxrwxrwx, 765=rwxrw-r-x, 654=rw-r-xr —
Dosya ve Directory Sahiplerini ve Gruplarını Değiştirme
- Bir dosyanın ya da directorysini değiştirmek için;
chown kullanıcıAdi dosyaAdi
- kullanıcıAdi:grup ikilisini de benzer şekilde değiştirebiliriz.
chown kullanıcıAdi:group dosyaAdi
- grubu değiştirmek için chgrp komutunu kullanırız.
chgrp grupAdi dosyaAdi
Aşağıda gruplarla ilgili birkaç bilgiyi sıraladım:
- /etc/group dosyasında sistemdeki tüm grupları görebiliriz.
- ‘groups’ komutuyla hangi grupta olduğumuzu öğrenebiliriz.
- Bir dosya birden fazla gruba ait olamaz.
- Linux’da içiçe(nested) gruplar yoktur. Bir grup diğerinin alt grubu olamaz.
Faydalandığım kaynaklar için bkz