วิธีการนับจำนวนครั้งที่เปิดไฟล์ / ไดเรกทอรี?


1

ฉันพยายามค้นหาจำนวนครั้งที่มีการเปิดไฟล์ (ตั้งแต่เริ่มระบบปฏิบัติการ) ฉันกำลังคิดที่จะทำสิ่งนี้ผ่านทางสถิติ แต่ค่าสถานะส่วนใหญ่จะคืนค่าความแตกต่างระหว่างเวลาที่เปิดไว้เท่านั้น


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

คำตอบ:


2

คำตอบนี้อธิบายถึงสิ่งที่ต้องทำ แต่เฉพาะของวิธีขึ้นอยู่กับการกระจายการตั้งค่าและวัตถุประสงค์ของคุณและเครื่องมือที่คุณเลือกที่จะแยกวิเคราะห์ข้อมูล:

สิ่งที่คุณกำลังมองหาคือAuditd daemon ภายใน Linux จาก manpage auditd (8) :

auditdเป็นส่วนประกอบ userspace ไปยัง Linux Auditing System มีหน้าที่เขียนบันทึกการตรวจสอบลงดิสก์ กำลังดูบันทึกจะทำกับausearchหรือaureportสาธารณูปโภค การกำหนดค่ากฎการตรวจสอบเสร็จสิ้นด้วยยูทิลิตี้auditctl ระหว่างการเริ่มต้นกฎใน/etc/audit/audit.rulesจะถูกอ่านโดยauditctlและโหลดลงในเคอร์เนล ในท้ายที่สุดแล้วยังมีโปรแกรม augenrules ที่อ่านกฎที่อยู่ใน/etc/audit/rules.d/และรวบรวมมันเป็น audit.rulesไฟล์ Audit daemon เองมีตัวเลือกการกำหนดค่าบางอย่างที่ผู้ดูแลระบบอาจต้องการกำหนดเอง พบได้ใน auditd.confไฟล์

การตรวจสอบใช้ฟังก์ชั่นที่สร้างขึ้นในเคอร์เนลเพื่อสร้างบันทึกทุกครั้งที่มีการเรียกระบบตามที่คุณต้องการ เมื่อตั้งค่าคุณจะพบบันทึกใน/var/log/auditหรือที่อื่นที่คล้ายกันต่อการกระจายของคุณ

ในการตรวจสอบการเข้าถึงไฟล์คุณจะต้องใช้สิ่งที่คล้ายกับ:

auditctl -w /path/to/interesting/files/ -p rwxa -k myfileaudits

โดยที่-wระบุพา ธ ไปยังไฟล์-pระบุว่าระบบจะตรวจสอบr eads w rites, e x ecutions และการเปลี่ยนแปลง ttribute หรือการอนุญาต ในที่สุด-kตัวเลือกที่ช่วยให้คุณระบุคีย์พลสำหรับการใช้งานเมื่อค้นหากฎนี้กับausearch

โปรดทราบว่าแม้ว่าauditdจะปิดการเรียกใช้ระบบ แต่-p rจะไม่ติดตามฟังก์ชั่นการอ่านแต่จะเปิดเพื่อไม่ให้บันทึกถูกน้ำท่วมทุกครั้งที่อ่าน แต่มีการทำรายการทุกครั้งที่มีการเปิดไฟล์เพื่ออ่าน

เมื่อมีการเปิดใช้งานการตรวจสอบและมีการบันทึกไว้ ausearch สามารถใช้ในการแยกวิเคราะห์บันทึกเหล่านี้สำหรับการเข้าถึงไฟล์ที่ระบุทั้งหมดและเครื่องมือข้อความหรือสถิติมาตรฐานสามารถใช้ในการสร้างความสูง สิ่งเหล่านี้อาจแตกต่างกันไปจากgrepและwc -lนับรายการบันทึกหรือการรวมกันของการเขียนสคริปต์และGNU-Rหรือgnuplotเพื่อสร้างกราฟและรายงาน


อีกทางเลือกหนึ่งคือการใช้SELinux ในขณะที่ SELinux เป็นเครื่องมือสำหรับการควบคุมการเข้าถึงที่ปกติจะบันทึกการปฏิเสธการเข้าถึงเท่านั้น แต่สามารถตั้งค่าเพื่อบันทึกการเข้าถึงทั้งหมดและให้ข้อมูลที่คล้ายกันกับ auditd


แก้ไข:หากต้องการบันทึกการเข้าถึงตั้งแต่ต้น : ตัวอย่างเช่นระหว่างการติดตั้งระบบปฏิบัติการในระหว่างการบู๊ตก่อนเริ่มการตรวจสอบ Auditd หรือก่อนการติดตั้ง auditd จำเป็นต้องใช้มาตรการมากขึ้น initrd.imgอาจต้องสร้างตัวติดตั้งแบบกำหนดเองหรือไฟล์บูตแบบกำหนดเองเพื่อโหลดเครื่องมือดีบั๊กหรือการติดตามระดับเคอร์เนลที่ต้องการ เครื่องมือการติดตามเหล่านี้อาจรวมถึงdtrace , perf , SystemTap , ktapหรือเครื่องมือระดับดีบักเกอร์ที่คล้ายกันเพื่อจับการเข้าถึงระหว่างการบูต การอ้างอิงที่ดีคือhttp://www.brendangregg.com/linuxperf.htmlและตัวอย่างของประเภทของการวิเคราะห์สำหรับการทำงานของระบบนี้มากกว่าการตรวจสอบเป็นbootchart

อย่างไรก็ตามการตั้งค่านี้อยู่นอกเหนือขอบเขตประสบการณ์ของฉัน - หวังว่าข้อมูลอ้างอิงจะมีประโยชน์


+1 - นี่เป็นคำตอบที่ดีเกี่ยวกับการตั้งค่าให้ดำเนินการ คำถามถามเกี่ยวกับการได้รับข้อมูลนี้จากการลงทะเบียน OS ซึ่งหมายถึงย้อนหลัง คุณสามารถขยายคำตอบให้กับที่อยู่ได้หรือไม่?
fixer1234

@ fixer1234 ฉันจะบอกว่าขึ้นอยู่กับการกำหนด 'การลงทะเบียนระบบปฏิบัติการ' หากติดตาม 'สิ่งที่ใช้งานจริง' ให้ทำการติดตั้งตรวจสอบและบันทึกข้อมูลพื้นฐานและสำรองข้อมูลควรทำก่อนที่คุณจะนำระบบปฏิบัติการไปใช้งานจริง ดังนั้นหากคุณไม่ทำการวิเคราะห์กระบวนการติดตั้งด้วยตนเองเพียงแค่กำหนดค่าการตรวจสอบก่อนที่คุณจะติดตั้งสิ่งอื่นใด หากไม่ต้องการและคุณต้องการติดตาม 'สิ่งที่' ระดับ OS เริ่มต้นที่ใดที่หนึ่งระหว่างโลหะเปลือยการอ่าน / เขียนครั้งแรกของตัวติดตั้งหรือ 'การบูตครั้งแรก' จากนั้นก็เป็น initrd แบบกำหนดเองหรือตัวติดตั้งแบบกำหนดเอง อยู่ในลำดับ การเพิ่มการแก้ไขเอฟเฟกต์นี้
ทำให้

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

แก้ไข. มันจะต้องติดตั้ง ดูโครงสร้างของ inode ใน ext4 ... ไม่มีรายการใน struct นั้นสำหรับการนับการเข้าถึงเฉพาะรายการเช่นi_*timeเวลาการโต้ตอบต่างๆ: การเข้าถึงการเปลี่ยนแปลง inode การปรับเปลี่ยนข้อมูลและการลบ
ทำให้

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