Linux altında bir program tarafından yapılan dosya sistemi değişikliklerini izleyin, kaydedin ve geri alın


9

Bir yükleyici gibi bir program çalıştırıldığında, daha sonra bunları geri alabilmek için dosya sistemimde yapılan değişikliklerin listesini takip edebilmek istiyorum.

EDIT: Bu, paketlenmemiş bir programla ilgilidir. Ben mümkün olduğunca apt-get kullanıyorum.

İdeal olarak şöyle bir şey yapabilmek istiyorum:

(sudo) catch-modifs some-installer.bin > fsmodifs.patch

Ve sonra:

(sudo) revert-modifs fsmodifs.patch

Bunu yapmanın uygun bir yolu var mı?

Yanıtlar:


1

Muhtemelen bunu yapmanın en kolay (?) Yolu, "kalıcı veri bölümü" bulunan bir LiveUSB'den önyükleme yapmaktır. (Ya da efekti kendiniz kopyalamak için, bir chroot hapishanesinde: bir ro katmanının üzerine bir rw katmanı monte edin.) Yeni bir önyüklemeden sonra çok ince olması gereken rw dosya sisteminin anlık görüntüsünü alın, sonra yükleyicinizi çalıştırın. Değiştirdiği veya oluşturduğu her dosya rw "kalıcı veri" yer paylaşımı bölümünde olacaktır. Kaldırılan dosyalar bile "sihirli nokta dosyaları" olarak görünür.


Bu karmaşık görünüyor ... Sadece yeni bir bölüm oluşturmak, eski RO'yu monte etmek ve RW'deki yeni bölüme monte etmek mümkün değil mi?
Ywen

Evet, bunu tek kullanıcı modundan da yapabilirsiniz. Bir göz atın unionfstemelde, RW dosya sistemi tüm yazma kabul eder, ancak RO dosya sistemi hala onun altında görünür -. Bir dosya değiştirilirse, RW f'lere “taşınır”; silinirse, RW f'lerinde “maskelemek” için bir “sihirli nokta dosyası” vardır. Kurulum unionfsbiraz dokunaklı olabilir, bu yüzden LiveUSB'yi önerdim (bu kısmı sizin için yapar ve başlamak için “temiz” bir sistem resminiz var)
BRPocock

2

Belki tripwire bir göz atın? Tripwire, aktif örneğinizden daha pasiftir, ancak yine de sizin için işe yarayabilir.

http://www.linuxjournal.com/article/8758

Tripwire, sürekli ve otomatik olarak, kritik sistem dosyalarınızı ve raporlarınızı bir kraker tarafından (veya yanlışlıkla) imha edilip değiştirilmediğini kontrol altında tutan bir saldırı tespit sistemidir (IDS). Sistem yöneticisinin tehlikeye atıldığını hemen bilmesini ve düzeltmesini sağlar.


1

"CheckInstall" mu demek istediniz? Makyaj malzemeleri olmadığında çalışır mı? Benim durumumda (Eclim) kurulum bir kavanoz montajcısıyla yapıldı.

Hayır, CheckInstall'ın bir parçası olan Installwatch'ı kastediyorum.
qerub

"Installwatch, dinamik olarak bağlı her ELF programıyla çalışır ve dosya sisteminde değişikliklere neden olan sistem çağrılarını geçersiz kılar. Bu sistem çağrılarından bazıları açık (2) ve bağlantıyı kaldır (2)." JVM ile iyi çalışmalıdır.
qerub

Evet ama görünüşe göre Installwatch tek başına artık uzun süredir tutulmuyor . Ayrıca InstallWatch günlüklerini geri alabilmek için CheckInstall'a ihtiyacınız var. Hala bir göz atmalıyım. Teşekkürler.

1

Kütüphane işlevini LD_PRELOADengelleyen openve yol adını değiştiren / çıktıyı günlüğe kaydeden / dosyayı açmadan önce yedek yapan bir kütüphane yüklemek için kullanın .

İçin kaynak koduna bir göz atın strace.


Evet, ama birinin söylediği gibi, program statik olarak bağlıysa ne olur?
Ywen

0

Yükleyici bazı paketleme olanakları kullanıyorsa (örn. .debDebian / Ubuntu / ... .rpmpaketleri için, RedHat / CentOS / ... vb. Paketleri için), paket yükleyici kurulum ve kaldırma sırasında ne yapacağını bilmelidir. Ve kendi paketleme sisteminizi değil, mevcut paketleme sistemlerini kullanmanız gerektiğine inanıyorum . (Linux geleneksel olarak Windows gibi yükleyicilere sahip değildir).

Bir işlem tarafından yapılan dosya değişikliklerini gerçekten izlemek istiyorsanız strace, ltracesistem çağrılarını yakalamak veya yakalamak için kullanabilirsiniz. Ayrıca inotify ve ilgili tesisleri de yapabilirsiniz .

Ama bilmiyorum catch-modifs& revert-modifsİstediğiniz gibi.

Uygulamanız için bir yükleyici oluşturmamanızı, ancak paket yöneticisini kullanmanızı öneririm, bu nedenle uygulamanız için .deb(ve / veya .rpm) paketler sağlayın. Bağımlılık sorunlarını kendi yükleyicinizden daha iyi ele alacaklardır.


Evet, her zaman apt-get kullanıyorum. Kendi uygulamalarım hakkında değil, paketlenmemiş uygulamalar hakkında konuşuyordum. Elimde her zaman bir .deb yok.

Bahsettiğiniz ambalajsız uygulamalar hangi dosyaları kullandıklarını ve nasıl yükleneceklerini belgelemelidir.

^^ Ya yapmazlarsa? Onları kendim paketleyebileceğimi biliyordum, ama bu kolay değil . Ayrıca bu tür komutlar, yaptığınız bazı sistem komut dosyalarını daha güvenli bir şekilde sınamak için yararlı olabilir.


0

İstediğinizi elde etmenin kolay yolu: "güvenilmeyen" uygulamayı yepyeni bir sanal makine örneğine (VMWare iş istasyonu, Oracle VirtualBox, vb.) Yükleyin.

Uygulamayı artık istemediğinize karar verdiğinizde sanal makineyi silin.

Diğer alternatifleriniz - dosya erişim sistemlerini yakalamak - muhtemelen hataya eğilimli ve eksik olacaktır. Çalışmak için dinamik bağlantı gerektiren herhangi bir çözümden özellikle dikkatli olun (Installwatch'ın yaptığı gibi). Bir yükleyici, yasal olarak doğrudan sistem çağrıları yapabilir veya statik olarak bağlanabilir.


Vay canına, sanal makine kesinlikle abartılı ... Sadece bazı yapılandırma dosyalarını uygun bir şekilde kaydetmem ve yedeklemem gerekiyor.
Ywen
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.