ฉันจะตรวจสอบประวัติคำสั่งผู้ใช้ใน Unix ได้อย่างไร?


13

ฉันรู้ว่าคำสั่ง 'history' ให้รายการของคำสั่งที่ฉันพิมพ์ลงในเทอร์มินัล Unix

ฉันจะดูประวัติคำสั่งสำหรับผู้ใช้ทั้งหมดที่เข้าสู่ระบบในปัจจุบันได้อย่างไร?


ไม่เกี่ยวข้องกับการเขียนโปรแกรม ผมขอแนะนำให้คุณถามในsuperuser.com

ไม่มีเครื่องมือมาตรฐานในการรับข้อมูลดังนั้นฉันคิดว่าเป็นโปรแกรม (อย่างน้อยก็ในแง่ของ 'การเขียนสคริปต์') - ที่เกี่ยวข้อง
IanH

คำตอบ:


11

คุณจะได้รับรายชื่อผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน/var/run/utmp(ดูman 5 utmp) ประวัติถูกเก็บไว้ใน ~ / .history หรือสำหรับผู้ใช้ทุบตีใน ~ / .bash_history เชลล์อื่นอาจใช้ไฟล์ประวัติอื่นดังนั้นจึงไม่ใช่เรื่องง่ายที่จะได้รับข้อมูลทั้งหมด

นอกจากนี้หากผู้ใช้เข้าสู่ระบบหลายครั้งไฟล์. bash_history จะไม่น่าเชื่อถือเสมอไป

หากต้องการอ่านutmpไฟล์จะมีคำว่า "frontend" เรียกใช้whoดังนั้นคุณสามารถเขียนเชลล์สคริปต์เพื่อวนผู้ใช้ที่ล็อกอินในปัจจุบันได้


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

2
โปรดทราบว่าชื่อไฟล์ที่ให้ไว้ในคำตอบนี้เป็นเพียงค่าเริ่มต้น ผู้ใช้แต่ละคนสามารถตั้งค่าตำแหน่งของตนเองได้ (ดูคำตอบของ Joy) หากผู้ใช้กำลังใช้เปลือกหอยที่แตกต่างกันพวกเขาสามารถเก็บประวัติของพวกเขาในที่ต่าง ๆ ซึ่งไม่ใช่ตำแหน่งเริ่มต้น (เช่น ~ / mybashhist, ~ / histories / ksh หรือ somesuch) นอกจากนี้โปรดระวังว่าการแอบดูข้อมูลผู้ใช้เช่นนั้นอาจมีผลทางกฎหมาย
DevSolar

3
echo $HISTFILE

จากนั้นดูไฟล์นั้น


1
ใช้งานได้เฉพาะเมื่อคุณได้จัดหาสภาพแวดล้อมของผู้ใช้ก่อนหน้านี้ (เนื่องจากเขาอาจตั้งค่าHISTFILEเป็นอย่างอื่น)
DevSolar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.