Themenersteller
#1
awk ile dosya izinlerini denetleme
Metni incelemek için önce durumun ne olduğunu netleştirelim: bir Linux sisteminde dosya izinleri standart olarak rwxrwxrwx biçiminde olup, kullanıcı, grup ve diğer kullanıcılar için ayrı ayrı okuma, yazma ve çalıştırma hakları içerir. Bazen bu izinlerin yanlış ayarlandığını fark etmek için bir dizi dosya üzerinde rapor üretmek gerekir. Bu noktada awk, ls -l çıktısından yavru veriyi temizleyerek hızlı ve tekrarlanabilir bir denetim sağlar. Aşağıdaki yaklaşım, karşılaşılan iki tip tipik senaryoyu ele alır: dosya izinlerini karşılaştırmalı inceleme ve belirli bir güvenlik politikasına göre filtreleme.
Birinci yaklaşım: ls -l çıktısına dayalı hızlı denetim
ls -l /hedef/dizin | awk '{print $1, $9}' # izin bitişi ve dosya adı
Örneğin herkesin yazma izninin olması güvenlik açığı olarak görülüyorsa:
ls -l /hedef/dizin | awk '$1 ~ /^-..w.|^d..w./ {print "ANTİGÜVENLİK:", $0}'
Bu basit örnek, dosya türü ne olursa olsun (dosya veya dizin) yazma izni olan öğeleri işaretler.
İkinci yaklaşım: tam izin bitmiyapısı üzerinden kural tabanlı filtre
ls -l /hedef/dizin | awk '{perm=$1; name=$9; if (substr(perm,4,1)=="w" || substr(perm,7,1)=="w" || substr(perm,10,1)=="w") print perm, name}'
ls -l /hedef/dizin | awk 'substr($1,2,1)=="r" && substr($1,5,1)=="r" && substr($1,8,1)=="x" {print "GÜVENDE:", $0}'
İpuçları ve güvenlikle ilgili pratikler
Örnek pratik komut seti
ls -ld /hedef/* | awk '$1 ~ /^...w.$/ {print $9, $1}'
ls -l /etc/ | awk '$9 ~ /config|conf/ && $1 ~ /^-rw-------|^-rw-r-----/ {print $9, $1}'
Bu teknik çerçeve, sistem güvenliği politikalarına uygun olarak dosya izinlerini sistematik biçimde denetlemek için esneklik sağlar. Aşağıdaki senaryolarda hangi yaklaşım size daha uygun olur, deneyimlerinizi ve kullandığınız filtreleri paylaşır mısınız?
Metni incelemek için önce durumun ne olduğunu netleştirelim: bir Linux sisteminde dosya izinleri standart olarak rwxrwxrwx biçiminde olup, kullanıcı, grup ve diğer kullanıcılar için ayrı ayrı okuma, yazma ve çalıştırma hakları içerir. Bazen bu izinlerin yanlış ayarlandığını fark etmek için bir dizi dosya üzerinde rapor üretmek gerekir. Bu noktada awk, ls -l çıktısından yavru veriyi temizleyerek hızlı ve tekrarlanabilir bir denetim sağlar. Aşağıdaki yaklaşım, karşılaşılan iki tip tipik senaryoyu ele alır: dosya izinlerini karşılaştırmalı inceleme ve belirli bir güvenlik politikasına göre filtreleme.
Birinci yaklaşım: ls -l çıktısına dayalı hızlı denetim
- Adım 1: İzinleri ve dosya adını ayırın
ls -l /hedef/dizin | awk '{print $1, $9}' # izin bitişi ve dosya adı
- Adım 2: Belirli bir güvenlik politikası ile karşılaştırın
Örneğin herkesin yazma izninin olması güvenlik açığı olarak görülüyorsa:
ls -l /hedef/dizin | awk '$1 ~ /^-..w.|^d..w./ {print "ANTİGÜVENLİK:", $0}'
Bu basit örnek, dosya türü ne olursa olsun (dosya veya dizin) yazma izni olan öğeleri işaretler.
İkinci yaklaşım: tam izin bitmiyapısı üzerinden kural tabanlı filtre
- Adım 1: 9 karakterlik izin sütununu parçalara ayırın
ls -l /hedef/dizin | awk '{perm=$1; name=$9; if (substr(perm,4,1)=="w" || substr(perm,7,1)=="w" || substr(perm,10,1)=="w") print perm, name}'
- Adım 2: Klasörler ve dosyalar için farklı politikalar uygulayın
ls -l /hedef/dizin | awk 'substr($1,2,1)=="r" && substr($1,5,1)=="r" && substr($1,8,1)=="x" {print "GÜVENDE:", $0}'
İpuçları ve güvenlikle ilgili pratikler
- Raporlama için çıktıyı net tutun: izin, kullanıcı, grup ve adını ayrı sütunlarda yazdırın.
- Özellikle kök dizinler ve konfigürasyon dosyaları için 644 (dosyalar) veya 755 (dizinler) dışında izin olup olmadığını kontrol edin.
- Büyük dizinlerde tekrarlayan denetimler için derlenmiş kuralları bir script halinde saklayın ve periyodik olarak çalıştırın.
Örnek pratik komut seti
- Tüm dosyalarda diğer kullanıcı yazma iznini kontrol etme:
ls -ld /hedef/* | awk '$1 ~ /^...w.$/ {print $9, $1}'
- Konfig dosyaları için özel olarak rw------- veya rw-r----- izinlerini zorlayıp raporlama:
ls -l /etc/ | awk '$9 ~ /config|conf/ && $1 ~ /^-rw-------|^-rw-r-----/ {print $9, $1}'
Bu teknik çerçeve, sistem güvenliği politikalarına uygun olarak dosya izinlerini sistematik biçimde denetlemek için esneklik sağlar. Aşağıdaki senaryolarda hangi yaklaşım size daha uygun olur, deneyimlerinizi ve kullandığınız filtreleri paylaşır mısınız?
