Linux Dosya İzinleri

Hacer Dalkiran
3 min readJan 3, 2023

--

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

--

--

Hacer Dalkiran
Hacer Dalkiran

Written by Hacer Dalkiran

Mathematician and Cybersecurity girl

No responses yet