Theo dõi, lưu và hoàn nguyên các sửa đổi hệ thống tệp được thực hiện bởi một chương trình trong Linux


9

Tôi muốn có thể, khi một chương trình như trình cài đặt được chạy, hãy theo dõi danh sách các sửa đổi được thực hiện cho hệ thống tệp của tôi để tôi có thể hoàn nguyên chúng sau đó.

EDIT: Điều này liên quan đến một chương trình không đóng gói . Tôi sử dụng apt-get càng xa càng tốt.

Lý tưởng nhất là tôi muốn có thể làm một cái gì đó như:

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

Và sau đó:

(sudo) revert-modifs fsmodifs.patch

Có một cách thuận tiện để làm điều đó?

Câu trả lời:


1

Có thể cách dễ nhất (?) Để thực hiện việc này là khởi động LiveUSB bằng "phân vùng dữ liệu liên tục". . Mỗi tệp mà nó thay đổi hoặc tạo sẽ nằm trên phân vùng lớp phủ "dữ liệu liên tục" rw. Ngay cả các tệp bị xóa cũng sẽ xuất hiện dưới dạng "dotfiles ma thuật".


Điều này có vẻ phức tạp ... Không phải chỉ có thể tạo một phân vùng mới, gắn RO cũ và gắn kết với phân vùng mới trong RW?
Ywen

Có, bạn cũng có thể làm điều đó, từ chế độ một người dùng, có lẽ. Hãy nhìn vào unionfs- về cơ bản, hệ thống tệp RW chấp nhận tất cả các ghi, nhưng hệ thống tệp RO vẫn hiển thị bên dưới nó. Nếu một tập tin bị thay đổi, nó sẽ di chuyển tập tin vào các fs RW; nếu nó bị xóa, thực sự có một dotfile ma thuật của người Viking trên RW fs để mặt nạ mặt nạ đó. Việc thiết lập unionfscó thể hơi khó hiểu, đó là lý do tại sao tôi đề xuất LiveUSB (nó thực hiện phần đó cho bạn và bạn có một hình ảnh hệ thống sạch sạch bắt đầu từ)
BRPocock

2

Có thể hãy xem tripwire? Tripwire thụ động hơn ví dụ hoạt động của bạn, nhưng nó vẫn có thể làm việc cho bạn.

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

Tripwire là một hệ thống phát hiện xâm nhập (IDS), liên tục và tự động, giữ cho các tệp và báo cáo hệ thống quan trọng của bạn được kiểm soát nếu chúng bị phá hủy hoặc sửa đổi bởi một cracker (hoặc do nhầm lẫn). Nó cho phép người quản trị hệ thống biết ngay những gì đã bị xâm phạm và khắc phục nó.


1

Bạn có nghĩa là "CheckInstall"? Nó có hoạt động khi tôi không có tệp tạo tệp không? Trong trường hợp của tôi (Eclim), việc cài đặt được thực hiện thông qua trình cài đặt jar.

Không, ý tôi là Installwatch là một phần của CheckInstall.
qerub

"Installwatch hoạt động với mọi chương trình ELF được liên kết động, ghi đè các cuộc gọi hệ thống gây ra thay đổi hệ thống tệp. Một số cuộc gọi hệ thống như vậy là mở (2) và hủy liên kết (2)." Nên hoạt động tốt với JVM.
qerub

Có nhưng rõ ràng chỉ riêng Installwatch đã không còn được duy trì trong một thời gian dài. Ngoài ra, bạn cần CheckInstall để có thể hoàn nguyên nhật ký InstallWatch. Tôi vẫn nên có một cái nhìn. Cảm ơn.

1

Sử dụng LD_PRELOADđể tải thư viện chặn openchức năng thư viện và thay đổi tên đường dẫn / ghi nhật ký đầu ra / tạo bản sao lưu trước khi mở tệp.

Có một cái nhìn vào mã nguồn cho strace.


Có, nhưng như ai đó đã nói, nếu chương trình được liên kết tĩnh thì sao?
Ywen

0

Nếu trình cài đặt sử dụng một số phương tiện đóng gói (ví dụ: đối với .debcác gói cho Debian / Ubuntu / ..., .rpmcác gói cho RedHat / CentOS / ... vv) thì trình cài đặt gói sẽ biết phải làm gì khi cài đặt và gỡ bỏ. Và tôi tin rằng bạn nên sử dụng các hệ thống đóng gói hiện có , không phát minh ra hệ thống của riêng bạn. (Linux thông thường không có trình cài đặt như Windows).

Nếu bạn thực sự muốn theo dõi các thay đổi tệp được thực hiện bởi một số quy trình, bạn có thể sử dụng stracehoặc ltraceđể bắt các cuộc gọi hệ thống. Bạn cũng có thể inotify và các cơ sở liên quan.

Nhưng tôi không biết về một catch-modifs& revert-modifsnhư bạn muốn.

Tôi khuyên bạn không nên tạo trình cài đặt cho ứng dụng của mình, nhưng nên sử dụng trình quản lý gói, do đó để cung cấp .deb(và / hoặc .rpm) các gói cho ứng dụng của bạn. Họ sẽ xử lý các vấn đề phụ thuộc tốt hơn trình cài đặt của riêng bạn.


Có, tôi sử dụng apt-get mọi lúc. Tôi đã không nói về các ứng dụng của riêng tôi, nhưng về các ứng dụng chưa được đóng gói. Tôi không phải lúc nào cũng có một .deb trong tay.

Các ứng dụng chưa được đóng gói mà bạn đề cập nên ghi lại những tập tin chúng sử dụng và cách chúng được cài đặt.

^^ Nếu họ không thì sao? Tôi biết tôi có thể tự gói chúng, nhưng nó không đơn giản . Cộng với các lệnh như vậy có thể hữu ích để kiểm tra theo cách an toàn hơn một số tập lệnh hệ thống bạn thực hiện.

Tôi đồng ý rằng mong muốn của bạn là thú vị, nhưng tôi không chắc liệu nó có dễ thực hiện không ....

0

Cách dễ dàng để đạt được những gì bạn muốn: cài đặt ứng dụng "không đáng tin cậy" trong một cá thể máy ảo hoàn toàn mới (máy trạm VMWare, Oracle VirtualBox, v.v.).

Khi bạn quyết định bạn không còn muốn ứng dụng nữa, hãy xóa máy ảo.

Các lựa chọn thay thế khác của bạn - bắt các tòa nhà truy cập tập tin - có thể sẽ dễ bị lỗi và không đầy đủ. Đặc biệt cảnh giác với bất kỳ giải pháp nào yêu cầu liên kết động để hoạt động (như Installwatch dường như làm). Một trình cài đặt hoàn toàn có thể thực hiện các cuộc gọi hệ thống trực tiếp hoặc được liên kết tĩnh.


Wow, máy ảo chắc chắn là quá mức cần thiết ... Tôi chỉ cần lưu và sao lưu một số tệp cấu hình một cách thuận tiện.
Ywen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.