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
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.
- Modu herhangi bir önek olmadan belirtirsek, tam izinlere sahip dosyaları bulacaktır.
- Mod ile “-” önekini kullanırsak, en azından dosyaların tam izne değil, verilen izne sahip olması gerekir.
- “/” ö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.
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
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
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.
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
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.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.