Dosya ve Dizin İzinleri

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.

ParametreAnlamıAçıklama
-RRecursiveObjenin tüm alt klasörlerine de aynı işlemin uygulanması amaçlı kullanılır
-fForceOrtaya çıkan hataların gözardı yapılarak işlemin uygulanmasını zorlamak amaçlı kullanılır
-vVerboseİş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.

TextClassAçıklama
uOwnerDosyaya sahip olan kullanıcı
gGroupDosyanın ait olduğu grup
oOtherDiğer herkes
aAllHerkes (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.

OperatorAçı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.

İzinNumara Karşılığı
r4
w2
x1

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.