İzinler (Permissions)

Tarih: 2026-06-15 | Kategori: Linux

Etiketler: Linux

Tıpkı diğer işletim sistemlerinde olduğu gibi, Linux'ta da birden fazla kullanıcı hesabı oluşturulabilir ve bu kullanıcılar aynı sistemi paylaşabilirler. Ancak, farklı kullanıcılar aynı sistemi paylaştığında, gizlilik sorunları kolayca ortaya çıkabilir. Örneğin, bir kullanıcı diğerlerinin kendi dosyalarını görüntülemesini, düzenlemesini veya silmesini istemeyebilir.

Bu sorunu, dosya ve dizin düzeyinde tanımlanabilen izinlerle çözebiliriz.

Bir dosya veya dizinin izinlerini görüntülemek için, önceki bölümlerde tartışıldığı gibi `ls` komutunun `-l` parametresini kullanabiliriz.

root@hackerbox:~$ ls -l notes.txt

-rwxr--r-- 2 john development 4096 Jul 29 12:34 notes.txt

`ls` komutunun `-l` parametresi ile elde edilen çıktıdaki sütunlar şöyledir:

  • `-` veya `d`: Dosya türü. Dizin ise `d`, normal dosya ise `-` olarak gösterilir. Bu örnekte normal dosya olduğu için `-` ile başlar. *(Eğer bir dizin olsaydı drwxr--r-- olarak başlardı).*
  • `rwxr--r--`: Dosya izinleri.
  • `2`: Dosyaya/dizine olan sabit bağlantıların (hard links) sayısı.
  • `john`: Dosyanın/dizinin sahibi.
  • `development`: Dosyanın/dizinin grup sahibi.
  • `4096`: Dosya boyutu veya dizin bilgilerini saklamak için kullanılan blok sayısı.
  • `Jul 29 12:34`: Dosyanın/dizinin oluşturulma veya son değiştirilme tarihi.
  • `notes.txt`: Dosyanın/dizinin adı.
  • İzinleri Anlamak (Understanding Permissions)

    [Image of Linux file permissions structure rwxrwxrwx explained]

    Yukarıdaki örnekte verilen dosya izinleri (`rwxr--r--`), toplamda 9 karakterden oluşan üç farklı izin kümesi olarak düşünülebilir. Üç karakterlik her küme; user (kullanıcı), group (grup) ve others (diğerleri) izin kümelerini temsil eder.

    --- --- ---
    rwx rwx rwx
    user group others
    

    `r`, `w`, `x` ve `-` Karakterleri

  • `r` (read): Okuma iznini, yani dosyanın içeriğini okuma iznini temsil eder.
  • `w` (write): Yazma iznini, yani dosyanın içeriğini yazma veya değiştirme iznini temsil eder.
  • `x` (execute): Çalıştırma iznini, yani dosyayı çalıştırma iznini temsil eder. `x` izni yalnızca çalıştırılabilir programlara (script veya binary) verilir.
  • Eğer `rwx` karakterlerinden herhangi biri `-` ile değiştirilirse, bu iznin verilmediği anlamına gelir.
  • Kullanıcı, Grup ve Diğerleri

  • user (u): Kullanıcı izinleri yalnızca dosya veya dizinin sahibiyle ilgilidir.
  • group (g): Grup izinleri yalnızca dosya veya dizine atanan gruba ait kullanıcılarla ilgilidir.
  • others (o): Diğer izinler, sistemdeki diğer tüm kullanıcılar ve gruplarla ilgilidir.
  • İzinleri Okuma (Reading Permissions)

    Öncelikle verilen izinleri (`rwxr--r--`) üç ayrı gruba ayıralım.

    rwx r-- r--
    user group others
    

    Sahip kullanıcı (user) için tüm izinlerin (okuma, yazma ve çalıştırma) verildiği görülmektedir (`rwx`). Başka bir deyişle, dosyanın sahibi (john adlı kullanıcı) bu dosyayı okuyabilir, değiştirebilir ve çalıştırabilir. Ancak, bu dosya adından da anlaşılacağı üzere bir metin dosyası olduğu için, çalıştırma izni olsa bile (bir script olmadığı sürece) çalışmayacaktır.

    Grup (group) izinleri için, dosyaya atanan gruba yalnızca okuma izni verilmiştir (`r--`). `-` karakteri ile belirtildiği gibi yazma ve çalıştırma izinleri verilmemiştir. Dosyanın atandığı `development` grubunun üyeleri, bu dosya için yalnızca okuma iznine sahiptir.

    Diğer (others) kullanıcıların ve grupların izinlerine gelince, yine sadece okuma izninin verildiği görülmektedir (`r--`). Yine, `-` karakteri ile gösterildiği gibi yazma ve çalıştırma izinleri verilmemiştir. Bu, sistemdeki diğer tüm kullanıcıların ve grupların bu dosya için yalnızca okuma iznine sahip olduğu anlamına gelir.

    Dosya ve Dizin İzinlerini Değiştirme (Changing File and Directory Permissions)

    Dosya ve dizin izinlerini değiştirmek için `chmod` komutunu kullanın. `chmod` komutuna verilen ilk argüman, hangi izin kümesini değiştirmek istediğinizi belirtir. İzin kümesini `u`, `g` veya `o` seçenekleriyle belirtebilirsiniz.

  • `u` (user): Sahip kullanıcı izinleri
  • `g` (group): Grup izinleri
  • `o` (others): Diğer izinler
  • Tüm kümeler için izinleri aynı anda değiştirmek isterseniz `ugo` (veya `a` - all) kullanabilirsiniz.
  • İlk argümanı belirttikten sonra, bir izin eklemek mi yoksa kaldırmak mı istediğinizi belirtmeniz gerekir. `+` veya `-` seçeneklerini kullanabilirsiniz.

  • `+` : İzin ekler
  • `-` : İzni kaldırır
  • Son olarak, hangi izni değiştirmek istediğinizi (`r`, `w` veya `x`) belirtmeniz gerekir.

  • `r` (read): Okuma izni
  • `w` (write): Yazma izni
  • `x` (execute): Çalıştırma izni
  • Ayrıca `rwx` kombinasyonunu da (aynı anda birden fazla izin vermek için) kullanabilirsiniz.
  • Daha İyi Anlamak İçin Bir Örnek

    Örneğin, `notes.txt` dosyası için diğerlerine (others) yazma izni vermek istiyorsak, komuta izin kümesini belirterek başlarız (diğerleri için `o`):

    root@hackerbox:~$ chmod o
    

    Ardından, izni eklemek mi yoksa kaldırmak mı istediğimizi belirtiriz. İzni eklemek istediğimiz için `+` karakterini kullanırız.

    root@hackerbox:~$ chmod o+
    

    Sonraki adımda, izni belirtiriz (yazma için `w`).

    root@hackerbox:~$ chmod o+w
    

    Son olarak, değiştirmek istediğimiz dosyayı, `notes.txt`'yi belirtir ve komutu çalıştırırız. Ardından değişiklikleri `ls -l` ile doğrularız.

    root@hackerbox:~$ chmod o+w notes.txt
    root@hackerbox:~$ ls -l notes.txt
    

    -rwxr--rw- 2 john development 4096 Jul 29 12:34 notes.txt
    

    Görebildiğimiz gibi, diğerleri (others) için izin seti `rw-` olarak değiştirilmiştir. Artık sistemdeki diğer kullanıcılar da dosyayı okuyabilir ve dosyaya yazabilirler.

    Başka Bir Örnek (Toplu Atama)

    Tek bir komutta birden fazla izni ve grubu da güncelleyebilirsiniz. Örneğin, `notes.txt` dosyası için tüm kümelere (user, group, others) tüm izinleri (`rwx`) vermek üzere aşağıdaki komutu çalıştırın:

    root@hackerbox:~$ chmod ugo+rwx notes.txt
    root@hackerbox:~$ ls -l notes.txt
    

    -rwxrwxrwx 2 john development 4096 Jul 29 12:34 notes.txt