Dosya ve Dizin İzinleri

Yazan: boratanrikulu

Kaynaklar
wiki.archlinux.org/File_permissions_and_attributes
en.wikipedia.org/wiki/Chmod


Dosya ve Dizininlerin Linux’daki Durumu

Linux’ta her şey birer dosyadır. [1]

Özünde dizinler de dosyaların konumunu belirten birer özel dosyadır. Dizinler veri içeremez, yalnızca konum belirtmek amaçlı kullanılabilirler. Dizinlerin bir türü yoktur, uzantısı yoktur. Dosyaların ise bir türü vardır, uzantısı bulunabilir.

Dizin ve dosya isimleri aynı olamaz.


Dosya ve Dizin İzinlerinin İncelenmesi

ls ile dosyaların izinleri incelenebilir.

	$ ls -l fileName

Dosya ve dizin işlemlerine bakıldığında 10 karakterden oluşan bir yapı görünür.

Bu karakterler

  • dosyalar için r[read] okumak, w[write] yazmak, x[execute] çalıştırmak
  • dizinler için r[read] içeriğini görüntüleyebilmek, w[write] alt dosya ve dizinler oluşturabilmek, x[execute] cd ile içine girebilmek

izinlerini temsilen kullanılır.

Bunları aşağıdaki gibi üçerli olarak gruplandırarak incelemekte fayda vardır.

Yani bu örnektekinin;

  • bir dizin olduğunu,
  • dosya kullanıcısının okuma/yazma/çalıştırma,
  • dosya grubunun okuma/çalıştırma,
  • diğer herkesin de okuma/çalıştırma

iznine sahip olduğunu görüyoruz.


Chmod ile İzinlerin Düzenlemesi [Text Method]

Chmod’un 3 temel parametresi vardır, bunlar aşağıdaki gibidir.

Parametre Anlamı Açıklama
-R Recursive Objenin tüm alt klasörlerine de aynı işlemin uygulanması amaçlı kullanılır
-f Force Ortaya çıkan hataların gözardı yapılarak işlemin uygulanmasını zorlamak amaçlı kullanılır
-v Verbose İşlemin detayını göstermesi amaçlı kullanılır

Text method’da genel syntax aşağıdaki gibidir.

	$ chmod who=permission fileName

Kim olduğunu belirtmek için u, g, o, a kullanılır.

Text Class Açıklama
u Owner Dosyaya sahip olan kullanıcı
g Group Dosyanın ait olduğu grup
o Other Diğer herkes
a All Herkes (ugo ile aynı anlama gelir)

Örneğin bir dosya için dosya kullanıcısına okuma/yazma/çalıştırma izinleri vermek istiyorsak aşağıdaki gibi yapabiliriz.

	$ chmod u=rwx fileName

Yalnızca ” = “ operatörü yoktur. Diğer operatör ve amaçları da aşağıdaki gibidir.

Operator Açıklama
+ Yetkiyi ilgili kullanıcılara ekler
- Yetkiyi ilgili kullanıcılardan çıkarır
= Yetkiyi eşitler

Örneğin az önceki örnekte ” u=rwx “ demiştik. Bunun yerine direkt olarak çalıştırma iznini ” + “ ile ekleyebilirdik.

	$ chmod u+x fileName

Ya da örneğin diğer herkesin yetkisini 0 yapmak istersek aşağıdaki gibi yapabiliriz. Bu şekilde diğer herkesin sahip olduğu yetkileri silmiş oluruz.

	$ chmod o= fileName

Ya da örneğin kullanıcı hariç diğer herkesten çalıştırma izinlerini çıkarmak istiyorsak aşağıdaki gibi yapabiliriz.

	$ chmod go-x fileName

Chmod ile İzinlerin Düzenlemesi [Numberic Method]

Her yetkinin numarasal olarak bir karşılığı vardır. Bunlar aşağıdaki gibidir.

İzin Numara Karşılığı
r 4
w 2
x 1

Numarasal method’da genel syntax aşağıdaki gibidir. Burada X her grup için yetki numaralarının toplamına eşittir.

	$ chmod XXX fileName

Örneğin elimizde ” -rw-r–r– “ olduğu varsayalım. Bu ifade 644 ile ifade edilebilir. Eğer yetkiyi text değil de direkt olarak numarasal formda görmek istersek stat‘ı kullanabiliriz.

	$ stat -c %a fileName

644 yetkisi numarasal method ile olarak bu şekilde :

	chmod 644 fileName

Text method’u ile de bu şekilde :

	chmod u=rw fileName && chmod go=r fileName

ifade edilmektedir, ikisi de aynı işlemi yapmaktadır.


Chown ile Sahipliğin Değiştirilmesi

Her dosyanın (ya da dizinin) ait olduğu bir kullanıcı ve bir grup olmalıdır. Eğer dosya ya da dizinlerin sahipliğini değiştirmek istiyorsak chown‘u kullanabiliriz.

Genel syntax örnekleri aşağıdaki gibidir.

	$ chown newOwner fileName
	$ chown newOwner:newGroup fileName
	$ chown :newGroup fileName

Eğer tüm alt klasör ve dizinler için de sahipliği değiştirmek istiyorsak, chmod’da da olduğu gibi, recursive parametresi olan -R kullanılır.