Autor del tema #1
Sed ile Dosya İzinlerini Denetleme

Giriş ve neden
Unix benzeri sistemlerde dosya izinlerini kontrol etmek ve hatalı izinleri tespit etmek günlük açıklar arasında sıkça rastlanan bir görevdir. Sed, akıcı bir akış üzerinde metin dönüştürme için güçlü bir araç olduğundan izin raporlarını içeren loglar veya ls -l çıktılarından izleri çıkarıp dönüştürmede kullanışlıdır. Bu yazıda, temel senaryolardan başlayıp pratik örneklerle ilerleyerek, izinlere dair yaygın hataları tespit etmek için sed’in nasıl uygulanacağını adım adım inceliyoruz.

Temel yaklaşım: izinleri içeren satırları filtrelemek
Bir dizinde ls -l çıktısını veya benzer bir metin akışını sed ile analiz etmek mümkün. Örneğin şu durumda, dosya izinlerinde grup yazma izninin olup olmadığını hızlıca görünür kılabiliriz:
CÓDIGO
1ls -l | sed -n 'p'

Burada amaç, izin sütunundaki karakterleri okuyup, mevcut izinleri anlamaktır. Uygulamada aşağıdaki gibi bir kalıp kullanılır:
CÓDIGO
1ls -l | sed -n 's/^[\-rwx]\{10\} \([A-Za-z0-9._-]\+\)/\1/p'

Bu örnek, her satır için dosya adını çıkarmayı amaçlar; izinler temizken dosya adlarını elde eder. Daha ileri düzeyde, grubun yazma izni yoksa belirli bir çıktı üretmek için şu tarz bir filtre uygulanabilir:
CÓDIGO
1ls -l | sed -n '/^.\{9\}rw/p'

Bu, grup yazma izni olanları filtreler. Fakat bu yaklaşım, farklı çıktı biçimlerinde yanlış sonuç verebilir; gerçek dosya izinlerini yorumlamak için stat veya test komutlarıyla beraber çalışmak daha güvenilirdir.

İzinleri dönüştürerek uyarı üretmek
Bir dizinde tüm dosyaların izinlerini standartlaştırmaya yönelik bir rapor üretmek için sed kombinasyonu kurulabilir. Örneğin, sadece sahibi (user) tarafından yazma izninin olup olmadığını kontrol etmek için:
CÓDIGO
1ls -l | sed -n 's/^[\-rwx]\{9\}\([r-]\)w/p'

Daha pratik bir yaklaşım, izinleri bir JSON veya CSV biçimine dönüştürmek için satırları yeniden biçimlendirmektir:
CÓDIGO
1ls -l | sed -n 's/^[\-rwx]\{10\} \([^\n]\+\)$/\"owner\": \"\1\"/p'

Bu biçim, ince ayar için log işleme borularında kullanılabilir.

Uyarılar ve güvenlik notları
  • Sed çıktısı, orijinal izinleri değiştirmez; sadece akış üzerindeki metni dönüştürür. Dosya izinlerini değiştirmek için chmod gibi komutlar kullanılır.
  • Özellikle script içinde sed ile izin komploları oluştururken, dosya adlarının boşluk veya özel karakterler içerdiğini hesaba katmak gerekir; sağlam testler olmadan üretim üzerinde otomasyon uygulanmamalıdır.
  • Doğru sonuçlar için doğrudan stat -c "%a %n" gibi yapılarla izin bilgisini elde etmek her zaman daha güvenlidir.


Sonuç ve uygulanabilirlik
Sed, izin çıktılarında hızlı filtreleme ve dönüştürme işlemlerinde faydalıdır, ancak karmaşık izin mantığını çözümlemek için stat, find -printf gibi araçlarla birlikte kullanılması tavsiye edilir. Basit denetimler için sed ile satırları çıkarılsa da, güvenilirlik açısından birden çok araçla doğrulama yapılmalıdır. Bu yaklaşımları kendi ortamınızda test ederek, özel ihtiyaçlarınıza uygun bir denetim akışı kurabilirsiniz. Bu konudaki deneyimleriniz veya karşılaştığınız özgün senaryoları paylaşabilirsiniz.

Debes haber iniciado sesión para responder.

Usuarios que están viendo este tema (Total: 1, Miembros: 1, Invitados: 0)
Total: 1 (miembros: 1, invitados: 0)
0 citas seleccionadas