ติดตามบันทึกและย้อนกลับการแก้ไขระบบไฟล์ที่ทำโดยโปรแกรมภายใต้ Linux


9

ฉันต้องการที่จะสามารถทำได้เมื่อมีการเรียกใช้โปรแกรมเช่นโปรแกรมติดตั้งติดตามรายการการแก้ไขที่ทำกับระบบไฟล์ของฉันเพื่อที่ฉันจะสามารถย้อนกลับได้ในภายหลัง

แก้ไข:ความกังวลนี้ไม่ใช่บรรจุโปรแกรม ฉันใช้ apt-get เท่าที่จะทำได้

โดยหลักการแล้วฉันต้องการทำสิ่งต่อไปนี้:

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

แล้ว:

(sudo) revert-modifs fsmodifs.patch

มีวิธีที่สะดวกในการทำเช่นนั้นหรือไม่?

คำตอบ:


1

อาจเป็นวิธีที่ง่ายที่สุด (?) ในการทำเช่นนี้คือการบูตจาก LiveUSB ด้วย "พาร์ทิชันข้อมูลถาวร" (หรือทำซ้ำเอฟเฟ็กต์ด้วยตัวคุณเองในคุก chroot: ติดเลเยอร์ rw เหนือเลเยอร์ ro) ถ่ายภาพระบบไฟล์ rw ซึ่งควรจะเล็กมากหลังจากบูตใหม่ - จากนั้นเรียกใช้โปรแกรมติดตั้งของคุณ ทุกไฟล์ที่แก้ไขหรือสร้างจะอยู่ในพาร์ทิชันโอเวอร์เลย์ rw "ข้อมูลถาวร" แม้แต่ไฟล์ที่ถูกลบก็จะปรากฏเป็น "magic dotfiles"


สิ่งนี้ดูซับซ้อน ... เป็นไปได้หรือไม่ที่จะสร้างพาร์ติชันใหม่ติดตั้ง RO ตัวเก่าและติดตั้งพาร์ติชันใหม่ใน RW?
เหวินเหวิน

ใช่คุณสามารถทำเช่นนั้นได้จากโหมดผู้ใช้เดี่ยวอาจจะ ลองดูที่unionfs- โดยทั่วไปแล้วระบบไฟล์ RW ยอมรับการเขียนทั้งหมด แต่ระบบไฟล์ RO ยังคงปรากฏอยู่ข้างใต้ หากไฟล์มีการเปลี่ยนแปลงมันจะ“ โอนย้าย” ไปยัง RW fs ถ้ามันถูกลบไปแล้วมันมี“ magic dotfile” บน RW fs เพื่อ“ mask” การตั้งค่าunionfsอาจเป็นเรื่องเล็ก ๆ น้อย ๆ นั่นคือเหตุผลที่ฉันแนะนำ LiveUSB (ซึ่งเป็นส่วนหนึ่งสำหรับคุณและคุณมีอิมเมจระบบ“ สะอาด” ที่จะเริ่มต้น)
BRPocock

2

อาจจะดูที่ tripwire? Tripwire เป็นแบบพาสซีฟมากกว่าตัวอย่างที่ใช้งานอยู่ของคุณ แต่ก็อาจใช้ได้สำหรับคุณ

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

Tripwire เป็นระบบตรวจจับการบุกรุก (IDS) ซึ่งเก็บไฟล์ระบบที่สำคัญและรายงานของคุณภายใต้การควบคุมอย่างต่อเนื่องและโดยอัตโนมัติหากพวกเขาถูกทำลายหรือแก้ไขโดยแครกเกอร์ (หรือโดยไม่ตั้งใจ) ช่วยให้ผู้ดูแลระบบทราบได้ทันทีว่าสิ่งใดถูกบุกรุกและแก้ไขได้


1

คุณหมายถึง "CheckInstall" หรือไม่ มันใช้งานได้เมื่อฉันไม่มีไฟล์ทำเหรอ? ในกรณีของฉัน (Eclim) การติดตั้งนั้นทำผ่านตัวติดตั้ง jar

ไม่ฉันหมายถึง Installwatch ซึ่งเป็นส่วนหนึ่งของ CheckInstall
qerub

"Installwatch ทำงานได้กับทุกโปรแกรม ELF ที่เชื่อมโยงแบบไดนามิกการแทนที่การเรียกระบบที่ทำให้เกิดการเปลี่ยนแปลงระบบไฟล์การเรียกใช้ระบบบางอย่างนั้นเปิด (2) และยกเลิกการเชื่อมโยง (2)" ควรทำงานได้ดีกับ JVM
qerub

ใช่ แต่เห็นได้ชัดว่า Installwatch เพียงอย่างเดียวไม่ได้รับการบำรุงรักษาเป็นเวลานาน นอกจากนี้คุณต้องมี CheckInstall เพื่อที่จะคืนค่าไฟล์บันทึก InstallWatch ฉันควรจะดู ขอบคุณ

1

ใช้LD_PRELOADเพื่อโหลดไลบรารีที่ตัดการopenทำงานของไลบรารีและเปลี่ยนชื่อพา ธ / บันทึกการส่งออก / ทำการสำรองข้อมูลก่อนที่จะเปิดไฟล์

straceมีลักษณะที่รหัสที่มาหา


ใช่ แต่อย่างที่บางคนบอกว่าจะเกิดอะไรขึ้นถ้าโปรแกรมนั้นถูกเชื่อมโยงแบบคงที่?
Ywen

0

หากตัวติดตั้งใช้สิ่งอำนวยความสะดวกบรรจุภัณฑ์บางอย่าง (เช่นสำหรับ.debแพ็คเกจสำหรับ Debian / Ubuntu / ... , .rpmแพคเกจสำหรับ RedHat / CentOS / ... ฯลฯ ) ดังนั้นตัวติดตั้งแพคเกจควรทราบว่าจะต้องทำอย่างไรในการติดตั้งและลบออก และฉันเชื่อว่าคุณควรใช้ระบบบรรจุภัณฑ์ที่มีอยู่ไม่ใช่ประดิษฐ์ของคุณเอง (Linux โดยทั่วไปไม่มีตัวติดตั้งเหมือนที่ใช้กับ Windows)

หากคุณต้องการติดตามการเปลี่ยนแปลงไฟล์ที่เกิดขึ้นในบางกระบวนการคุณสามารถใช้straceหรือltraceเพื่อเรียกการโทรของระบบ นอกจากนี้คุณยังสามารถจำแนกสิ่งอำนวยความสะดวกและที่เกี่ยวข้อง

แต่ฉันไม่รู้catch-modifs& revert-modifsชอบที่คุณต้องการ

ฉันไม่แนะนำให้ใช้ตัวติดตั้งสำหรับแอปพลิเคชันของคุณ แต่ใช้ตัวจัดการแพ็กเกจดังนั้นจึงควรจัดเตรียมแพ็คเกจ.deb(และ / หรือ.rpm) สำหรับแอปพลิเคชันของคุณ พวกเขาจะจัดการกับปัญหาการพึ่งพาดีกว่าตัวติดตั้งของคุณเอง


ใช่ฉันใช้ apt-get ตลอดเวลา ฉันไม่ได้พูดถึงแอปพลิเคชันของฉันเอง แต่เกี่ยวกับแอปพลิเคชันที่ไม่มีการแพ็ก ฉันไม่เคยมี. deb อยู่ในมือ

แอปพลิเคชั่นที่ไม่มีการแพ็กที่คุณพูดถึงควรจัดทำเอกสารว่าใช้งานไฟล์อะไรและควรติดตั้งอย่างไร

^^ ถ้าพวกเขาไม่ทำล่ะ ผมรู้ว่าผมสามารถจัดแพคเกจพวกเขาเอง แต่ก็ไม่ได้ตรงไปตรงมา รวมทั้งคำสั่งดังกล่าวอาจเป็นประโยชน์ในการทดสอบในวิธีที่ปลอดภัยกว่าที่สคริปต์ระบบของคุณทำ

ฉันยอมรับว่าความต้องการของคุณนั้นน่าสนใจ แต่ฉันไม่แน่ใจว่าจะสามารถนำไปใช้ได้อย่างง่ายดายหรือไม่ ....

0

วิธีง่ายๆในการบรรลุสิ่งที่คุณต้องการ: ติดตั้งแอปพลิเคชัน "ไม่น่าเชื่อถือ" ในอินสแตนซ์ของเครื่องเสมือนใหม่ (เวิร์กสเตชัน VMWare, Oracle VirtualBox ฯลฯ )

เมื่อคุณตัดสินใจว่าคุณไม่ต้องการแอปพลิเคชันอีกต่อไปให้ลบเครื่องเสมือน

ทางเลือกอื่น ๆ ของคุณ - การเข้าถึงไฟล์ syscalls - น่าจะเกิดข้อผิดพลาดและไม่สมบูรณ์ ระมัดระวังวิธีการแก้ปัญหาใด ๆ ที่ต้องใช้การเชื่อมโยงแบบไดนามิกเพื่อให้ทำงานได้ โปรแกรมติดตั้งสามารถใช้การโทรโดยตรงของระบบโดยตรงหรือเชื่อมโยงแบบคงที่


ว้าวเวอร์ชวลแมชชีนนั้น overkill แน่นอน ... ฉันแค่ต้องบันทึกและสำรองไฟล์การกำหนดค่าบางอย่างอย่างสะดวก
Ywen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.