Belge

Linux’ta İzinlerine Göre Dosyalar Nasıl Bulunur?

Linux’ta komut satırından dosya bulmak çok daha kolay ve hızlıdır. Erişim ve değişiklik tarihi ve saatine göre dosyaları nasıl bulacağımızı ve sıralayacağımızı zaten tartıştık. Bugün Linux ve Unix benzeri işletim sistemlerinde dosyaları izinlerine göre nasıl bulacağımızı göreceğiz.

Bu kılavuzun amacı doğrultusunda, ostechnix adlı bir klasörde sırasıyla 777, 766, 655 izinlerine sahip dosya1, dosya2 ve dosya3 olmak üzere üç dosya oluşturacağız.

$ mkdir ostechnix && cd ostechnix/

$ install -b -m 777 /dev/null file1

$ install -b -m 766 /dev/null file2

$ install -b -m 655 /dev/null file3

Create files with specific permissions
Belirli izinlere sahip dosyalar oluşturun

Now let us find the files based on their permissions.

İzinlerine göre dosyaları bulun

The typical syntax to find files based on their permissions is:

$ find -perm mode

MOD, sayısal veya sekizlik izin (777, 666, … vb. gibi) veya sembolik izin (u=x, a=r+x gibi) ile olabilir.

MODE’u aşağıda listelendiği gibi üç farklı şekilde belirtebiliriz.

  1. Modu herhangi bir önek olmadan belirtirsek, tam izinlere sahip dosyaları bulacaktır.
  2. Mod ile “-” önekini kullanırsak, en azından dosyaların tam izne değil, verilen izne sahip olması gerekir.
  3. “/” önekini kullanırsak, dosya sahibinin, grubun veya başka birinin dosyaya izin vermesi gerekir.

Biraz örneklerle açıklayalım ki daha iyi anlayasınız.

Öncelikle sayısal izinlere göre dosyaları bulmayı göreceğiz.

Sayısal (sekizlik) izinlere göre dosyaları bulun

Şimdi aşağıdaki komutu çalıştırayım:

$ find -perm 777

Bu komut, geçerli dizindeki tam olarak 777 iznine sahip dosyaları bulacaktır.

Find files based on numeric permissions
Sayısal izinlere göre dosyaları bulun

Yukarıdaki çıktıda gördüğünüz gibi, dosya1 tam 777 iznine sahip olan tek dosyadır.

Şimdi “-” önekini kullanalım ve ne olacağını görelim.

$ find -perm -766

Find files based on numeric permissions with "-" prefix
“-” önekine sahip sayısal izinlere göre dosyaları bulun

Gördüğünüz gibi yukarıdaki komut iki dosya görüntüler. Dosya2’ye 766 iznini ayarladık ama bu komut iki dosya gösteriyor, neden? Çünkü burada “-” önekini kullandık. Bu, bu komutun, dosya sahibinin okuma/yazma/yürütme izinlerine sahip olduğu, dosya grubu üyelerinin okuma/yazma izinlerine sahip olduğu ve diğer her şeyin de okuma/yazma iznine sahip olduğu tüm dosyaları bulacağı anlamına gelir. Bizim durumumuzda dosya1 ve dosya2 bu kriteri karşıladı. Başka bir deyişle, dosyaların tam olarak 766 iznine sahip olması gerekmez. Bu 766 izninin kapsamına giren tüm dosyaları gösterecektir.

Daha sonra “/” önekini kullanacağız ve ne olacağını göreceğiz.

$ find -perm /222

Find files based on numeric permissions with "/" prefix
“/” önekine sahip sayısal izinlere göre dosyaları bulun

Yukarıdaki komut, birisi (sahibi, grubu veya başka biri) tarafından yazılabilen dosyaları bulacaktır. İşte başka bir örnek.

$ find -perm /220

Bu komut, sahibi veya grubu tarafından yazılabilen dosyaları bulacaktır. Bu, dosyaların eşleştirilebilmesi için hem sahibi hem de grup tarafından yazılabilir olması gerekmediği anlamına gelir; ikisi de işe yarayacaktır.

Ancak aynı komutu “-” önekiyle çalıştırırsanız, yalnızca hem sahibi hem de grup tarafından yazılabilen dosyaları görürsünüz.

$ find -perm -220

Aşağıdaki ekran görüntüsü size bu iki önek arasındaki farkı gösterecektir.

Find files based on their numeric (octal) permissions
Sayısal (sekizlik) izinlere göre dosyaları bulun

Daha önce de söylediğim gibi, dosya izinlerini temsil etmek için sembolik gösterimi de kullanabiliriz.

Sembolik gösterimi kullanarak dosyaları izinlerine göre bulun

Aşağıdaki örneklerde u ( kullanıcı için), g (grup), o (diğerleri) gibi sembolik gösterimler kullanıyoruz. Bu kategorilerin üçünü de temsil etmek için a harfini kullanabiliriz. İzinler r (okuma), w (yazma), x (yürütülebilir) harfleri kullanılarak belirtilebilir.

Örneğin, grup yazma iznine sahip herhangi bir dosyayı bulmak için şunu çalıştırın:

$ find -perm -g=w

Find files based on their permissions using symbolic notation
Sembolik gösterimi kullanarak dosyaları izinlerine göre bulun

Yukarıdaki örnekte gördüğünüz gibi dosya1 ve dosya2’nin grup yazma izni vardır. Sembolik gösterim için “=” veya “+” operatörlerini kullanabileceğinizi lütfen unutmayın. Örneğin aşağıdaki iki komut aynı şeyi yapacaktır.

$ find -perm -g=w $ find -perm -g+w

Dosya sahibi tarafından yazılabilen herhangi bir dosyayı bulmak için şunu çalıştırın:

$ find -perm -u=w

Herkesin (dosya sahibi, grup ve diğer herkes) yazabileceği herhangi bir dosyayı bulmak için şunu çalıştırın:

$ find -perm -a=w

Hem sahipleri hem de grupları tarafından yazılabilen dosyaları bulmak için bu komutu kullanın:

$ find -perm -g+w,u+w

Yukarıdaki komut “find -perm -220” komutunun eşdeğeridir.

Sahipleri veya grupları tarafından yazılabilen dosyaları bulmak için şunu çalıştırın:

$ find -perm /u+w,g+w

Veya,

$ find -perm /u=w,g=w

Bu iki komut da “find -perm /220” komutuyla aynı işi yapar.

Daha fazla ayrıntı için man sayfalarına bakın.

$ man find

Yazının orijinalini buradan okuyabilirsiniz.