Dosya Dizin İzin

Gelin, Linux sistemlerinin önemli bir parçası olan dosya ve dizinlerin sahiplik ve izin yapılarına bir bakalım.

Linux sistemlerde bir dosyanın ve dizinin ait olduğu bir kullanıcı ve bir grup vardır. Dosya veya dizine verilmiş olan haklara göre bir kullanıcı bazı işlemleri yapabilir ya da yapamayabilir. Linux sistemler üzerinde çalışırken de genelde bu izin problemleri ile karşılaşırız. Bu tarz durumlarda konuyu anlamak yerine eğer hakkımız varsa sudo kullanarak problemleri çözmeyi tercih edebiliyoruz ama bu çok iyi bir yol değil, o yüzden bu konuyu olabildiğince anlamaya çalışalım.

Şimdi gelin bir dizinde bir dosya yaratalım ve yaratılmış dosyaya ls komutu ile bir bakalım.

ay@2204:~$ touch dosya.txt

ay@2204:~$ ls -l dosya.txt
-rw-rw-r-- 1 ay ay 0 Jun 21 21:14 dosya.txt

ls -l komutu ile bir dosyanın detaylı bilgilerini görebiliyoruz. En başta 10 karakterlik bir alan var bu durumda: -, rw-, rw-, r-- şeklinde ayırabiliriz. En baştaki karakter dosyanın türünü belirtiyor. -, bildiğimiz dosya yani regular file demek. Ondan sonra gelen 3 karakter dosyanın sahibi olan kullanıcının, benim durumumda ay, dosya üzerindeki haklarını belirtiyor. rw-, bu kullanıcı bu dosyayı okuyabilir ve yazabilir demek. Bu alanlar rwx bayrakları olarak da geçiyor. - olması kullanıcının o dosya üzerinde x hakkının olmadığını gösteriyor. x, execute kelimesinden geliyor. Daha çok çalıştırılabilir dosyalarda yani programlarda ve dizinlerde anlamlı oluyor. İkinci üçlü grup ise dosyanın grup izinlerini gösteriyor. Bu dosyanın grubunun adı da ay, kullanıcı adı ile aynı olması kafanızı karıştırmasın. Bu durumda ay grubunun hakları rw- olarak verilmiş. Yani ay grubuna dahil olmuş olan bir kullanıcı dosyayı okuyabilir, yazabilir ama çalıştıramaz. Son üçlü grup ise diğer kişilerin yani others ın haklarını gösteriyor. Eğer kullanıcı ay değilse ve ay grubunda değilse bu sefer bu dosya için others olmuş oluyor. r-- ise others kullanıcılarının dosyada sadece okuma yapabildiğini gösteriyor.

Dosya Türleri

İlk karakterin dosya türünü gösterdiğini söylemiştik. - ise bildiğimiz sıradan dosyaları gösteriyordu. Peki başka neler var? Detaylara sonra değiniriz, şimdi kabaca bakalım.


d dizinleri göstermektedir. Dizinler de dosya sistemi üzerinde adeta birer sıradan dosya gibi bulunurlar.

ay@2204:~$ ls -ld /home

drwxr-xr-x 3 root root 4096 May 26 17:59 /home

Mesela /home bir dizindir ve ls ile listelediğimiz zaman d ile gösterilir.


p pipe yani boru dosyaları için kullanılır. Pipe, Linux üzerinde kullanılabilecek bir prosesler arası haberleşme, IPC, mekanizmalarından biridir. Kabuk üzerinde mkfifo komutu ile yaratabiliriz:

ay@2204:~/temp$ mkfifo pipe

ay@2204:~/temp$ ls -l pipe
prw-rw-r-- 1 ay ay 0 Jun 21 21:26 pipe

Bu sefer de dosya türü olarak p karakterini görüyoruz.


s ise socket gösterimi için kullanılır.

ay@2204:~$ ls -l /var/run/snapd.socket

srw-rw-rw- 1 root root 0 Jun 21 21:12 /var/run/snapd.socket

Sistemde var olan bir socket’i listelediğim zaman s karakterini görüyoruz. Socket’ler de pipe’lar gibi bir IPC mekanizmasıdır fakat detaylar daha sonra.


l ise sembolik bağlantılar, symbolic links, soft links için kullanılmaktadır. ln -s ile var olan bir dosyaya symlink oluşturup bakalım.

ay@2204:~/temp$ ln -s dosya.txt soft-link
ay@2204:~/temp$ ln dosya.txt hard-link

ay@2204:~/temp$ ls -l dosya.txt hard-link soft-link

-rw-rw-r-- 2 ay ay 0 Jun 21 21:39 dosya.txt
-rw-rw-r-- 2 ay ay 0 Jun 21 21:39 hard-link
lrwxrwxrwx 1 ay ay 9 Jun 21 21:39 soft-link -> dosya.txt

Gördüğünüz üzere soft-link isimli symlink dosyası l karakteri ile gösteriliyor. Örneği genişletmek için bir de hard link oluşturdum. Hard link dosyaları normal dosya gibi gözükmektedir. Detaylar sonra.

ay@2204:~/temp$ ls -il dosya.txt hard-link soft-link

7474044 -rw-rw-r-- 2 ay ay 0 Jun 21 21:39 dosya.txt
7474044 -rw-rw-r-- 2 ay ay 0 Jun 21 21:39 hard-link
7474045 lrwxrwxrwx 1 ay ay 9 Jun 21 21:39 soft-link -> dosya.txt

Hard link dosyaların inode numarası aynıdır ama şimdi sırası değil.


b ise block device için kullanılır. Bu konu device driver yani aygıt sürücüsü konusu ile daha çok ilgilidir. Şu an sadece tanıyoruz.

ay@2204:~/temp$ ls -l /dev/sda

brw-rw---- 1 root disk 8, 0 Jun 21 21:11 /dev/sda

gibi…


c ise character device anlamına gelir. Şimdilik ismen bilelim yeter.

ay@2204:~/temp$ ls -l /dev/tty

crw-rw-rw- 1 root tty 5, 0 Jun 21 21:13 /dev/tty

gibi…


Yani gördüğünüz üzere ls komutu ile listeme yaptığımız zaman görebileceğimiz 7 tür dosya türü bulunmaktadır. [1]

Dosya İzinleri

Belirttiğim gibi bir dosya ve dizin 3 farklı açıdan 3 farklı izne sahiptir. Bir dosyanın izni bir kullanıcı, user, bir grup, group ve kalan kişiler, others için ayrı ayrı belirtilir. Bir dosya okunabilir, r, yazılabilir, w, ya da çalıştırılabilir, x. ls çıktısında ilgili izin yoksa iznin olmayışı - karakteri ile gösterilir. Örneğin bir dosyanın izni rwxr-x--x ise bu dosya sahibi kullanıcı tarafından okunabilir, yazılabilir ve çalıştırılabilir fakat dosyanın sahibi olan grup yazma yapamaz, diğerlerini yapabilir, kalan kullanıcılar ise sadece dosyayı çalıştırabilir.

Dizin İzinleri

Dizinler de aslında dosyalara benziyorlar fakat rwx bayrakları tam hayal ettiğimiz gibi çalışmıyor olabiliyor dizinler üzerinde. Dizin izinlerini daha iyi anlamak için dosya sistemlerini biraz daha anlamamız iyi olabilir, örneğin inode gibi kavramları. Dizin izinlerine, bu kavramlara biraz baktıktan sonra devam edelim.