صاحب الموضوع
#1
find ile izin bazlı dosya arama
İlk olarak temel mantık: Linux dosya sistemi üzerinde izinler üç temel kademede incelenir: kullanıcı (owner), grup ve diğerleri için okuma (r), yazma (w) ve çalıştırma (x) izinleri. find komutu, -perm, -not, -type, -user, -group gibi kriterlerle bu izin desenlerini hedefe uygun olarak filtrelemeye olanak tanır. Örneğin:
Örnekler:
İpuçları ve güvenlik: -type f ile sadece regular file’lar, -type d ile dizinleri ayırt etmek, -mtime veya -newer gibi zaman tabanlı kriterlerle birlikte kullanmak sıklıkla işinize yarar. Ayrıca -not veya -a (AND) operatörleri ile daha ince mantıksal filtrelemeler kurabilirsiniz.
Kullanıcı hatalarını azaltmak için örnek bir senaryo: güvenlik taraması yaparken kök kök dizinlerde gereksiz yazma izni olan dosyaları bulmak istiyorsunuz. Aşağıdaki komut, kullanıcı ve grup için yazma iznine sahip olan tüm regular dosyaları kök dizin altında listeler:
Sonuçları daha okunabilir hale getirmek için çıktıyu etiketlemek de mümkün: kullanıcıya özel izinlerle olanların ayrı, diğerlerine göre olanların ayrı listelenmesi. Bunun için -printf ile özel formatlar kullanabilir veya pipe ile awk/ngrep ile gruplandırabilirsiniz.
Bu konudaki deneyimleriniz nelerdir? Belirli bir senaryoda izin tabanlı arama yaparken hangi filtreleri kullanıyorsunuz, ve çıktı üzerinde hangi ek işlemleri (örneğin raporlama veya otomasyon) kuruyorsunuz?
Bir sistemi yönetirken hangi dosyaların hangi izinlerle bulunduğunu bilmek kritik olabilir. Özellikle güvenlik taramalarında, konumuna bakılmaksızın sadece belirli izinlere sahip dosyaları hızlıca listelemek iş akışını kolaylaştırır. Bu yazıda, find komutunu kullanarak izin tabanlı filtreleme işlemlerini adım adım ele alacağım.
İlk olarak temel mantık: Linux dosya sistemi üzerinde izinler üç temel kademede incelenir: kullanıcı (owner), grup ve diğerleri için okuma (r), yazma (w) ve çalıştırma (x) izinleri. find komutu, -perm, -not, -type, -user, -group gibi kriterlerle bu izin desenlerini hedefe uygun olarak filtrelemeye olanak tanır. Örneğin:
- Belirli bir izne sahip olan tüm dosyalar: -perm -rw-r--r-- gibi baskın bir kırpma operasyonu ile tam eşleşme yapabilirsiniz. Ancak çoğu durumda “ilgili dosya bu izinlere sahip mi?” sorusunu sormak için -perm /8 gibi bağlamsal karşılaştırmalar daha kullanışlıdır.
- Sadece kullanıcı için okunabilir olan dosyalar: -perm -u=r-- gibi kullanıcı haklarını hedef alır.
- Diğer kullanıcılar için yazma izni olan dosyalar: -perm -go+w veya -perm -022. Buradaki sayılar oktal değil sembolik izinlerle de ifade edilebilir.
Örnekler:
- Sadece sahibi tarafından okunabilir veya yazılabilir dosyalar (sahibi r veya w olup diğerleri herhangi bir şey olabilir): find /path -type f -perm /600
- Tüm dosyalar (kullanıcı, grup veya diğerleri) yazma iznine sahip olanlar: find /path -type f -perm /022
- Çalıştırma izni olan tüm dosya ve dizinler (kullanıcı, grup veya diğerleri): find /path -perm /111
- Sahibi root olan ve 700 iznine sahip dosyalar: find / -user root -perm 700
- Belirli bir dizin dışındaki yazma izni olan dosyaları bulmak: find / -path "/proc" -prune -type f -perm /022
İpuçları ve güvenlik: -type f ile sadece regular file’lar, -type d ile dizinleri ayırt etmek, -mtime veya -newer gibi zaman tabanlı kriterlerle birlikte kullanmak sıklıkla işinize yarar. Ayrıca -not veya -a (AND) operatörleri ile daha ince mantıksal filtrelemeler kurabilirsiniz.
Kullanıcı hatalarını azaltmak için örnek bir senaryo: güvenlik taraması yaparken kök kök dizinlerde gereksiz yazma izni olan dosyaları bulmak istiyorsunuz. Aşağıdaki komut, kullanıcı ve grup için yazma iznine sahip olan tüm regular dosyaları kök dizin altında listeler:
كود
1find / -type f -perm /022 -print 2>/dev/nullSonuçları daha okunabilir hale getirmek için çıktıyu etiketlemek de mümkün: kullanıcıya özel izinlerle olanların ayrı, diğerlerine göre olanların ayrı listelenmesi. Bunun için -printf ile özel formatlar kullanabilir veya pipe ile awk/ngrep ile gruplandırabilirsiniz.
Bu konudaki deneyimleriniz nelerdir? Belirli bir senaryoda izin tabanlı arama yaparken hangi filtreleri kullanıyorsunuz, ve çıktı üzerinde hangi ek işlemleri (örneğin raporlama veya otomasyon) kuruyorsunuz?
