Linux'ta dosya denetimi: silme işlemleri için dizin ağacını nasıl izleyebilirim?


9

Sunucuda çalışan bir forum komut dosyası var ve bir şekilde az sayıda ekleri kaybolmaya başlar. Onları neyin ne zaman sildiğini öğrenmek istiyorum. Orada dosya silmelerini izlemek için Linux denetimini (auditctl) dizin ağacını izlemek için nasıl ayarlayabilirim (ekler çok düzeyli dizin ağacında saklanır)?

Bunun için başka bir araç kullanmalıyım?

Yanıtlar:


8

Bu, önceki bir soruya yazdığım bir cevaptır:

Genellikle bir işlem / kullanıcı / dosyanın ne yaptığını bilmek istiyorsanız, 7/24 ona karşı lsof çalıştırmak zorunda kalmadan auditctl kullanırsınız.

Yakın zamanda yapılan bir çekirdek denetim denetimine sahip olduğunuzu varsayarsak, basit bir işlem olmalıdır. (Bu, Red Hat translate'i uygun şekilde çalıştırıyorsanız, Debian-fu'dadır)

# apt-get install auditd

Çalıştığından emin olun (/etc/init.d/auditd status).

auditctl -a entry,always -F arch=b64 -S open -F pid=<process id>

32 bit kemer çalıştırıyorsanız, b64'ü b32 ile değiştirin, açık herhangi bir sistem çağrısı veya 'all' sözcüğü ile değiştirilebilir

Daha fazla bilgi için auditctl man sayfasını okuyun.

Bu yöntemi kullanabilir ve 'bağlantıyı kaldır' sistem çağrısını izlemesini isteyebilirsiniz.

-W parametresi dosyaları / dizinleri izlemek için kullanışlıdır, ancak man sayfasının açıkladığı gibi uyarılar vardır.

-w yol Yoldaki dosya sistemi nesnesi için bir saat ekler. Üst düzey dizine saat ekleyemezsiniz. Bu çekirdek tarafından yasaklanmıştır. Joker karakterler de desteklenmez ve bir uyarı oluşturur. Saatlerin çalışma şekli inode'u dahili olarak takip etmektir. Bu, bir dizine saat takarsanız, dosya olayları gibi görünen şeyleri göreceğiniz anlamına gelir, ancak bu gerçekten sadece meta verilerin güncellenmesidir. Bunu yaparak birkaç olayı kaçırabilirsiniz. Bir dizindeki tüm dosyaları izlemeniz gerekiyorsa, her dosyaya ayrı bir saat yerleştirilmesi önerilir. Sistem denetleme kurallarından farklı olarak, saatler çekirdeğe gönderilen kuralların sayısına göre performansı etkilemez.


Yapamam :( PHP'nin CGI modunda çalışmasını sağlıyorum, her zaman orada yeni bir işlem
var.Ayrıca

Evet, yaptığım düzenlemeye bakın, dosya sistemi dizinlerini izlemek için parametreler var, ancak uyarılar veya dosyalarla.
Aaron Tate

Yaklaşık 1000 klasör ve yaklaşık 50k dosya vardır. Bu da işe yaramayacak ... :(
Vladislav Rastrusny

Genellikle uyarıların farkında olduğunuz sürece, devam edip saati izlemek istediğiniz klasörleri içeren üst düzey dizine yerleştirebilmeniz gerekir.
Aaron Tate

Ben de aynı şeyi (sildi PID / işlem adı bulabilmek için silme için bir klasör izlemek) yapmak gerekir, ama bu (en azından bir 3.x çekirdeğinde) çalışmıyor gibi görünüyor. Silme işlemlerini izlemek için "auditctl -a girişini, her zaman -F arch = b64 -S unlink -w / path / to / dir" komutunu çalıştırırsam, "izleme seçeneği bir syscall ile verilemez" olsun. Kimsenin fikri yok mu?
IBBoard


0

Birkaç fikir. straceUygulamanızın ne yaptığını görmek için kullanabilirsiniz , ancak bir günlük kaydı oluşturabilir ve sistemi yavaşlatabilir.

Başka bir fikir kullanmaktır inotifywait, daha sonra lsof/fuserne kullandığını görmek için dosyada. Mümkün olduğunca doğru bilgilere sahip olmak için bu komut dosyasını yüksek öncelikli olarak (çalışabiliyorsanız) çalıştırmayı deneyebilirsiniz. unlinkOlay teslim edilmeden önce dosya kaybolacağından, muhtemelen aramayı yakalamaz .


Yapamam. Bir süre sonra silinen dosyaları bulduğum için hangi işlemin strace üzerinde çalışacağını bilmiyorum. PHP CGI olarak çalıştığı ve orada farklı kimliklere sahip birçok PHP işlemi olduğu için inotifywait de çalışmaz.
Vladislav Rastrusny

inotify çalışan işlemleri değil dosya sistemini izlemek için kullanılır. Strace -fiçin, çocukları takip etmek için ana ebeveyn sürecini bayrakla izlemelisiniz.
Dan Andreatta

0

Fenix'in denetim önerisi ideal görünse de, AIDE gibi bir dosya sistemi IDS'sini yararlı bulabilirsiniz. Ne yazık ki, izole etmeye çalıştığınız şey için yeterince ince olması muhtemel değildir.

Açıkladığınız gibi sorunların çözümü için genellikle komut dosyaları yazacağım. İstediğiniz şeyi önerilen çözümlerle başaramıyorsanız, kendiniz bir şeyler yazın. Genellikle çok karmaşık değildir.


Öyle görünüyor ki, sadece dosya değişikliklerini bulmak için. Gerçek zamanlı izleme için değil.
Vladislav Rastrusny
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.